Командная строка Linux
Шрифт:
С механизмом дополнения связано несколько управляющих комбинаций клавиш (табл. 8.4).
Существует еще несколько команд, смысл которых для меня не совсем ясен. Полный список вы сможете найти на странице справочного руководства (man) для bash, в разделе «READLINE».
Таблица 8.4. Команды дополнения
Клавиша
Действие
ALT+?
Выводит список возможных дополнений. В большинстве систем аналогичный эффект можно получить, нажав клавишу TAB второй раз, что намного проще
ALT+*
Вставит все возможные дополнения. Это пригодится
ПРограммируемое дополнение
Последние версии bash реализуют механизм программируемого дополнения. Программируемое дополнение дает возможность добавлять дополнительные правила. Обычно это делается с целью добавить поддержку определенных приложений. Например, можно добавить дополнение списка параметров команды или файлов определенного типа, поддерживаемых приложением. В Ubuntu определено огромное множество таких правил. Программируемое дополнение реализуется посредством функций командной оболочки — небольших мини-сценариев, о которых будет рассказываться в следующих главах. Если вам любопытно, попробуйте выполнить команду
set | less
и вы увидите их. Однако не все дистрибутивы включают эти функции по умолчанию.
Использование истории
Как рассказывалось в главе 1, bash поддерживает историю вводившихся команд. Этот список команд хранится в домашнем каталоге, в файле с именем .bash_history. Механизм истории помогает уменьшить объем ручного ввода, особенно в сочетании с командами редактирования командной строки.
Поиск в истории
Просмотреть содержимое истории можно в любой момент с помощью команды:
[me@linuxbox ~]$ history | less
По умолчанию bash хранит последние 500 введенных команд. Как изменить это значение, мы узнаем в главе 11. А теперь представим, что вам понадобилось найти команды, использовавшиеся для получения списка содержимого /usr/bin. Вот один из возможных способов:
[me@linuxbox ~]$ history | grep /usr/bin
А теперь представим, что среди результатов нужно выбрать запись с интересующей вас командой:
88 ls -l /usr/bin > ls-output.txt
Здесь число 88 — это порядковый номер записи команды в списке истории. Зная это число, можно воспользоваться еще одной разновидностью подстановки, которая называется подстановкой записей истории (history expansion). Для этого введите:
[me@linuxbox ~]$ !88
и bash заменит !88 содержимым 88-й записи в списке истории. Подробнее об этой форме подстановки записей истории мы поговорим чуть ниже.
bash также дает возможность выполнять поступательный поиск в списке истории. Это означает, что bash может выполнять поиск в списке истории по мере ввода символов, уточняя результаты с вводом каждого нового символа. Чтобы запустить поступательный поиск, нажмите комбинацию CTRL+R и введите искомый текст. Закончив поиск, нажмите ENTER, чтобы выполнить команду, или CTRL+J, чтобы скопировать запись из списка истории в текущую командную строку. Чтобы найти
[me@linuxbox ~]$
Первое нажатие комбинации CTRL+R:
(reverse-i-search)`':
Приглашение к вводу изменится, показывая, что выполняется поступательный поиск в обратном порядке. Под словами «в обратном порядке» подразумевается, что поиск выполняется от «текущего момента» до некоторого момента в прошлом. Далее мы начинаем ввод искомого текста, в данном примере /usr/bin:
(reverse-i-search)`/usr/bin': ls -l /usr/bin > ls-output.txt
Механизм поиска сразу же возвращает результат. Теперь, чтобы выполнить найденную команду, необходимо нажать ENTER, или вы можете скопировать команду в командную строку для дальнейшего редактирования, нажав CTRL+J. Давайте скопируем ее. Нажмите CTRL+J:
[me@linuxbox ~]$ ls -l /usr/bin > ls-output.txt
Механизм поиска вернет управление, командная строка заполнится и будет готова для выполнения!
В табл. 8.5 перечислены некоторые комбинации клавиш, используемые для манипуляций со списком истории команд.
Таблица 8.5. Команды для работы с историей
Клавиша
Действие
CTRL+P
Переход к предыдущей записи в истории. Действует так же, как клавиша со стрелкой вверх
CTRL+N
Переход к следующей записи в истории. Действует так же, как клавиша со стрелкой вниз
ALT+<
Переход в начало (к первой записи) списка истории
ALT+>
Переход в конец (к последней записи) списка истории
CTRL+R
Инкрементальный поиск в обратном порядке. Поиск выполняется поступательно, от текущей записи вверх по списку истории
ALT+P
Поиск в обратном порядке, не инкрементальный. При использовании этого вида поиска введите искомую строку и нажмите ENTER, и только после этого будет выполнен фактический поиск
ALT+N
Поиск в прямом порядке, не поступательный
CTRL+O
Выполнить текущую команду в списке истории и перейти к следующей. Эту комбинацию удобно использовать, если требуется повторно выполнить последовательность команд из списка истории
Подстановка записей истории
Командная оболочка поддерживает специализированный вид подстановки — подстановку записей из списка истории при использовании символа !. Мы уже видели, как восклицательный знак, сопровождаемый числом, замещается записью из списка истории. Этот вид подстановки имеет несколько разновидностей (табл. 8.6).
Не используйте формы !строка и !?строка, если только вы абсолютно точно не знаете содержимого записей в списке истории.
Механизм подстановки записей истории поддерживает также другие комбинации, но эта тема становится слишком запутанной, и мы не станем перегружать себя лишней информацией. Желающие смогут обратиться к странице справочного руководства (man) для bash, в разделе «HISTORY EXPANSION». Загляните туда!
Таблица 8.6. Команды механизма подстановки записей истории