Завершение
- это очень удобная функция, и все
современные shell'ы
(включая bash)
обладают ее. Ее роль заключается в
облегчении работы пользователя
настолько, насколько это возможно.
Наилучший способ демонстрации завершения
- это иллюстрация на примере.
Допустим, что в вашем личном каталоге
имеется
файл_с_очень_длинным_и_сложным_для_ввода_именем
,
и вам нужно его просмотреть. Допустим, что
у вас в том же самом каталоге есть файл с
именем файл_с_текстом
. Вы
находитесь в своем личном каталоге,
поэтому введите следующую
последовательность:
$ less фа<TAB>
(т.е., введите less фа, а затем
нажмите клавишу Tab). Затем
shell
расширит командную строку до
следующего:
$ less файл_с_
а также выведет список возможных вариантов (это его конфигурация по умолчанию, которая может быть настроена). Затем введите следующую последовательность символов:
$ less файл_с_о<TAB>
и shell
расширит командную строку до
нужного вам результата:
$ less файл_с_очень_длинным_и_сложным_для_ввода_именем
Затем всё, что вам нужно сделать - это нажать клавишу Enter для подтверждения и приняться за чтение файла.
Клавиша
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
- это не одно и то же.