Завершение
- это очень удобная функция, и все современные shell'ы
(включая
bash) обладают ее. Ее роль заключается в облегчении работы
пользователя настолько, насколько это возможно. Наилучший способ демонстрации
завершения - это иллюстрация на примере.
Допустим, что в вашем личном каталоге имеется
файл_с_очень_длинным_и_сложным_для_ввода_именем
, и
вам нужно его просмотреть. Допустим, что у вас в том же самом каталоге есть
файл с именем файл_с_текстом
. Вы находитесь в своем
личном каталоге, поэтому введите следующую последовательность:
$ less фа<TAB>
(т.е., введите less фа, а затем нажмите клавишу
Tab). Затем shell
расширит командную строку до
следующего:
$ less файл_с_
а также выведет список возможных вариантов (это его конфигурация по умолчанию, которая может быть настроена). Затем введите следующую последовательность символов:
less файл_с_о<TAB>
и shell
расширит командную строку до нужного вам результата:
less файл_с_очень_длинным_и_сложным_для_ввода_именем
Затем все, что вам нужно сделать - это нажать клавишу Enter для подтверждения и приняться за чтение файла.
Клавиша
Tab - это не единственный способ для выполнения
завершения, хотя он и является самым общим. Как правило, завершаемым словом
будет название команды для первого слова в командной строке (результатом
nsl<TAB> будет nslookup), а имя файла -
для всех остальных слов, если только перед словом не идет
«магический» символ типа ~
,
@
или $
. В данном случае
shell
попытается завершить имя пользователя, имя машины или имя
переменной окружения соответственно[8]. Также существует магический символ для завершения имени файла
(/
) и команда для повторного вызова команды из истории
(!
).
Другие два способа для выполнения завершения - это последовательности 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.
[8]
Помните: UNIX® различает верхний и нижний регистры. Переменная
окружения HOME
и переменная home
- это не одно и то же.