Хронологический
список
Идея, положенная в основу
этого средства, крайне проста. После ввода каждой команды (после нажатия Enter,
а не Ctrl+C), последняя заносится в список, из которого команды можно извлекать
в порядке, обратном вводу.
Простейший способ доступа
к хронологическому списку - просмотр его записей нажатием клавиши со стрелкой
вверх, пока не будет найдена нужная команда. У хронологического списка есть
два основных назначения: поиск ошибочно введенных команд и повторный ввод команд.
Рассмотрим первое. Предположим,
вы предприняли попытку просмотреть содержимое файла testf ile, для чего ввели
команду
$
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.