Завершение командной строки
Завершение командной строки (также завершение табуляции ) — обычная функция интерпретаторов командной строки , при которой программа автоматически заполняет частично набранные команды.
Интерпретаторы командной строки — это программы, которые позволяют пользователю взаимодействовать с базовой операционной системой путем ввода команд в командной строке с использованием интерфейса командной строки (CLI), в отличие от указания и щелчка мышью в графическом интерфейсе пользователя (GUI). Завершение командной строки позволяет пользователю ввести первые несколько символов команды, программы или имени файла и нажать клавишу завершения (обычно Tab ↹), чтобы заполнить остальную часть элемента. Затем пользователь нажимает Return или ↵ Enter для запуска команды или открытия файла.
Завершение командной строки полезно по нескольким причинам, о чем свидетельствует анимация, сопровождающая эту статью. Часто используемые команды, особенно с длинными именами, требуют меньшего количества нажатий клавиш. Команды с длинными или трудными для написания именами файлов можно вводить, набрав первые несколько символов и нажав клавишу завершения, которая завершает команду или имя файла. В случае нескольких возможных дополнений некоторые интерпретаторы командной строки, особенно оболочки Unix, перечислят все возможные завершения, начинающиеся с этих нескольких символов. Пользователь может ввести больше символов и нажать Tab ↹ еще раз, чтобы увидеть новый, суженный список, если введенные символы по-прежнему неоднозначны, или дополните имя команды/файла завершающим пробелом. Альтернативная форма завершения чередуется со всеми совпадающими результатами, если входные данные неоднозначны.
Завершаемые элементы могут включать в себя команды, аргументы, имена файлов и другие объекты, в зависимости от конкретного интерпретатора и его конфигурации. Завершение командной строки обычно работает только в интерактивном режиме . То есть его нельзя вызвать для завершения частично типизированных команд в сценариях или пакетных файлах , даже если завершение однозначно. имени Завершение табуляции связано с тем, что завершение командной строки часто вызывается нажатием клавиши табуляции .
История
[ редактировать ]Завершение табуляции появилось на ранних этапах истории вычислений; один из первых примеров появился в системе разделения времени Беркли для SDS 940 , где, если напечатанная строка была неоднозначной, интерпретатор ничего не делал, но если строка не была неоднозначной, он автоматически завершал ее без какой-либо команды от пользователя. Эта функция не очень хорошо справлялась со слишком частыми опечатками , поэтому была неоднозначным благом. Эту функцию имитировали разработчики Tenex , которые внесли важное изменение: Tenex использовал «распознавание escape», при котором интерпретатор не пытался выполнить автозаполнение, если клавишу escape пользователь не нажал (отсюда и название). Домен также был расширен с имен программ в системе Беркли до названий программ и файлов в Tenex. [ 1 ] Потомок Tenex TOPS-20 перенес завершение командной строки из интерпретатора команд в операционную систему через системный вызов COMND JSYS, чтобы сделать его доступным для других пользовательских приложений. [ 2 ] Оттуда он был заимствован Unix.
Пример
[ редактировать ]Чтобы открыть файл Introduction-to-command-line-completion.html в Firefox можно было бы ввести:
firefox introduction-to-command-line-completion.html
Это длинная команда для ввода. Вместо этого мы можем использовать завершение командной строки.
Подсказка о завершении
[ редактировать ]В следующем примере показано, как работает завершение командной строки в Bash . Другие оболочки командной строки могут работать немного иначе.
Сначала набираем первые три буквы нашей команды:
fir
Затем мы нажимаем Tab ↹ и поскольку единственная команда в нашей системе, начинающаяся с «fir», — это «firefox», она будет завершена до:
firefox
Затем начинаем вводить имя файла:
firefox i
Но на этот раз введение-to-command-line-completion.html — не единственный файл в текущем каталоге, который начинается с «i». В каталоге также есть файлы введение в bash.html и введение-в-firefox.html . Система не может решить, какое из этих имен файлов мы хотим ввести, но она знает, что файл должен начинаться с «introduction-to-», поэтому команда будет завершена до:
firefox introduction-to-
Теперь набираем «с»:
firefox introduction-to-c
После нажатия Tab ↹ оно будет завершено до всего имени файла:
firefox introduction-to-command-line-completion.html
Короче говоря, мы набрали:
firTab ↹iTab ↹cTab ↹
Это всего лишь восемь нажатий клавиш, что значительно меньше, чем 52 нажатия клавиш, которые нам потребовались бы для ввода без использования автодополнения командной строки.
Вращающееся завершение
[ редактировать ]В следующем примере показано, как завершение командной строки работает с чередующимся завершением, например, которое использует CMD в Windows .
Мы следуем той же процедуре, что и для запроса на завершение, пока не получим:
firefox i
Мы нажимаем Tab ↹ один раз, с результатом:
firefox introduction-to-bash.html
Мы нажимаем Tab ↹ снова получаем:
firefox introduction-to-command-line-completion.html
Короче говоря, мы набрали:
firTab ↹iTab ↹Tab ↹
Это всего лишь семь нажатий клавиш, что сравнимо с завершением в стиле подсказки. Это работает лучше всего, если мы знаем, какие возможности будет использовать интерпретатор.
Завершение в различных интерфейсах командной строки
[ редактировать ]- Оболочки Unix , включая Bash (оболочка по умолчанию в большинстве дистрибутивов Linux ) и ksh среди многих других, имеют давнюю традицию расширенных и настраиваемых возможностей завершения. [ 3 ]
- Bash , Программируемое завершение
complete
иcompgen
команды [ 4 ] доступны с бета-версии 2.04. [ 3 ] в 2000 году [ 5 ] и предлагает по крайней мере завершение пути и имени файла. - Для пользователей KornShell завершение имени файла зависит от значения переменной EDITOR. Если для EDITOR установлено значение vi, вы вводите часть имени, а затем Escape, \. Если для EDITOR установлено значение Emacs , вы вводите часть имени, а затем Escape, Escape.
- Оболочка Z (zsh) стала пионером в поддержке полностью программируемого завершения, позволяя пользователям автоматически заполнять параметры различных команд, не связанных с самой оболочкой, что достигается путем заполнения оболочки определениями всех известных переключателей, а также соответствующими типы параметров. Это позволяет пользователю, например, ввести tar xzf Tab ↹ и пусть оболочка завершает только tar-архивы gzip из реальной файловой системы, пропуская файлы, которые несовместимы с входными параметрами. Современная установка zsh содержит определения завершения для более чем пятисот команд.
- Tcsh предлагает завершение имени файла, команды и переменной по умолчанию, активируемое с помощью Tab ↹. Встроенная команда Complete обеспечивает полностью программируемое завершение. Исходный код поставляется с файлом Complete.tcsh, содержащим множество примеров синтаксиса завершения.
- Bash , Программируемое завершение
- Windows PowerShell , расширяемая командная оболочка от Microsoft, основанная на объектно-ориентированном программировании и платформе Microsoft .NET , предоставляет мощные и настраиваемые возможности завершения, аналогичные традиционным оболочкам Unix. [ 6 ] [ 7 ] [ нужна ссылка ]
- The cmd.exe Командный процессор систем на базе Windows NT поддерживает базовое завершение. Можно использовать отдельную привязку клавиш только для сопоставления имен каталогов.
- cmd.exe /F:ON включает символы завершения имени файла и каталога (по умолчанию ^F и ^D). Использовать cmd.exe /? для получения дополнительной информации.
- TweakUI можно использовать для настройки ключей, используемых для завершения имени файла и имени каталога. [ 8 ]
- Командный MS-DOS процессор В COMMAND.COM не было автодополнения командной строки: нажатие клавиши табуляции просто перемещало курсор . Однако различные расширенные оболочки для MS-DOS, такие как 4DOS , FreeDOS , версия COMMAND.COM или расширенная функция DOSKEY.COM для завершения табуляции в стиле Unix.
- Far Manager, помимо функций управления файлами, предоставляет историю команд и завершение строк для Windows.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Истоки и развитие ТОПС-20» . www.opost.com . Архивировано из оригинала 01 августа 2020 г. Проверено 10 сентября 2006 г.
- ^ Руководство по языку ассемблера DECSYSTEM-20
- ^ Jump up to: а б «Более продуктивная работа с bash 2.x/3.x» . www.caliban.org .
- ^ «Справочное руководство по Bash» . tiswww.case.edu .
- ^ «Индекс /gnu/bash» . ftp.swin.edu.au.
- ^ «Парень из PowerShell» . thepowershellguy.com .
- ^ «Парень из PowerShell» . thepowershellguy.com .
- ^ «Саймон Пейтон Джонс из Microsoft Research» . Майкрософт .
Внешние ссылки
[ редактировать ]оболочки Unix
[ редактировать ]- Обзор завершения Bash — «Более продуктивная работа с bash 2.x/3.x», Ян Макдональд
- Система завершения zsh, глава из руководства Z Shell.
- Заполнение и перечисление из Руководства TCSH
Интерпретаторы команд Windows
[ редактировать ](Обязательно проверьте раздел «Относится к» в каждой статье.)
- Windows Сервер 2003:
- Windows ХР
- Windows 2000/NT 4