среда, 13 декабря 2006 г.

Bash. Комбинации клавиш

Bash - это стандартная командная оболочка для большинства *nix-подобных систем. В частности, в Linux она стоит по умолчанию. Есть и другие. Но, работая в Linux, я их пока не встречал. Таким образом, открыв консоль, вы запускаете Bash. И дальше вся ваша работа происходит в Bash.

Здесь я хочу привести список стандартных комбинаций клавиш, которые помогут при работе в Bash.

Используя клавишу CTRL:

Ctrl + a - Переместиться в начало строки
Ctrl + b - На однин символ назад
Ctrl + c - Прервать выполнение программы
Ctrl + d - Удалить символ под курсором
Ctrl + e - Переместиться в конец строки
Ctrl + f - На один сивол вперед
Ctrl + k - Удалить все до конца строки
Ctrl + Y - Вставить все что было удалено с помощью Ctrl + k
Ctrl + l - Очистить экран
Ctrl + r - Поиск по истории команд, в обратном направлении
Ctrl + u - Удалить все от курсора и назад до начала строки
Ctrl + z - Приостановить/ Остановить выполнение команды
Ctr + t - Поменять местами два символа



Используя клавишу ALT:

Alt + < - Переместиться к первой строки в истории команд (history)
Alt + > - Переместиться к последней строки в истории команд (history)
Alt + ? - Само предскажет нужный файл или директории (почти как Tab)
Alt + * - Показать все возможные окончания
Alt + / - Тоже что и Tab (закончить набор команды)
Alt + . - Вставить аргумент предыдущей команды
Alt + b - Двигаться назад по одному слову
Alt + c - Изменить букву со строчной в заглавную
Alt + d - Удалить все что стоит впереди курсора, до следующего слова
Alt + f - Двигаться вперед на одно слово
Alt + l - Сделать букву строчной
Alt + n - Поиск по истории вперед
Alt + p - Поиск по истории назад
Alt + r - Отозвать команду
Alt + t - Поменять слова местами
Alt + u - Сделать все буквы слова заглавными
Alt + back-space - Удалить все от курсора назад

Используя клавишу TAB:

"2T" означает двойное нажатие TAB

$ 2T - Показать все возможные команды
$ (string)2T - Показать все возможные команды, которые начинаются со string
$ /2T - Показать структуру папки /, включая скрытые папки и файлы (как ls -a)
$ *2T - Показать все поддиректории (без скрытых)
$ ~2T - Показать всех пользователей с "/etc/passwd"
$ $2T - Показать все системные переменные
$ @2T - Содержимое "/etc/hosts"

$ !# Повторить команду с истории, где # номер строки

Перевод статьи с http://linuxhelp.blogspot.com.

12 коммент.:

Roman Lagunov комментирует...

Вообще-то, это не комбинации bash. Это комбинации GNU Readline Library.

Точнее, дефолтные комбинации этой библиотеки.

С помощью файла ~/.inputrc можно тонко настроить библиотеку.

Да, вообще-то не клавиша Alt, а клавиша Meta, просто на современных клавиатурах в качестве Meta используется Alt.

Опять же, это настраивается с помощью xmodmap.

Кстати, есть два режима редактирования - vi и emacs, по-умолчанию, emacs.

Даже названия функций типично емаксовкие, например, M-. звучит как "yank-last-arg"

В терминологии emacs вместо "вставить" употребляется "yank".

За более подробной информацией
info Readline

Igor комментирует...

Ctrl + ? = стирание символа (помогает, когда не работает Escape). Про bash уже Роман сказал. А умолчальгные настройки лежат, кажется, в /etc/inputrc. И по тому же умолчанию у меня не работает Alt + любая буква =)
P.S. а сюда нельзя постить, если зареген на Блоггере, а не Блоггере-бета?

serhiy cherevko комментирует...

>P.S. а сюда нельзя постить, если зареген >на Блоггере, а не Блоггере-бета?

Вроде можно.

serhiy cherevko комментирует...

Что еще могу добавить? Спасибо за хорошие комментарии. О клавише Meta только читал. В живую я ее никогда не видел. Действительно, все что касается ALT это от Meta. Поэтому, можно использовать не ALT, а Esc. Но мне это не удобно. Emacs не использую.
info Readline
Будем больше знать :)

portnov комментирует...

В статье надо бы упомянуть, что вместо Alt-буква можно юзать Esc, буква, т.к. на половине терминалов Alt-буква не работает.

Анонимный комментирует...

За за метку автору спасибо, но хочу внести небольшую поправку: что бы не в водить в заблуждение тех кто не очень в курсе, автору бы желательно поправить коментарий о самом bash. Он НЕ является стандартным для unix-подобных систем. Он является стандартым именно для linux. Другие же unix-подобные системы используют csh (для freebsd, точнее tcsh, csh там просто хардлинком), netbsd - csh. unix-ы в чистом виде чаще всего используют sh, solaris - ksh.

serhiy cherevko комментирует...

ОК. Всем спасибо за комментарии. На счет Alt и Esk, я в комментарии объяснил. В большинстве случаев это одно и тоже. Если не работает Alt, надо попробовать Esk, или изменить настройки, как написал roman lagunov. На счет bash, tcsh, csh, ksh - извините за невежество. Обещаю со всем разобраться. Еще раз спасибо за комментарии.

router комментирует...

>Ctrl + d - удалить символ под курсором

При пустой строке это сообщение, что с stdinput ввода больше не будет; эквивалентно выходу из терминала командой exit. В отличие от ^C процесс не прерывается аварийно, а завершается

serhiy cherevko комментирует...

Router said

>Ctrl + d - удалить символ под курсором

При пустой строке это сообщение, что с stdinput ввода больше не будет; эквивалентно выходу из терминала командой exit

Спасибо. Никогда не пробовал.

Kirill Gerasimenko комментирует...

Автору спасибо. Распечатаю на листик и дома рядом с компом положу :) На первое время пока не выучится - самое то

serhiy cherevko комментирует...

Хорошая идея с распечатыванием :)

Анонимный комментирует...

Вобще-то документ man bash обязателен к прочтению! Появиться повод еще не один пост написать