3.4. Редактирование командной строки. История команд

3.4. Редактирование командной строки. История команд

В предыдущих разделах вам было предложено выполнить несколько команд ОС Linux. Полагаю, что, если в процессе набора возникали ошибки, вы сами догадались, как их исправить. Тем не менее будет полезно привести для справки короткую сводку команд, позволяющих редактировать командную строку, а также вообще оказывать какое-то влияние на поведение оболочки с помощью клавиатуры (о мышке разговор отдельный).

Примечание. Приводимые ниже описания команд относятся к оболочке GNU bash версии 1.14.7(1). Думается, что они будут верны и для последующих версий этой оболочки.

Таблица 3.2. Клавиши редактирования командной строки

Клавиша Описание реакции системы ‹Стрелка вправо› или ‹Ctrl›+‹F› Перемещение вправо по командной строке в пределах уже набранной цепочки символов плюс один символ справа (место для ввода следующего символа) ‹Стрелка влево› или ‹Ctrl›+‹B› Перемещение на один символ влево ‹Esc›+‹F› Перемещение на одно слово вправо ‹Esc›+‹B› Перемещение на одно слово влево ‹Home› или ‹Ctrl›+‹A› Перемещение в начало набранной цепочки символов ‹End› или ‹Ctrl›+‹E› Перемещение в начало/конец набранной цепочки символов ‹Del› или ‹Ctrl›+‹D› Удаление символа, на который показывает курсор ‹Backspase› Удаление символа в позиции, предшествующей курсору ‹Ctrl›+‹K› Удалить правую часть строки, начиная с символа, на который указывает курсор ‹Ctrl›+‹U› Удалить левую часть строки, включая символ, который находится слева от курсора ‹Enter› или ‹Ctrl›+‹M› Запуск на выполнение команды, определяемой набранной цепочкой символов ‹Ctrl›+‹L› Очистить экран и поместить текущую команду в верхней строке экрана ‹Ctrl›+‹T› Поменять местами два символа: символ, на который показывает курсор, и символ слева от курсора, затем, курсор переместить на один символ вправо ‹Esc›+‹T› Поменять местами два слова: слово, на которое указывает курсор и слово слева от первого ‹Ctrl›+‹K› Вырезать часть строки от текущей позиции курсора до конца строки (вырезанная часть строки сохраняется в буфере, ее можно вставить в другое место строки) ‹Esc›+‹D› Вырезать часть строки от текущей позиции курсора до конца текущего слова (если курсор указывает на пробел между словами, то вырезается все слово справа от курсора) ‹Esc›+‹Del› Вырезать часть строки от текущей позиции курсора до начала текущего слова (если курсор указывает на пробел между словами, то вырезается все слово слева от курсора) ‹Ctrl›+‹W› Вырезать часть строки от текущей позиции курсора до предыдущего пробела ‹Ctrl›+‹Y› Вставить последний вырезанный текст в позицию курсора ‹Esc›+‹C› Символ, на который указывает курсор, заменить на тот же, но заглавный, а курсор переместить на первый пробел справа от текущего слова ‹Esc›+‹U› Сделать символы данного слова заглавными, начиная с символа, на который указывает курсор, а курсор установить на пробел справа от слова ‹Esc›+‹L› Превратить символы, начиная с символа, на который указывает курсор, до конца данного слова в прописные (маленькие) буквы, а курсор установить на пробел справа от слова ‹Shift›+‹PgUp› ‹Shift›+‹PgDown› Эти команды позволяют просмотреть несколько страниц экранного вывода (количество зависит от размера видеопамяти); полезны в тех случаях, когда та или иная команда выводит на экран очень много информации, быстро пробегающей по экрану и как бы исчезающей для пользователя; как видите, эта информация не пропадает ‹Ctrl›+‹C› Прервать выполнение запущенной команды ‹Ctrl›+‹D› Выход из оболочки bash

Примечание. Если вы работаете не просто в оболочке bash, а запустили программу Midnight Commander, то такие клавиши как ‹Стрелка вправо›, ‹Стрелка влево›, ‹Home›, ‹End›, ‹Del› не могут использоваться так, как указано в приведенной таблице, поскольку они используются для перемещения подсветки в текущей панели [9]. Но указанные выше в скобках комбинации символьных клавиш с клавишами ‹Ctrl› и ‹Esc› по-прежнему действуют для редактирования командной строки.

Список возможных команд не ограничивается только приведенными в табл. 3.2, но из-за ограниченности объема книги невозможно привести здесь полный перечень клавиатурных команд. Для получения дополнительной информации воспользуйтесь командой info bash.

Заметим, что оболочка bash имеет встроенную подпрограмму, предназначенную для облегчения ввода команд в командной строке. Эта подпрограмма вызывается при двукратном нажатии клавиши ‹Tab› после того, как вы уже ввели некоторое число символов. Если эти символы являются началом названия одной из стандартных команд, которые известны оболочке, то возможны два варианта реакции оболочки на двукратное нажатие клавиши ‹Tab›. Если по введенным символам команда определяется однозначно, оболочка просто добавляет окончание команды в командную строку. Если однозначно восстановить имя команды по введенным символам невозможно, то выдается список возможных вариантов продолжения для того, чтобы пользователь мог ввести еще несколько символов, позволяющих однозначно завершить ввод команды нажатием клавиши ‹Tab›.

Если вы попробуете дважды ввести символ табуляции в пустой командной строке, то после первого ввода вы получите только звуковой сигнал, а после второго - примерно следующее сообщение: "There are 1217 possibilities. Do you really wish to see them all? (y or n)" ("Возможны 1217 вариантов завершения. Вы действительно хотите увидеть их все?").

Если дважды нажать клавишу табуляции после того, как введена одна из команд и пробел, оболочка предполагает, что вы ищете имя файла, который должен вводиться как параметр команды, и выдает в качестве подсказки список файлов текущего каталога. Если же достаточная часть имени файла введена, то заканчивается ввод этого имени в командную строку. Аналогичным образом можно пытаться угадывать окончания переменных окружения, если вместо клавиши ‹Tab› воспользоваться комбинацией ‹Esc›+‹$›.

Для практической работы с оболочкой также полезно знать, что оболочка запоминает некоторое число введенных команд (по умолчанию 1000, это значение задается в переменной HISTSIZE; см. гл. 5) и позволяет вызывать их путем выбора из списка - так называемой истории команд. Историю команд можно просмотреть, введя в командной строке history (здесь вы сможете воспользоваться комбинациями клавиш ‹Shift›+‹PgUp› и ‹Shift›+‹PgDown›, чтобы просмотреть то, что выдаст эта команда). История команд сохраняется в файле, определяемом переменной HISTFILE (обычно $HOME/.bash_history). Для работы с историей команд в оболочке bash используются следующие комбинации клавиш.

Таблица 3.3. Клавиши для управления историей команд.

Клавиша Описание реакции системы ‹Стрелка вверх› или ‹Ctrl›+‹P› Переход к предыдущей команде в списке (движение назад по списку) ‹Стрелка вниз› или ‹Ctrl›+‹N› Переход к следующей команде в списке (движение вперед по списку) ‹PgUp› Переход к (вызов в командную строку) самой первой команде, сохраненной в истории команд ‹!›, ‹N› Выполняется (без нажатия клавиши ‹Enter›) n-ная команда из списка истории команд ‹!›, ‹-›, ‹N› Выполняется n-ая от конца списка команда ‹!›, строка символов Выполняется команда, имя которой начинается на строку символов (поиск нужной команды осуществляется движением в обратном порядке от конца файла истории и выполняется первая попавшаяся команда, которая начинается на строку символов) ‹Ctrl›+‹O› То же что нажатие клавиши ‹Enter›, затем отображается очередная команда из файла истории