Каждая символ, введенный пользователем, обрабатывается драйвером терминала, а затем интерпретатором командной строки. В разных ОС набор спецсимволов может быть различным. Здесь описаны 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