Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску
Пример завершения командной строки в Bash .
Пример завершения командной строки в PowerShell с Intellisense .

Завершение командной строки (также завершение табуляции ) - обычная функция интерпретаторов командной строки , в которых программа автоматически заполняет частично набранные команды.

Интерпретаторы командной строки - это программы, которые позволяют пользователю взаимодействовать с базовой операционной системой, вводя команды в командной строке с помощью интерфейса командной строки (CLI), в отличие от наведения указателя мыши и щелчка мышью в графическом интерфейсе пользователя (GUI). Завершение командной строки позволяет пользователю ввести несколько первых символов команды, программы или имени файла и нажать клавишу завершения (обычно Tab ↹), чтобы заполнить оставшуюся часть элемента. Затем пользователь нажимает Returnили, ↵ Enterчтобы запустить команду или открыть файл.

Автозавершение командной строки полезно по-разному, как показано на анимации, сопровождающей эту статью. Обычно используемые команды, особенно с длинными именами, требуют меньшего количества нажатий клавиш. Команды с длинными или трудными для написания именами файлов могут быть введены путем ввода нескольких первых символов и нажатия клавиши завершения, которая завершает команду или имя файла. В случае нескольких возможных завершений некоторые интерпретаторы командной строки, особенно оболочки Unix, будут перечислять все возможные завершения, начинающиеся с этих нескольких символов. Пользователь может ввести больше символов и нажатьTab ↹снова, чтобы увидеть новый, суженный список, если набранные символы все еще неоднозначны, или же завершите команду / имя файла с конечным пробелом. Альтернативная форма завершения перебирает все результаты сопоставления, когда ввод неоднозначен.

Завершаемые элементы могут включать команды, аргументы, имена файлов и другие сущности, в зависимости от конкретного интерпретатора и его конфигурации. Автозавершение командной строки обычно работает только в интерактивном режиме . То есть его нельзя вызвать для выполнения частично набранных команд в сценариях или пакетных файлах , даже если завершение однозначно. Завершение имени табуляцией происходит из-за того, что завершение командной строки часто вызывается нажатием клавиши табуляции .

История [ править ]

Автозавершение вкладок появилось рано в истории вычислений; один из первых примеров появился в системе разделения времени Беркли для SDS 940 , где, если типизированная строка была неоднозначной, интерпретатор ничего не делал бы, но если бы строка не была неоднозначной, он автоматически завершал бы ее без какой-либо команды от пользователя. Эта функция плохо работала со слишком частыми опечатками , и это было неоднозначным преимуществом. Эту функцию имитировали разработчики Tenex , которые внесли важное изменение: Tenex использовал «распознавание выхода», при котором интерпретатор не будет пытаться выполнить автозаполнение, если не будет нажата клавиша escape.был поражен (отсюда и название) пользователем. Домен также был расширен от только имен программ в системе Беркли до имен программ и файлов в Tenex. [1] Потомок Tenex, TOPS-20, переместил автозавершение командной строки из командного интерпретатора в операционную систему через системный вызов COMND JSYS, чтобы сделать его доступным для других пользовательских приложений. [2] Оттуда он был заимствован Unix.

Пример [ править ]

Чтобы открыть файл введение к командно-линии completion.html с Firefox одним напечатали бы:

 Введение в firefox в командной строке-завершение.html

Это длинная команда для ввода. Вместо этого мы можем использовать завершение из командной строки.

Подсказка о завершении [ править ]

В следующем примере показано, как завершение командной строки работает в Bash . Другие оболочки командной строки могут работать несколько иначе.

Сначала мы набираем первые три буквы нашей команды:

 ель

Затем мы нажимаем Tab ↹и, поскольку единственная команда в нашей системе, которая начинается с «ели», - это «firefox», она будет завершена до:

 Fire Fox

Затем начинаем набирать имя файла:

 Firefox я

Но на этот раз Introduction-to-command-line-completion.html - не единственный файл в текущем каталоге, который начинается с «i». В каталоге также находятся файлы Introduction-to-bash.html и Introduction -to-firefox.html . Система не может решить, какое из этих имен файлов мы хотим ввести, но она знает, что файл должен начинаться с «Introduction-to-», поэтому команда будет завершена до:

 Введение в firefox

Теперь набираем "c":

 Введение в firefox-to-c

После нажатия Tab ↹будет завершено полное имя файла:

 Введение в firefox в командной строке-завершение.html

Вкратце мы набрали:

пихта Tab ↹я Tab ↹сTab ↹

Это всего восемь нажатий клавиш, что значительно меньше 52 нажатий клавиш, которые нам потребовались бы для ввода без использования завершения командной строки.

Чередование завершения [ править ]

В следующем примере показано, как завершение из командной строки работает с чередующимся завершением, например, в CMD Windows .

Мы следуем той же процедуре, что и при запросе на завершение, пока не получим:

 Firefox я

Нажимаем Tab ↹один раз, с результатом:

 Введение в firefox-to-bash.html

Нажимаем еще Tab ↹раз, получая:

 Введение в firefox в командной строке-завершение.html

Вкратце мы набрали:

пихта Tab ↹яTab ↹Tab ↹

Это всего семь нажатий клавиш, сравнимых с завершением в стиле подсказки. Это работает лучше всего, если мы знаем, какие возможности будет использовать интерпретатор.

Завершение в разных интерфейсах командной строки [ править ]

  • Оболочки Unix , включая Bash (оболочка по умолчанию в большинстве дистрибутивов Linux и Mac OS X ) и ksh среди многих других, имеют давнюю традицию расширенных и настраиваемых возможностей завершения. [3]
    • Программируемое завершение Bashcomplete и compgenкоманды [4] были доступны с бета-версии 2.04 [3] в 2000 [5] и предлагают, по крайней мере, завершение имени пути и имени файла.
    • Для пользователей KornShell завершение имени файла зависит от значения переменной EDITOR. Если РЕДАКТОР установлено значение VI, вы набираете часть имени, а затем Escape, \. Если РЕДАКТОР установлен в Emacs , вы набираете часть имени, а затем Escape, Escape.
    • Z оболочки (ЗШ) инициатор поддержки полностью программируемое завершение, что позволяет пользователям иметь оболочку автоматически завершат параметры различных команд , не относящиеся к самой оболочке, что достигается путем заливки оболочки с определениями всех известных переключателей , а также в зависимости от обстоятельств типы параметров. Это позволяет пользователю, например, ввести tar xzf }} и заставить оболочку заполнять только tar- архивы gzip из реальной файловой системы, пропуская файлы, несовместимые с входными параметрами. Современная установка zsh поставляется с определениями завершения для более пятисот команд. Tab ↹
    • Tcsh предлагает автоматическое завершение имени файла, команды и переменной по умолчанию, активируемое с помощью Tab ↹. Встроенная команда complete обеспечивает полностью программируемое завершение. Исходный код поставляется с файлом complete.tcsh, содержащим множество примеров его синтаксиса завершения.
  • Windows PowerShell , расширяемая командная оболочка от Microsoft, основанная на объектно-ориентированном программировании и платформе Microsoft .NET , предоставляет мощные и настраиваемые возможности завершения, аналогичные традиционным оболочкам Unix. [6] [7] [ необходима ссылка ]
  • Cmd.exe команды процессор Windows NT систем на основе поддерживает основные завершения. Можно использовать отдельную привязку клавиш только для сопоставления имен каталогов.
  • cmd.exe / F: ON включает символы завершения имен файлов и каталогов (по умолчанию ^ F и ^ D). Используйте cmd.exe /? за дополнительной информацией.
  • TweakUI можно использовать для настройки ключей, используемых для завершения имени файла и имени каталога. [8]
  • В командном процессоре MS-DOS COMMAND.COM не было завершения командной строки: нажатие клавиши табуляции просто перемещало курсор . Однако различные улучшенные оболочки для MS-DOS, такие как 4DOS , версия COMMAND.COM для FreeDOS или Enhanced DOSKEY.COM, имеют функцию завершения по табуляции в стиле Unix.
  • Far Manager помимо функций управления файлами обеспечивает историю команд и завершение строк для Windows.

См. Также [ править ]

  • Автозаполнение
  • Интерфейс командной строки
  • Сравнение командных оболочек
  • Оболочка

Ссылки [ править ]

  1. ^ «Истоки и развитие ТОПС-20» . www.opost.com .
  2. ^ Руководство по языку ассемблера DECSYSTEM-20
  3. ^ a b «Более продуктивная работа с bash 2.x / 3.x» . www.caliban.org .
  4. ^ "Справочное руководство по Bash" . tiswww.case.edu .
  5. ^ "Индекс / gnu / bash" . ftp.swin.edu.au .
  6. ^ "Парень PowerShell" . thepowershellguy.com .
  7. ^ "Парень PowerShell" . thepowershellguy.com .
  8. ^ «Саймон Пейтон Джонс из Microsoft Research» .

Внешние ссылки [ править ]

Оболочки Unix [ править ]

  • Обзор завершения Bash - «Более продуктивная работа с bash 2.x / 3.x», Ян Макдональд
  • Система завершения zsh, глава из руководства Z Shell
  • Завершение и листинг из Руководства TCSH

Интерпретаторы команд Windows [ править ]

(Обязательно проверьте раздел «Применимо к» в каждой статье)

  • Windows Server 2003:
    1. Завершение имени каталога
    2. Завершение имени файла
  • Windows XP
  • Windows 2000 / NT 4