Работа в командной строке Linux

Материал из sysadm
Перейти к навигации Перейти к поиску
Tab  дописывает команды и некоторые параметры, если вариантов больше одного то дописывает только до расхождения
Tab+Tab выводит все совпадения

history  # выводит пронумерованный список истории команд
!38      # выполнит команду на 38 строке истории команд
!38:p    # команда будет выведена, но не будет исполнена, при этом сохранится в истории как предыдущая команда
!-5      # выполнит 5-ю с конца команду
!строка  # выполнит последнюю команду в которой будет найдена строка
!строка:p # не выполнять, только вывести
!*        # будет заменено на аргументы предыдущей команды
!*:p      # не выполнять, только вывести
!:3       # 3-й аргумент предыдущей команды
!:3-5     # с 3 по 5 аргументы предыдущей команды
!$        # последний аргумент предыдущей команды
!^        # 1-ый аргумент предыдущей команды
!:2-$     # все аргументы с 2 и до конца
!!        # заменяется на последнюю команду

history | grep строка_поиска     # находит в истории команд все команды содержащие строку поиска

history -c         # очистить историю
history -d 1901    # удалить из истории команду с номером 1901
set +o history     # выключить запись истории в текущей сессии
set -o history     # включить запись истории в текущей сессии

Горячие клавиши

Ctrl+r интерактивный поиск команд в истории
Alt+r возвращает в исходное состояние, в котором команда была извлечена из истории

Ctrl+o выполнить то что набрано и набрать снова, полезно когда нужно выполнять одну и ту же команду несколько раз
Ctrl+p перемещение вверх по истории команд (то же что стрелка вверх)

Ctrl+a курсор в начало строки (Home)
Ctrl+e курсор в конец строки (End)

Ctrl+d удалить символ справа (del)
Ctrl+f переместить курсор на одну позицию вперед (вправо) (стрелка вправо)
Ctrl+b переместить курсор на одну позицию назад (влево) (стрелка влево)

Alt+f переместить курсор на слово вперед (вправо)
Alt+b переместить курсор на слово назад (влево)

Ctrl+xx запомнить позицию курсора и перейти к предыдущей запомненной позиции курсора, если нет запомненной позиции, то в начало

Ctrl+u вырезать все что слева и сохранить в буфер
Ctrl+y вставить из буфера

Ctrl+w вырезать слева одно слова и сохранить в буфер
Ctrl+k вырезать все что справа и сохранить в буфер

Ctrl+t меняет местами соседние символы
Alt+t меняет местами соседние слова

Ctrl+l очистить экран (clear)

Alt+. перемещается вверх по истории команд выводя их последний аргумент

Переходы по каталогам

cd .. перейти в вышестоящий каталог
cd ~ перейти в домашний каталог
cd - перейти в предыдущий каталог
# комментарий, можно ставить перед командой, чтобы она не выполнилась, а потом вернуться к ней по истории и убрать #
^word1^word2  заменить в предыдущей команде первое найденное слово word1 на word2 и выполнить полученную команду

myutil &   выполнять утилиту myutil в фоновом режиме, при этом зависимость от родительского процесса остается, если закрыть терминал то фоновый процесс тоже закроется
nohup myutil &   утилита nohup позволяет запустить другой процесс так чтобы он не закрывался (не работает, нужно разобраться)
команда1; команда2     команда2 выполнится за командой1 не зависимо от результата ее выполнения 
команда1 && команда2   (логическое И) если команда1 завершилась с ошибкой, то команда2 не будет выполняться
команда1 || команда2   (логическое ИЛИ) команда2 будет выполнена, если команда1 завершилась с ошибкой
cat file1  выводит содержимое file1 на стандартный вывод
nl file1   выводит содержимое file1 на стандартный вывод, добавляя номера строк
less file1 интерактивный просмотр содержимого file1
more file1 интерактивный просмотр содержимого file1, но выходит как только вы дойдете до конца файла
head  выводит первые 10 строк файла (можно указать нужное количество строк)
tail выводит последние 10 строк файла (можно указать нужное количество строк)
clear; clear   # очищает окно терминала полностью, включая буфер
reset  перегружает терминал, полезно когда команда поломала вывод терминала
touch file1.txt  создает пустой файл file1.txt
find /path/to/dir -name "*.log"      # найти все файлы по указанной маске в заданном каталоге и его подкаталогах
grep -ri строка_поиска /path/to/dir  # ищет файлы по содержимому 

man команда    # справка по команде
apropos строка_поиска   # выводит список всех статей man в которых содержится строка поиска