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

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

Краткое вступление

В этом посте будет рассказано о некоторых сочетания клавиш, которые могут упросить жизнь администраторам, работающим в консоли. Все они работают в 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, которое я рекомендую прочитать всем заинтересовавшимся.