Программы
Трюки терминала Bash

Трюки терминала Bash

Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.

Изображение Выучи 10 хороших привычек для работы в UNIX от IBM

"Горячие клавиши" Bash с Ctrl

  • Ctrl + n — то же самое, что и стрелка вниз.
  • Ctrl + p — то же самое, что и стрелка вверх.
  • Ctrl + r — поиск по предыдущим командам из истории команд (history). Продолжайте нажимать Ctrl + r, чтобы искать дальше. Ctrl + Shift + r — поиск в другую сторону.
  • Ctrl + s — остановить вывод в терминал.
  • Ctrl + q — восстановить вывод в терминал после Ctrl + s.
  • Ctrl + a — перейти к началу строки (аналог клавиши Home).
  • Ctrl + e — перейти к концу строки (аналог клавиши End).
  • Ctrl + d — если вы ввели что-то, то Ctrl + d удаляет символ под курсором. В противном случае означает конец ввода и завершает текущую сессию Bash.
  • Ctrl + k — удалить весь текст от курсора до конца строки.
  • Ctrl + x + backspace — удалить весь текст от начала строки до курсора.
  • Ctrl + t — переставить символ до курсора на символ под курсором. Нажмите Esc + t для перестановки двух слов до курсора.
  • Ctrl + w — удалить слово до курсора; затем Ctrl + y, чтобы вставить его.
  • Ctrl + u — удалить строку перед курсором; Ctrl + y для вставки его.
  • Ctrl + _ — отменить ввод.
  • Ctrl + l — очищает окно терминала. То же самое, что и clear.
  • Ctrl + x + Ctrl + e — запускает редактор, определённый в переменной $EDITOR, для ввода команды. Полезно для многострочных команд.

Изменить заглавные на строчные и наоборот

  • Esc + u — преобразовать буквы от курсора до конца строки в заглавные буквы.
  • Esc + l — преобразовать буквы от курсора до конца строки в нижний регистр.
  • Esc + c — заменить букву под курсором на заглавную.

Запустить предыдущую команду ещё раз

Запустить команду из истории по номеру (например, 53)

!53
  • !! — запуск последней команды.
  • sudo !! — запустить предыдущую команду с sudo.

Запускает последнюю команду и меняет какой-то параметр. Например, меняем "aaa" на "bbb":

# Последняя команда: echo 'aaa'
$ ^aaa^bbb

$ echo 'bbb'
bbb
Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте `:&`:

^aaa^bbb^:&
# или
!!:gs/aaa/bbb/

Запустить последнюю команду, которая начинается с...

Например, до этого в истории команд была команда cat filename:

!cat
# или
!c

— запускает cat filename ещё раз.

Указание файлов по шаблону в Bash

  • /etc/pa*wd/etc/passwd — символ * означает "несколько любых символов".
  • /b?n/?at/bin/cat — символ ? означает "один любой символ".
  • ls -l [a-z]* — вывести список файлов, содержащих только буквы латинского алфавита. В квадратных скобках [] перечисляются символы, которые будут искаться. А символ * после [] означает "хоть сколько раз".
  • ls {*.sh,*.py} — вывести все .sh и .py файлы. {} используется для группировки нескольких шаблонов по принципу "или".

Полезные переменные окружения Bash

Короткие переменные:

  • $0 — оболочка командной строки или путь до запускаемого файла.
  • $1, $2, $3, ... — аргументы запуска скрипта.
  • $# — число аргументов, переданных в скрипт из терминала.
  • $? — код завершения последней команды.
  • $- — текущие опции, установленные для оболочки.
  • $$ — идентификатор текущего процесса.
  • $! — идентификатор процесса, завершённого последним.

Более длинные, но тоже полезные переменные:

  • $DESKTOP_SESSION — текущий менеджер дисплеев.
  • $EDITOR — редактор текста по умолчанию.
  • $LANG — используемый системой язык.
  • $PATH — список директорий, в которых будут искаться исполняемые файлы.
  • $PWD — текущая директория.
  • $SHELL — текущая оболочка командной строки.
  • $USER — имя текущего пользователя.
  • $HOSTNAME — имя текущего хоста (компьютера).