Автодополнение командной строки (также автодополнение клавишей Tab ) — распространённая функция интерпретаторов командной строки , в которой программа автоматически заполняет частично набранные команды.
Интерпретаторы командной строки — это программы, которые позволяют пользователю взаимодействовать с базовой операционной системой, вводя команды в командной строке с помощью интерфейса командной строки (CLI), в отличие от указания и щелчка мыши в графическом пользовательском интерфейсе (GUI). Завершение командной строки позволяет пользователю вводить первые несколько символов команды, программы или имени файла и нажимать клавишу завершения (обычно Tab ↹), чтобы заполнить остальную часть элемента. Затем пользователь нажимает или , чтобы запустить команду или открыть файл.Return↵ Enter
Завершение командной строки полезно несколькими способами, как показано в анимации, сопровождающей эту статью. Часто используемые команды, особенно с длинными именами, требуют меньше нажатий клавиш для доступа. Команды с длинными или сложными для написания именами файлов можно вводить, набрав первые несколько символов и нажав клавишу завершения, которая завершает команду или имя файла. В случае нескольких возможных завершений некоторые интерпретаторы командной строки, особенно оболочки Unix, выведут список всех возможных завершений, начинающихся с этих нескольких символов. Пользователь может ввести больше символов и нажать еще раз, чтобы увидеть новый, суженный список, если введенные символы все еще неоднозначны, или же завершить команду/имя файла конечным пробелом. Альтернативная форма завершения циклически просматривает все соответствующие результаты, когда ввод неоднозначен.Tab ↹
Завершаемые элементы могут включать команды, аргументы, имена файлов и другие сущности в зависимости от конкретного интерпретатора и его конфигурации. Завершение командной строки обычно работает только в интерактивном режиме . То есть, его нельзя вызвать для завершения частично набранных команд в скриптах или пакетных файлах , даже если завершение однозначно. Название «завершение табуляции» происходит от того факта, что завершение командной строки часто вызывается нажатием клавиши табуляции .
Автодополнение Tab появилось в истории вычислений на ранних этапах; один из первых примеров появился в Berkeley Timesharing System для SDS 940 , где если набранная строка была неоднозначной, интерпретатор ничего не делал, но если строка не была неоднозначной, он автоматически завершал ее без какой-либо команды от пользователя. Эта функция не работала хорошо со слишком частыми опечатками , и поэтому была неоднозначным благословением. Эту функцию скопировали разработчики Tenex , которые внесли важное изменение: Tenex использовал «распознавание escape», при котором интерпретатор не пытался выполнить автодополнение, пока клавиша escape не была нажата пользователем (отсюда и название). Домен также был расширен с только имен программ в системе Berkeley до имен программ и файлов в Tenex. [1] Потомок Tenex TOPS-20 перенес автодополнение командной строки из командного интерпретатора в операционную систему через системный вызов COMND JSYS, чтобы сделать его доступным для других пользовательских приложений. [2] Оттуда он был заимствован Unix.
Чтобы открыть файл introduction-to-command-line-completion.html в Firefox, нужно ввести:
firefox введение-в-командную-строку-завершение.html
Это длинная команда для ввода. Вместо этого мы можем использовать автодополнение командной строки.
Следующий пример показывает, как работает автодополнение командной строки в Bash . Другие оболочки командной строки могут работать немного иначе.
Сначала вводим первые три буквы нашей команды:
ель
Затем нажимаем и, поскольку единственная команда в нашей системе, которая начинается с «fir» — это «firefox», она будет завершена следующим образом:Tab ↹
фаерфокс
Затем начинаем вводить имя файла:
фаерфокс я
Но на этот раз introduction-to-command-line-completion.html — не единственный файл в текущем каталоге, начинающийся с "i". Каталог также содержит файлы introduction-to-bash.html и introduction-to-firefox.html . Система не может решить, какое из этих имен файлов мы хотели ввести, но она знает, что файл должен начинаться с "introduction-to-", поэтому команда будет завершена до:
Firefox введение-в-
Теперь набираем «c»:
Firefox введение-в-C
После нажатия оно будет дополнено до полного имени файла:Tab ↹
firefox введение-в-командную-строку-завершение.html
Короче говоря, мы набрали:
ель я сTab ↹Tab ↹Tab ↹
Это всего лишь восемь нажатий клавиш, что значительно меньше 52 нажатий клавиш, которые нам пришлось бы нажать, не используя автодополнение командной строки.
В следующем примере показано, как работает автодополнение командной строки с использованием циклического автодополнения, например, используемого CMD в Windows .
Мы следуем той же процедуре, что и для запроса на завершение, пока не получим:
фаерфокс я
Нажимаем один раз, результат:Tab ↹
firefox введение-в-bash.html
Нажимаем еще раз, получаем:Tab ↹
firefox введение-в-командную-строку-завершение.html
Короче говоря, мы набрали:
ель яTab ↹Tab ↹Tab ↹
Это всего лишь семь нажатий клавиш, что сопоставимо с завершением в стиле подсказок. Это работает лучше всего, если мы знаем, какие возможности будет использовать интерпретатор.
complete
и compgen
команды [4] доступны с бета-версии 2.04 [3] в 2000 году [5] и предлагают как минимум автодополнение имени пути и имени файла.(Обязательно проверьте раздел «Относится к» в каждой статье)