“Быстрые клавиши” в командной оболочке Linux

Оригинал: Linux Shell Editing Shortcuts
Автор: Аккана Пек (Akkana Peck)
Дата: 15 января 2009 г.
Перевод: Сергей Супрунов
Дата перевода: 13 марта 2009 г.

Если вы хотите изучить командную строку Linux, вам придётся очень много набирать вручную и постоянно следить за тем, что вы нигде не ошиблись… правильно?

Вовсе нет! Один из секретов, которым владеют опытные пользователи командной строки заключается в том, что не обязательно быть превосходным наборщиком. Они пользуются преимуществами клавиатурных сокращений, которые предоставляет командная оболочка.

Исправление ошибок

Вы, скорее всего, в курсе, что последний введённый символ можно стереть клавишей Backspace. Но, помимо этого, существуют и другие способы исправления ошибок.

Первый приём: Ctrl-U удаляет всё от начала строки до позиции курсора. Нет необходимости держать нажатой Backspace и ждать, пока всё сотрётся; простое нажатие Ctrl-U работает гораздо быстрее. Это очень удобно в тех случаях, когда вы вдруг решили использовать другую команду или просто хотите очистить командную строку и подумать, что делать дальше. Если вы знакомы с английским языком, это сокращение удобно запомнить как “Undo”.

Следующий (и мой самый любимый) приём – комбинация Ctrl-W, удаляющая последнее слово. Подобно Ctrl-U, это намного быстрее, чем держать Backspace. Но, в отличие от Ctrl-U, она позволяет вам сохранить кое-что из того, что вы уже набрали. Испытайте её в работе, и вы удивитесь, насколько она удобна.

Думаю, вы замечали, что можете использовать стрелки “влево” и “вправо”, когда работаете в командной строке. Но вот Home и End ожидаемый переход на начало и конец строки не выполняют – и как же быть? А вот так: используйте Ctrl-A для перехода на начало строки и Ctrl-E для перехода в конец. Ассоциации для запоминания: “А” – первая буква алфавита, “Е” = “End”.

Если вы передвинете курсор влево (стрелкой или с помощью Ctrl-A), то, возможно, вам станет интересна комбинация Ctrl-K – она удаляет всё от позиции курсора до конца строки.

Использование сокращений в других приложениях

Большинство из этих клавиатурных сокращений будут работать во многих приложениях Linux, помимо командной строки, хотя и не каждая программа поддерживает их в полном объёме. Попробуйте использовать их в текстовых редакторах, почтовых клиентах, браузерах.

В некоторых программах (и в зависимости от дистрибутива) они по умолчанию отключены. Если вам они кажутся удобными, вы можете включить их для Firefox и GTK-приложений, установив параметр gtk-key-theme-name в значение “Emacs”. Для этого либо добавьте в файл .gtkrc-2.0 в вашем домашнем каталоге следующую строку:

gtk-key-theme-name = "Emacs"

либо запустите следующую команду:

gconftool-2 --set /desktop/gnome/interface/gtk_key_theme Emacs --type string

Перемещение по истории команд

Командные оболочки упрощают повтор уже вводимых команд или внесение в них небольших изменений перед повторным запуском. Происходит это благодаря тому, что оболочки поддерживают список команд, которые вы недавно набирали – вашу “историю команд” – и предоставляют вам различные способы доступа к нему.

Первый, и самый простой: чтобы увидеть последнюю команду, нажмите стрелку вверх. Вы увидите последнюю команду, которую набирали, и сможете её подредактировать, или же просто очистить (с помощью Ctrl-U) и нажать Enter для её выполнения.

Командная оболочка также предоставляет команду просмотра истории сразу большими порциями:

$ history

Эта команда выведет список всех команд, которые вы набирали в последнее время. (Не забывайте, что $ представляет здесь приглашение вашей оболочки; не вводите этот символ.)

Если список слишком длинный, вы можете ограничить его, например, до последних 15-ти команд (как показано на рисунке):

$ history 15

У каждой из этих команд есть свой номер. Если вы нашли нужную команду, вы можете повторно выполнить её, просто введя восклицательный знак и её номер:

$ !27

Так мы запустим 27-ю команду, gimp &, без необходимости долго давить стрелку вверх.

Также вы можете использовать восклицательный знак, чтобы найти команды, начинающиеся с определённых букв. На рисунке, если вы ещё раз захотите запустить ту длинную команду gconftool..., вам нужно будет набрать лишь следующее:

$ !gcon

И командая оболочка выполнит последнюю команду, начинавшуюся с указанных символов.

Заметьте, что если я просто набрал бы !g, оболочка не выполнила бы gconftool-2; она бы запустила gimp, поскольку я выполнял эту команду позже. Это делает использование таких сокращений немного опасным: вы не видите команду и от вас не запрашивают подтверждение её выполнения. Представьте себе, что вы набрали !r, намереваясь повторить команду rename, о которой вы помните; но вы забыли, что после неё запускали что-нибудь наподобие rm -rf

Если у вас есть сомнения в том, какая из команд будет исполнена при выполнении данной “!-команды”, вы можете сперва её распечатать, добавив после неё :p:

$ !r:p

Так мы распечатаем последнюю команду, которая начиналась с r. Внимательно с ней ознакомившись, вы сможете запустить её на выполнение, нажав стрелку вверх или набрав !!.

(У пользователей tcsh здесь есть небольшое преимущество: они могут использовать клавишу табуляции для работы с историей; например, ввод !r<TAB> позволит увидеть команду. Я не знаю способа сделать это в bash.)

Использование конвейеров совместно с командой history

Если вы уже экспериментировали с конвейерами в командной оболочке, вы уже догадываетесь, как можно комбинировать историю с утилитой grep для поиска определённой команды, которую вы когда-то запускали и не хотите набирать второй раз:

$ history | grep man

В результате вы получите список всех ранее введённых команд, содержащих man. Очень полезно!

Ресурсы

Emacs Keybindings (Firefox): здесь идёт речь о “привязках” клавиш, используемых при редактировании (которые во многом совпадают с используемыми в командной оболочке), а также о том, как их использовать в Gtk-приложениях.

Bash Reference Manual: Using History Interactively: обсуждаются детали механизма истории в bash и его настройка.

Добавить комментарий

Войти с помощью: