Завершение командной строки

Функция программного обеспечения
Пример автодополнения командной строки в Bash .
Пример автодополнения командной строки в PowerShell с помощью Intellisense .

Автодополнение командной строки (также автодополнение клавишей 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 ↹

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

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

  • Оболочки Unix , включая Bash (оболочка по умолчанию в большинстве дистрибутивов Linux ) и ksh среди многих других, имеют давнюю традицию расширенных и настраиваемых возможностей завершения. [3]
    • Программируемое автодополнение Bashcomplete и compgenкоманды [4] доступны с бета-версии 2.04 [3] в 2000 году [5] и предлагают как минимум автодополнение имени пути и имени файла.
    • Для пользователей KornShell завершение имени файла зависит от значения переменной EDITOR. Если EDITOR установлен в vi, вы вводите часть имени, а затем , . Если EDITOR установлен в Emacs , вы вводите часть имени, а затем , .Escape\EscapeEscape
    • Оболочка Z (zsh) стала пионером в поддержке полностью программируемого завершения, позволяя пользователям автоматически завершать параметры различных команд, не связанных с самой оболочкой, что достигается путем загрузки в оболочку определений всех известных переключателей, а также соответствующих типов параметров. Это позволяет пользователю, например, вводить и завершать оболочкой только tar-архивы gzip из фактической файловой системы, пропуская файлы, несовместимые с входными параметрами. Современная установка zsh поставляется с определениями завершения для более чем пятисот команд.tar xzf Tab ↹
    • Tcsh предлагает стандартное завершение имени файла, команды и переменной, активируемое с помощью . Встроенная команда 'complete' обеспечивает полностью программируемое завершение. Исходный код поставляется с файлом 'complete.tcsh', содержащим множество примеров синтаксиса завершения.Tab ↹
  • 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 не имел автодополнения командной строки: нажатие клавиши Tab просто перемещало курсор . Однако различные расширенные оболочки для MS-DOS, такие как 4DOS , версия COMMAND.COM для FreeDOS или Enhanced DOSKEY.COM , имеют автодополнение в стиле Unix.
  • Far Manager, помимо функций управления файлами, обеспечивает историю команд и автодополнение строк для Windows.

Смотрите также

Ссылки

  1. ^ "Истоки и развитие TOPS-20". www.opost.com . Архивировано из оригинала 2020-08-01 . Получено 2006-09-10 .
  2. ^ DECSYSTEM-20 Руководство по языку ассемблера
  3. ^ ab "Работаем более продуктивно с 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". Microsoft .

Оболочки Unix

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

Интерпретаторы команд Windows

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

  • Windows Server 2003:
    1. Дополнение имени каталога
    2. Дополнение имени файла
  • Windows XP
  • Windows 2000/NT4
Взято с "https://en.wikipedia.org/w/index.php?title=Командная_строка_завершения&oldid=1190525304"