Завершення - це дуже зручна функція, і всі сучасні shell'и
(включаючи bash) мають її. Її роль полягає в полегшенні роботи користувача настільки, наскільки це можливо. Найкращий спосіб демонстрації завершення - це ілюстрація на прикладі.
Припустимо, в вашому особистому каталозі є файл_з_дуже_довгим_і_складним_для_вводу_ім'ям
, і потрібно його переглянути. Припустимо у вас у тому ж самому каталозі є файл з ім'ям файл_з_текстом
. Ви знаходжитесь у своєму особистому каталозі, тож введіть таку послідовність:
$ less fi<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
- це не одне і же саме.