- 10 приёмов работы в терминале Linux, о которых мало кто знает
- №1. Переход в предыдущую директорию
- №2. Повтор последней команды
- №3. Многократное выполнение команды до её успешного завершения
- №4. Просмотр сведений о ходе передачи файла
- №5. Планирование заданий
- №6. Вывод данных в виде таблицы
- №7. Полезные комбинации клавиш
- №8. Сжатие, разбиение и шифрование файлов
- №9. Стресс-тест батареи ноутбука
- №10. Переименование или перемещение файлов
- Итоги
- Работаем в терминале Linux как профи: подборка полезных команд
- Использование табов для автодополнения
- Возвращение в последнюю рабочую директорию
- Возвращение в домашнюю директорию
- Вывести содержимое каталога
- Запуск нескольких команд за раз
- Запуск нескольких команд за раз при условии, что предыдущая команда была выполнена успешно
- Время убивать
- Пора остановиться
- Простой поиск и использование предыдущих команд
- Выводим консоль из зависания после Ctrl+S
- Переход к началу или концу строки
- Чтение лог-файла в реальном времени
- Чтение сжатых логов без извлечения
- Использование less для чтения файлов
- Использование аргумента предыдущей команды с помощью !$
- Использование предыдущей команды в текущей с помощью !!
- Использование alias для исправления опечаток
- Перезагружаемся
- Вставка скопированного текста в терминал
- Завершить работающий процесс/команду
- Команда для скриптов или команд, которым нужен интерактивный ответ
- Очистить файл, не удаляя его
- Узнать, есть ли файл с определённым текстом
- Получаем справку для каждой команды
- Получаем историю команд
- Быстро запускаем команды из истории
- Выполняем команду в обход истории
- Поднимаем простой HTTP-сервер
- Пишем длинные команды с удобством
- Восстанавливаем терминал
- Информация о файловых системах
- Деревья процессов
- Экран блокировки
- Супершелл
- Быстро открываем файлы в программе по умолчанию
- Статус системных сервисов
- Быстро ищем файлы
- Используем вывод одной команды в качестве аргумента другой
- Календарь
- Планировщик задач
- Получаем свой внешний IP
- Прогноз погоды
- Получаем таблицу ASCII
- Простой калькулятор
- Выполняем команду в другой директории и возвращаемся обратно
- Узнаём, какие библиотеки нужны команде/библиотеке
- Узнаём, что лежит внутри файла
- Многократный запуск команды
- Время на запуск команды
- Системные вызовы команды
- Запоминаем набираемую команду
- Выкачиваем сайты
- Проводим туннели
10 приёмов работы в терминале Linux, о которых мало кто знает
Близкое знакомство с возможностями терминала — один из признаков человека, который хорошо разбирается в Linux. Хотя некоторые вещи запомнить сложно, есть довольно-таки простые, но эффективные приёмы, которые способны повысить качество и скорость работы в терминале. Пожалуй, каждый пользователь Linux рано или поздно обзаводится собственным списком ценных мелочей. Надеемся, некоторых из тех десяти приёмов работы в командной строке Linux, которыми мы хотим с вами поделиться, попадут в ваш личный список полезных команд.
№1. Переход в предыдущую директорию
Все мы используем команду cd .. для перехода в родительскую директорию. А для перехода к предыдущей директории можно использовать команду cd — . Этот приём похож на кнопку «Назад».
Тут мы сначала находились в директории Downloads , затем переместились в директорию Home , и, наконец, снова вернулись в директорию Downloads .
№2. Повтор последней команды
Для того, чтобы повторить предыдущую команду, просто введите !! . В этом примере мы повторим предыдущую команду с правами суперпользователя.
Этот приём весьма полезен именно в ситуациях, подобных рассмотренной, когда команду, введённую ранее, надо выполнить с правами суперпользователя.
№3. Многократное выполнение команды до её успешного завершения
Для того, чтобы выполнять команду до тех пор, пока она не будет успешно завершена, используйте код возврата команды в такой конструкции:
Команда в этом примере будет повторяться до тех пор, пока не будет найден файл run.sh и его содержимое не будет выведено на экран.
№4. Просмотр сведений о ходе передачи файла
Для того, чтобы наблюдать за ходом передачи файла, воспользуйтесь командой pv :
№5. Планирование заданий
Планировать задания в Linux можно с помощью команды at :
Для того, чтобы посмотреть ожидающие выполнения задания, воспользуйтесь командой atq .
№6. Вывод данных в виде таблицы
Вызвав команду ls , или что-нибудь ещё, выводящее данные на экран, можно столкнуться с длинными списками, для просмотра которых требуется продолжительный скроллинг. То, что выводится на экран, легко можно организовать в виде таблицы с помощью команды column -t . Например:
Вот как выглядит то, что у нас получилось.
Вывод команды, организованный в виде таблицы
№7. Полезные комбинации клавиш
Команда clear очищает экран терминала. Комбинация клавиш Ctrl + L позволяет добиться того же самого быстрее.
Комбинация клавиш Alt + . позволяет перемещаться по ранее введённым командам. Комбинация клавиш Ctrl + U убирает из строки всё то, что уже в неё введено. Например, можете это попробовать для очистки введённого в командной строке пароля.
Для инкрементального обратного поиска по истории команд используйте комбинацию клавиш Ctrl + R .
№8. Сжатие, разбиение и шифрование файлов
Передача больших файлов между компьютерами — задача непростая. Упростить её можно, сжав файлы с помощью команды zip , или, если файлы ну просто очень большие, создав многотомный архив. Если при этом файлы нужно ещё и зашифровать — воспользуйтесь ключом -e .
№9. Стресс-тест батареи ноутбука
Хотите узнать, как долго батарея вашего ноутбука продержится при полной нагрузке на процессор? Попробуйте следующую команду:
№10. Переименование или перемещение файлов
Если вам нужно быстро переименовать или переместить множество файлов с суффиксами — попробуйте команду следующего вида:
Вот как её можно расшифровать:
Ниже приведён пример переименования файлов с определённым расширением в пакетном режиме:
Итоги
Мы рассказали о нескольких приёмах взаимодействия с командной строкой Linux. Надеемся, вы нашли здесь то, что поможет вам упростить и ускорить повседневную работу.
Уважаемые читатели! Что вы добавили бы к нашему списку неочевидных полезностей командной строки Linux?
Источник
Работаем в терминале Linux как профи: подборка полезных команд
Видели про-юзеров Linux, которые эффективно работают в терминале? Хотите так же? Не вопрос: в этой статье мы собрали некоторые из полезных команд, которые помогут вам сэкономить время и повысить продуктивность.
Использование табов для автодополнения
Когда вы начинаете что-то вводить в терминале, вы можете нажать Tab и вам будут предложены возможные варианты продолжения, которые начинаются с введённой вами строки.
Например, если вы хотите скопировать файл с именем file1.txt , вы можете ввести только cp f , нажать Tab и увидеть возможные варианты.
Также Tab можно использовать для автодополнения команд.
Возвращение в последнюю рабочую директорию
Представьте ситуацию, когда вы спустились глубоко по иерархии папок, затем перешли в папку, которая находится в совершенно другом месте, а потом поняли, что вам нужно вернуться обратно. В таком случае вам всего лишь нужно ввести следующую команду:
Она вернёт вас в последнюю рабочую директорию и вам не придётся вручную вводить длинный путь.
Примечание Последняя рабочая директория хранится в переменной окружения OLDPWD ; вы можете использовать эту переменную для своих целей (попробуйте echo $OLDPWD ) или даже подложить команде cd — другой путь ( OLDPWD=/usr/bin cd — ).
Возвращение в домашнюю директорию
Это слишком очевидно. Чтобы вернуться в домашнюю директорию из любого места, вы можете использовать следующую команду:
А вообще, можно ограничиться командой cd и получить тот же результат. В большинстве современных дистрибутивов Linux эта команда должна сработать.
Вывести содержимое каталога
Вы, наверное, догадываетесь, какая команда нужна для отображения содержимого каталога. Всем известно, что для этого можно использовать ls -l .
Однако не все знают, что можно обойтись командой ll .
FBS , Санкт-Петербург , По итогам собеседования
Конечно, всё зависит от дистрибутива, но в большинстве случаев вы сможете воспользоваться этой командой.
Примечание На самом деле, ll является не отдельной командой, а псевдонимом для ls -l .
Запуск нескольких команд за раз
Допустим, вам нужно запустить несколько команд одну за другой. Что вы будете делать? Подождёте завершения первой команды, а затем запустите следующую?
Вместо этого вы можете использовать разделитель ; . Таким образом можно запустить несколько команд на одной строке. Вам не нужно ждать, пока какая-то из команд завершит свою работу, чтобы запустить следующую.
command_1; command_2; command_3
Примечание При запуске команд таким образом, они выполняются не параллельно, а последовательно. Если вам нужен именно первый вариант, то используйте конструкцию (command_1 &); (command_2 &) .
Запуск нескольких команд за раз при условии, что предыдущая команда была выполнена успешно
Как запускать несколько команд за раз вы уже знаете. А как убедиться, что команды не завершились с ошибкой?
Допустим, вы хотите собрать код и запустить его в случае успешной сборки.
В этом случае вы можете использовать разделитель && , который запускает следующую команду только при условии, что предыдущая успешно завершилась.
Как пример использования && можно привести команду sudo apt update && sudo apt upgrade для обновления системы через терминал на системах, основанных на Debian.
Время убивать
Есть несколько способов «убить» программу. Команда killall сделает это по имени, а kill требуется номер процесса. Например, killall chrome убьёт все процессы chrome. Также можно послать любому процессу сигнал прерывания (как Ctrl+C) с помощью kill -INT .
Пора остановиться
Чтобы поставить работающую команду на паузу нажмите комбинацию Ctrl+Z, а чтобы продолжить — % .
Простой поиск и использование предыдущих команд
Представим ситуацию, когда вы воспользовались какой-то командой пару часов назад и снова хотите её использовать, но не можете вспомнить название.
Здесь поможет обратный поиск. С его помощью можно по заданному условию найти команду в истории.
Просто нажмите комбинацию Ctrl+R и введите часть команды. Затем вам будут показаны команды из истории, которые удовлетворяют заданному условию.
По умолчанию показывается только один результат. Чтобы увидеть больше результатов, нужно повторно нажать Ctrl+R. Чтобы выйти из поиска, нажмите Ctrl+C.
Учтите, что в некоторых оболочках Bash можно использовать Page Up и Page Down с условием поиска для автодополнения команды.
Выводим консоль из зависания после Ctrl+S
Многие привыкли использовать комбинацию Ctrl+S для сохранения. Однако после её использования в терминале, он часто зависает. Чтобы вернуть его в нормальное состояние, нажмите комбинацию Ctrl+Q.
Переход к началу или концу строки
Допустим, вы вводите длинную команду и вдруг понимаете, что вам нужно что-то изменить в её начале. Чтобы попасть в начало или конец строки вы можете несколько раз нажать клавишу стрелки влево/вправо или Home/End. А можете нажать Ctrl+A или Ctrl+E.
Чтение лог-файла в реальном времени
В ситуациях, когда вам нужно анализировать логи при запущенном приложении, можно использовать команду tail с флагом -f .
Также можно использовать регулярные выражения в grep , чтобы выводить только нужные строки:
Кроме того, вы можете использовать флаг -F , чтобы tail продолжал работу даже в случае удаления лог-файла. Таким образом, когда лог-файл снова будет создан, tail продолжит логирование.
Если вы хотите просматривать системный лог в реальном времени, воспользуйтесь аналогичной опцией -f команды journalctl :
Чтение сжатых логов без извлечения
Серверные логи обычно сжимаются gzip’ом для сохранения дискового пространства. Это становится проблемой для разработчика или сисадмина, который анализирует эти логи. Возможно, вам придётся скопировать архив в другое место, а затем извлечь его, так как не всегда есть права на извлечение логов.
К счастью, в таких ситуациях всегда спасут z-команды. Они являются альтернативами обычных команд, которые используются для работы с логами вроде less , cat , grep .
Поэтому вы можете воспользоваться zless , zcat , zgrep и т.д., даже не извлекая логи.
Использование less для чтения файлов
Команда cat не всегда лучший выбор для отображения содержимого файла, особенно если он большой — cat выведет сразу весь файл.
Вы можете использовать Vi, Vim или другой терминальный текстовый редактор, но если вам просто нужно прочитать файл, то команда less подойдёт гораздо лучше.
В less можно искать нужную подстроку, листать по страницам, отображать номера строк и не только. А ещё less может читать не только текстовые документы, но ещё и архивы и другие типы файлов.
Использование аргумента предыдущей команды с помощью !$
Использование аргумента предыдущей команды может пригодиться во многих ситуациях. Например, вы создали директорию и вам нужно сразу в неё перейти.
Ещё лучше использовать alt+. . Множественное нажатие точки позволяет выбрать аргумент одной из нескольких предыдущих команд.
Использование предыдущей команды в текущей с помощью !!
С помощью !! можно вызвать даже всю предыдущую команду. Это особенно полезно в тех случаях, когда оказывается, что для запуска команды нужны рут-привилегии.
Быстрое sudo !! позволяет сэкономить немного времени.
Использование alias для исправления опечаток
Вероятно, вы уже знаете, зачем нужна команда alias . Её можно приспособить для исправления опечаток.
Представим, что вместо grep вы часто пишете gerp . Если вы установите псевдоним следующим образом, то вам не придётся больше перепечатывать команду:
К слову, для исправления опечаток не обязательно использовать псевдонимы — утилита The Fuck сама исправит предыдущую команду.
Перезагружаемся
Чтобы выключить компьютер из терминала, введите poweroff , а для перезагрузки — reboot .
Вставка скопированного текста в терминал
Здесь не всё однозначно, так как между дистрибутивами Linux и терминалами есть определённая разница. Но в общем случае вставить текст можно одним из следующих способов:
- Скопируйте текст и кликните правую кнопку мыши для вставки (работает в Putty и других Windows-клиентах SSH);
- Скопируйте текст и нажмите среднюю кнопку мыши (колёсико) для вставки;
- Ctrl+Shift+C для копирования и Ctrl+Shift+V для вставки;
- В некоторых эмуляторах терминала работает привычная комбинация Ctrl+V.
Завершить работающий процесс/команду
Возможно, это слишком очевидно. Если у вас запущена команда, работу которой вы хотите завершить, просто нажмите Ctrl+C и команде будет отправлен сигнал прерывания (SIGINT). А если вы хотите быстро покинуть терминал, нажмите комбинацию Ctrl+D, которая для баша и других интерактивных программ означает окончание ввода.
Команда для скриптов или команд, которым нужен интерактивный ответ
Команда yes может пригодиться, если какой-то скрипт/команда требует взаимодействия с пользователем, которое заключается только в нажатии Y каждый раз.
Очистить файл, не удаляя его
Если вам нужно только очистить содержимое файла, а не удалить его, вы можете сделать это следующим образом:
Узнать, есть ли файл с определённым текстом
В терминале Linux можно искать разными способами. Если вам нужно узнать, есть ли файл(ы) с определённым текстом, можете воспользоваться этой командой:
Получаем справку для каждой команды
Почти все команды/инструменты командной строки содержат справку с указаниями по работе. Чтобы получить справку, воспользуйтесь этой командой:
Кроме того, порой можно получить более подробную справку с помощью команды man .
Получаем историю команд
Если вы хотите взглянуть на все команды, которые вы когда-либо запускали, введите history . Если вам нужен не полный список, а только несколько последних, воспользуйтесь командой fc -l .
Быстро запускаем команды из истории
При получении команд одним из вышеуказанных способов рядом с каждой командой находится её номер в истории. Чтобы быстро запустить команду из этого списка просто введите ! .
Выполняем команду в обход истории
Если вы хотите выполнить команду так, чтобы она не сохранилась в истории, просто введите пробел перед командой.
Поднимаем простой HTTP-сервер
Чтобы поднять сервер и сделать доступной текущую директорию по адресу http://localhost:8000/ введите python3 -m http.server .
Пишем длинные команды с удобством
Если зажать Ctrl, а затем нажать по очереди X и E, то откроется текстовый редактор, в котором можно будет спокойно записать длинную команду, а после выхода из него — выполнить её.
Восстанавливаем терминал
Если вы вывели в терминал сырые бинарные данные или ещё что-то, что выводить не стоило, то убрать увиденную абракадабру позволит команда reset .
Информация о файловых системах
Чтобы получить информацию о текущих смонтированных файловых системах с удобным оформлением по столбцам, введите команду mount | column -t .
Также вы можете воспользоваться командой findmnt , которая отображает информацию в виде красивого дерева и сама форматирует столбцы, а также может найти нужную файловую систему:
Деревья процессов
Есть инструмент pstree , который умеет рисовать красивые деревья процессов. Например:
Экран блокировки
Чтобы заблокировать экран, используйте команду $ loginctl lock-session .
Для разблокировки экрана введите команду $ loginctl unlock-session . Конечно, вряд ли вы сможете использовать терминал при заблокированном экране, однако вы можете пойти обходными путями. Например, можно создать задачу для разблокировки через какое-то время.
Супершелл
Чтобы запустить шелл от имени суперпользователя, можно воспользоваться командой sudo -s . Во многих источниках можно встретить вариант sudo su , который тоже работает, но медленнее, так как запускает лишний процесс.
Быстро открываем файлы в программе по умолчанию
Команда xdg-open позволяет открыть любой файл в соответствующей программе. Например, xdg-open file.txt откроет файл в текстовом редакторе по умолчанию.
Статус системных сервисов
Чтобы посмотреть статус системных сервисов, введите команду systemctl status или systemctl status , если вас интересует конкретный сервис.
Быстро ищем файлы
Если вам нужно найти файл, но вы не знаете, где конкретно он находится, можно воспользоваться командой find . Например:
Используем вывод одной команды в качестве аргумента другой
Чтобы использовать вывод одной команды в качестве аргумента другой, используйте конструкцию команда-2 $(команда-1) . Например:
Календарь
Команда cal может нарисовать календарь на текущий месяц (и даже выделить текущее число) или на другой промежуток:
Планировщик задач
Чтобы выполнить какую-то команду в нужное вам время, воспользуйтесь at :
echo команда-для-выполнения | at время_выполнения
Учтите, что эта команда может отсутствовать на вашей системе, и вам придётся установить её самостоятельно.
Получаем свой внешний IP
Чтобы получить свой внешний IP-адрес введите curl ifconfig.me или curl ipinfo.io/ip . Возможно, сначала вам придётся установить curl .
Прогноз погоды
Введите команду curl wttr.in/ и получите красивую таблицу с прогнозом погоды:
Получаем таблицу ASCII
Чтобы получить быстрый доступ к таблице ASCII просто введите man ascii .
Простой калькулятор
Небольшие выражения можно вычислять прямо в терминале. Это можно сделать либо с помощью конструкции echo | bc , либо echo $(( )) . Например:
Выполняем команду в другой директории и возвращаемся обратно
Если вы хотите выполнить команду в другой директории, но при это не хотите покидать текущую, то просто оберните команду скобками. Например, (cd /tmp && ls) . Здесь скобки запускают подшелл (subshell), внутри которого мы и выполняем cd .
Узнаём, какие библиотеки нужны команде/библиотеке
Чтобы узнать, какие динамические библиотеки нужны программе или библиотеке и как они будут разрешены при запуске, используйте команду ldd :
Узнаём, что лежит внутри файла
Чтобы определить тип содержимого, находящегося в файле, используйте команду file :
Многократный запуск команды
Чтобы запускать команду каждые несколько секунд (по умолчанию две) и смотреть на её вывод, воспользуйтесь командой watch .
Время на запуск команды
Чтобы узнать, сколько времени уходит на запуск команды, используйте time .
Системные вызовы команды
Чтобы узнать, какие системные вызовы совершает программа, введите strace .
Запоминаем набираемую команду
Если вы набираете какую-то команду и вам по какой-то причине нужно прерваться и, например, ввести другую команду, вы можете «запомнить» то, что вы ввели комбинацией Ctrl+U, а затем вставить комбинацией Ctrl+Y.
Выкачиваем сайты
Чтобы выкачать сайт используйте команду wget —random-wait -r -p -e robots=off -U mozilla .
Проводим туннели
С помощью команды ssh -N -L 2001:localhost:80 somemachine можно создать туннель от 80 порта на удалённой машине до 2001 на локальной.
А какие полезные команды знаете вы? Делитесь в комментариях.
Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.
Перейти к регистрации
Источник