Иллюстрированный самоучитель по Linux

Хронологический список

Идея, положенная в основу этого средства, крайне проста. После ввода каждой команды (после нажатия Enter, а не CTRL + C), последняя заносится в список, из которого команды можно извлекать в порядке, обратном вводу.

Простейший способ доступа к хронологическому списку – просмотр его записей нажатием клавиши со стрелкой вверх, пока не будет найдена нужная команда. У хронологического списка есть два основных назначения: поиск ошибочно введенных команд и повторный ввод команд.

Рассмотрим первое. Предположим, вы предприняли попытку просмотреть содержимое файла testfile, для чего ввели команду:

$ moer testfile

После нажатия Enter, на экране появится сообщение об ошибке.

bash: moer: command not found.

Для быстрого исправления ситуации достаточно вернуть команду в командную строку нажатием клавиши со стрелкой вверх, исправить moer на more (воспользовавшись функциями редактирования командной строки) и нажать Enter.

Другая ситуация – конфигурирование некоторой программы. При этом обычно приходится несколько раз подряд редактировать конфигурационный файл и запускать программу. А для таких повторов нет средства лучше хронологического списка.

Существует быстрый способ доступа к хронологическому списку – при помощи восклицательного знака (!). Если ввести восклицательный знак с несколькими следующими за ним начальными буквами одной из команд из хронологического списка, то эта команда будет выполнена (будет повторено последнее обращение к ней).

Например, если ранее была выполнена команда:

$ ps aux | grep httpd | more

…ее выполнение можно повторять вводом:

$!ps

…если только после нее не вводилась другая команда, начинавшаяся с "ps". После ввода! ps выполняется последняя команда из хронологического списка, начинающаяся с "ps".

Для хронологического списка также существует ряд полезных функциональных комбинаций клавиш. Некоторые из них перечислены в табл. 16.2.

Из перечисленных комбинаций наиболее интересна CTRL + R. Это динамичный, интерактивный обратный поиск в списке. По мере набора строки Bash ищет в хронологическом списке команду с совпадающим фрагментом, введенную последней. Чем длиннее набранная строка, тем меньше область поиска нужной команды.

Предположим, необходимо ввести уже вводившуюся сложную поисковую команду. Включите режим поиска, нажав CTRL + R. На экране появится строка интерактивного поиска.

(reverse-i-search)' ':

Табл. 16.2. Функциональные комбинации клавиш для хронологического списка.

Комбинация клавиш Функция
CTRL + P Переход к предыдущей команде в хронологическом списке
CTRL + N Переход к следующей команде в хронологическом списке
Esc, < Переход к началу хронологического списка (команде, введенной первой)
Esc, > Переход в конец хронологического списка (к команде, введенной последней)
CTRL + R Поиск по списку в обратном направлении
CTRL + O Выполнение текущей команды хронологического списка и вывод следующей для редактирования или выполнения

По мере набора символов в этой строке Bash отыскивает в хронологическом списке команду с совпадающим фрагментом, введенную последней. Например, набор одной буквы "f" может дать следующий результат.

(reverse-i-search)`f: pico info/.signature

Если продолжить и набрать "fi", можно получить:

(reverse-i-search)`fi': rm – rf StarOffice-3.1

Наконец, после набора "fin", получаем то, что искали:

(reverse-i-search)`fin': find / – name 'foo' – print

Для ввода найденной команды достаточно нажать Enter.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.