Спецсимволы в командной строке

Каждая символ, введенный пользователем, обрабатывается драйвером терминала, а затем интерпретатором командной строки. В разных ОС набор спецсимволов может быть различным. Здесь описаны Linux и bash.

Управление процессами (обрабатываются драйвером терминала):

  • Ctrl D - символ конца файла при вводе с клавиатуры. Сообщает программе, что ввод закончился.
  • Ctrl C - отправка программе сигнала на завершение. Может быть проигнорировано.
  • Ctrl Z - перевод программы в фоновый режим без завершения. Работа с программой может быть продолжена после выполнения команды fg в bash.
  • Ctrl S/Ctrl Q - остановка/продолжение вывода программы на экран. Дублируется клавишей ScrollLock.

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

  • Ctrl A – курсор в начало строки.
  • Ctrl E – курсор в конец строки.
  • Alt F/Alt B - перемещение на слово вперёд/назад.
  • Ctrl P, Ctrl N (Стрелки вверх/вниз) – просмотр истории команд.
  • Ctrl R – поиск в истории команд, вводимые символы интерпретируются как уже выполнявшаяся команда. По мере нахождения соответствий делается подстановка. Повторное нажатие Ctrl R ищет предыдущее вхождение строки в истории команд. При нахождении нужного варианта можно нажать Enter для выполнения или Ctrl E для выхода из режима поиска в режим редактирования.

TAB – автодополнение. Самая функциональная клавиша в bash. При вводе имени программы нажатие TAB приводит к поиску по первым введенным буквах всех программ в каталогах перечисленных в PATH. Если результат однозначный то производится подстановка, если нет, то повторное нажатие TAB приводит к выводу всех возможностей. При вводе параметров делается попытка завершить имя существующего файла по указанному пути (если в строке нет / то в текущем каталоге).

История команд:

  • !! -выполнение предыдущей команды.
  • sudo !! -выполнение предыдущей команды через sudo.

Сокращения имен каталогов:

  • ~ – домашний каталог пользователя
  • ~– - предыдущий посещённый каталог
  • ~+ – полное имя текущего каталога

Сокращение для предыдущего каталога позволяет удобно работать с двумя каталогами. Например

$cd ~/work
$cd /tmp
$cd ~-
$cd ~-
$echo ~+
/tmp