Горячие клавиши в шелле
Краткое вступление
В этом посте будет рассказано о некоторых сочетания клавиш, которые могут упросить жизнь администраторам, работающим в консоли. Все они работают в bash'e. Сочетания клавиш я дополнительно проверял на циске (Cisco IOS Software, s72033_rp Software (s72033_rp-ADVIPSERVICESK9_WAN-M), Version 12.2(33)SXH4), csh и zsh. Рассмотренное в других записях повторять особо не буду. Сочетания сгруппированы по использованной функциональной клавише.
Особенно полезен этот текст будет людям, которые любят использовать клавиши Home, End и Delete (которые в цисковой консоли «не работают»).
Сочетания
Сначала немного сочетаний клавиш с ctrl.
- Ctrl + a — переход в начало строки (cisco, csh, zsh)
- Ctrl + b — переход на 1 символ назад (cisco, csh, zsh)
- Ctrl + c — посылает программе SIGINT. Обычно, прерывает текущее задание (csh, zsh)
- Ctrl + d — удаляет символ под курсором (аналог delete) (cisco, csh, zsh)
- Ctrl + e — переход к концу строки (cisco, csh, zsh)
- Ctrl + f — переход на 1 символ вперёд (cisco, csh, zsh)
- Ctrl + k — удаляет всё, до конца строки (EOL, а не на экране!) (cisco, csh, zsh)
- Ctrl + l — очищает экран. Аналог команды clear. (csh, zsh)
- Ctrl + r — поиск по истории. Повторение поиска (листание результатов поиска). То есть инкрементальный поиск. (zsh)
- Ctrl + j — прекращает поиск и позволяет отредактировать найденную команду. Если поиск не производился, то аналогично нажатию return. (в zsh выполняет команду)
- Ctrl + t — меняет символ под курсором на предыдущий. Или, если хотите, тянет предыдущий символ к концу строки. (cisco, csh, zsh)
- Ctrl + u — удаляет все символы слева от курсора до начала строки. (cisco, в csh, zsh удаляет всю строку)
- Ctrl + w — удаляет символы слева от курсора до начала слова. (cisco, csh, zsh)
- Ctrl + xx — переходит от текущей позиции курса в начало строки и обратно. На циске работает аналогично ctrl + u. (csh)
- Ctrl + x @ — показывает возможные дополнения имени хоста (имена берутся из /etc/hosts)
- Ctrl + z — suspend'ит текущую задачу (csh, zsh)
- Ctrl + x; Ctrl + e — открывает $EDITOR для изменения введённой строки. После сохранения изменений, команда отправляется на исполнение. Если переменная не задана, то открывается системный текстовый редактор (для линукса это, зачастую, nano)
Теперь немного о сочетаниях с альтом.
- Alt + < — переход к первой команде в истории команд (zsh)
- Alt + > — переход к последней команде в истории
- Alt +? — показывает список возможных дополнений команды(аналогично tab-tab) (в csh, zsh аналог which string)
- Alt + * — вставляет все возможные дополнений команды в строку команд
- Alt + / — пытается дополнить имя файла (аналогично табуляции)
- Alt +. — вставляет последний аргумент предыдущей команды (аналог !$, только не надо делать :p, чтобы проверить )
- Alt + b — сдвигает курсор влево на 1 слово (cisco, csh, zsh)
- Alt + c — делает букву под курсором большой, а остальные, до конца слова, маленькими. (cisco, csh, zsh)
- Alt + d — удаляет символы с текущей позиции курсора и до конца слова. (cisco, csh, zsh)
- Alt + f — передвигает курсор на одно слово вперёд (cisco, csh, zsh)
- Alt + l — делает все буквы с текущей позиции курсора и до конца слова маленькими (cisco, csh, zsh)
- Alt + t — меняет местами слова под курсором и предыдущее (zsh)
- Alt + u — переводит буквы с текущей позиции курсора и до конца слова в верхний регистр (cisco, csh, zsh)
- Alt + back-space — удаляет символы с текущей позиции курсора до начала слова (cisco, csh, zsh)
В следующем абзаце я, для краткости, буду писать «2Т» чтобы обозначить двойное нажатие табуляции.
- 2T — дополнение команды. Если нажать при пустой строке — выведет список всех доступных команд
- (string)2T — выведет список возможных дополнений
- (dir)2T — покажет подпапки папки dir
- *2T — покажет подпапки исключая скрытые (имена которых начинаются с точки)
- ~2T — выведет всех пользователей из /etc/passwd. Дополнив имя пользователя можно перейти в его домашний каталог. Например ?~oxpa/
- $2T — выводит список дополнений для системных переменных
- @2T — дополняет имена хостов содержащимися в /etc/hosts
- =2T — листинг текущей директории, аналогичный ls.
Небольшое заключение
Так как в своей работе я чаще всего использую bash и cisco'вский шелл, то просто подписал сочетания, которые, я знаю, работают и для других шеллов. Возможности csh, zsh наверняка не меньше башевских, просто я меньше с ними работал.
Вышеприведённый список будет неправильно показывать без пояснения: все эти горячие клавиши в bash'e можно переназначать. Есть действия, которые по умолчанию не назначены на горячие клавиши. Подобные «трюки» описаны в руководстве bash'a, которое я рекомендую прочитать всем заинтересовавшимся.
Created/Updated: 25.05.2018