5. Завершение командной строки

Завершение - это очень удобная функция, и все современные shell'ы (включая bash) обладают ее. Ее роль заключается в облегчении работы пользователя настолько, насколько это возможно. Наилучший способ демонстрации завершения - это иллюстрация на примере.

5.1. Пример

Допустим, что в вашем личном каталоге имеется файл_с_очень_длинным_и_сложным_для_ввода_именем, и вам нужно его просмотреть. Допустим, что у вас в том же самом каталоге есть файл с именем файл_с_текстом. Вы находитесь в своем личном каталоге, поэтому введите следующую последовательность:

$ less фа<TAB>

(т.е., введите less фа, а затем нажмите клавишу Tab). Затем shell расширит командную строку до следующего:

$ less файл_с_

а также выведет список возможных вариантов (это его конфигурация по умолчанию, которая может быть настроена). Затем введите следующую последовательность символов:

$ less файл_с_о<TAB>

и shell расширит командную строку до нужного вам результата:

$ less файл_с_очень_длинным_и_сложным_для_ввода_именем

Затем всё, что вам нужно сделать - это нажать клавишу Enter для подтверждения и приняться за чтение файла.

[Подсказка]Подсказка

Используйте клавишу q для завершения просмотра файлов.

5.2. Другие способы завершения

Клавиша Tab - это не единственный способ для выполнения завершения, хотя он и является самым общим. Как правило, завершаемым словом будет название команды для первого слова в командной строке (результатом nsl<TAB> будет nslookup), а имя файла - для всех остальных слов, если только перед словом не идёт «магический» символ типа ~, @ или $. В данном случае shell попытается завершить имя пользователя, имя машины или имя переменной окружения соответственно[17]. Также существует магический символ для завершения имени файла (/) и команда для повторного вызова команды из истории (!).

Другие два способа для выполнения завершения - это последовательности Esc-<x> иCtrl-X-<x>, где <x> - это один из упомянутых выше магических символов. Esc-<x> попробует предложить единственное завершение. В случае неудачи слово будет завершено наибольшей возможной подстрокой из списка вариантов. Звуковой сигнал (beep) означает, что выбор не является единственным, или просто нет подходящего варианта. Последовательность Ctrl-X-<x> выводит список возможных вариантов без попытки какого-либо завершения. Нажатие на клавишу Tab - это то же самое, что и последовательное нажатие Esc-<x> и Ctrl-X-<x>, где магический символ зависит от контекста.

Таким образом, единственным способом увидеть все определённые переменные окружения будет ввести в пустой строке последовательность Ctrl-X-$. Другой пример: если вам нужно просмотреть страницу man для команды nslookup, просто введите man nsl, а затем Esc-!, и командный процессор автоматически завершит команду до man nslookup.



[17] Помните: UNIX® различает верхний и нижний регистры. Переменная окружения HOME и переменная home - это не одно и то же.