stringtranslate.com

Интерфейс командной строки

Снимок экрана примера сеанса Bash в терминале GNOME 3, Fedora 15.
Снимок экрана Windows PowerShell 1.0, работающей в Windows Vista

Интерфейс командной строки ( CLI ) — это средство взаимодействия с компьютерной программой путем ввода строк текста, называемых командными строками . Интерфейсы командной строки появились в середине 1960-х годов на компьютерных терминалах как интерактивная и более удобная альтернатива неинтерактивному интерфейсу, доступному с перфокартами .

Сегодня большинство пользователей компьютеров полагаются на графические пользовательские интерфейсы («GUI») вместо CLI. Однако многие программы и утилиты операционной системы не имеют графического пользовательского интерфейса и предназначены для использования через интерфейс командной строки.

Знание CLI также полезно для написания скриптов . Программы с интерфейсом командной строки обычно легко автоматизировать с помощью сценариев, поскольку командные строки, представляющие собой простые строки текста, легко указать в коде.

Интерфейсы командной строки становятся возможными благодаря интерпретаторам командной строки или процессорам командной строки , которые представляют собой программы, которые читают командные строки и выполняют команды.

Альтернативы CLI включают графические интерфейсы (в первую очередь метафоры рабочего стола с указателем мыши , такие как Microsoft Windows ), текстовые меню пользовательского интерфейса (такие как DOS Shell и IBM AIX SMIT ) и сочетания клавиш .

Сравнение с графическими пользовательскими интерфейсами

Графический интерфейс пользователя с значками и окнами ( GEM 1.1 Desktop ).

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

Для системы командной строки могут потребоваться бумажные или онлайн-руководства для справки, хотя часто опция «помощь» обеспечивает краткий обзор параметров команды. Среда командной строки может не обеспечивать графические улучшения, такие как различные шрифты или расширенные окна редактирования, имеющиеся в графическом интерфейсе. Новому пользователю может быть сложно ознакомиться со всеми доступными командами и опциями по сравнению со значками и раскрывающимися меню графического пользовательского интерфейса без обращения к руководствам.

Типы

Интерфейсы командной строки операционной системы

CommandShell от Apple Computer в A/UX 3.0.1

Интерфейсы командной строки операционной системы (ОС) обычно представляют собой отдельные программы, поставляемые вместе с операционной системой. Программу, реализующую такой текстовый интерфейс, часто называют интерпретатором командной строки, командным процессором или оболочкой .

Примеры интерпретаторов командной строки включают DIGITAL Command Language (DCL) DEC в OpenVMS и RSX-11 , различные оболочки Unix ( sh , ksh , csh , tcsh , zsh , Bash и т. д.), CCP CP/M , DOS . COMMAND.COM , а также программы OS/2 и Windows CMD.EXE , причем последние группы в значительной степени основаны на интерфейсах командной строки DEC RSX-11 и RSTS . В большинстве операционных систем можно заменить программу оболочки по умолчанию альтернативными вариантами; примеры включают 4DOS для DOS, 4OS2 для OS/2 и 4NT / Take Command для Windows.

Хотя термин «оболочка» часто используется для описания интерпретатора командной строки, строго говоря, «оболочкой» может быть любая программа, образующая пользовательский интерфейс, включая полностью графически ориентированные. Например, графический интерфейс Windows по умолчанию — это программа оболочки с именем EXPLORER.EXE , как определено в строке SHELL=EXPLORER.EXE в файле конфигурации WIN.INI. Эти программы являются оболочками, а не интерфейсом командной строки.

Интерфейсы командной строки приложения

Графический интерфейс GNU Octave с интерфейсом командной строки

Прикладные программы (в отличие от операционных систем) также могут иметь интерфейсы командной строки.

Прикладная программа может не поддерживать ни один, ни один, ни все из этих трех основных типов механизмов интерфейса командной строки:

Некоторые приложения поддерживают CLI, предоставляя пользователю собственную подсказку и принимая командные строки. Другие программы поддерживают как CLI, так и GUI. В некоторых случаях графический интерфейс представляет собой просто оболочку отдельного исполняемого файла CLI . В других случаях программа может предоставлять CLI в качестве дополнительной альтернативы графическому интерфейсу. Интерфейсы командной строки и графические интерфейсы часто поддерживают разные функции. Например, все функции MATLAB , компьютерной программы численного анализа , доступны через CLI, тогда как графический интерфейс MATLAB предоставляет только подмножество функций.

В Colossal Cave Adventure 1975 года пользователь использует интерфейс командной строки, чтобы ввести одно или два слова для исследования системы пещер.

История

Интерфейс командной строки развился из формы общения, осуществляемой людьми через телетайпы (TTY). Иногда это включало отправку приказа или подтверждения по телексу . Ранние компьютерные системы часто использовали телетайп как средство взаимодействия с оператором.

Механический телетайп был заменен «стеклянным терминалом» , клавиатурой и экраном, имитирующим телетайп. «Умные» терминалы допускали дополнительные функции, такие как перемещение курсора по всему экрану или локальное редактирование данных на терминале для передачи на компьютер. Поскольку революция микрокомпьютеров заменила традиционную архитектуру разделения времени (миникомпьютер + терминалы) , аппаратные терминалы были заменены эмуляторами терминалов — программным обеспечением для ПК, которое интерпретировало сигналы терминала, передаваемые через последовательные порты  ПК . Обычно они использовались для сопряжения новых ПК организации с существующими мини- или мейнфреймами или для соединения ПК с ПК. На некоторых из этих компьютеров было установлено программное обеспечение Bulletin Board System .

Интерфейсы командной строки ранних операционных систем были реализованы как часть программ резидентного мониторинга , и их было нелегко заменить. Первая реализация оболочки в качестве сменного компонента была частью операционной системы разделения времени Multics . [1] В 1964 году сотрудник вычислительного центра Массачусетского технологического института Луи Пузен разработал инструмент RUNCOM для выполнения командных сценариев с возможностью замены аргументов. [2] Пузен придумал термин « оболочка » для описания техники использования команд наподобие языка программирования и написал статью о том, как реализовать эту идею в операционной системе Multics . [3] Пузен вернулся в родную Францию ​​в 1965 году, а первая оболочка Multics была разработана Глендой Шредер . [2]

Взаимодействие оболочки Bourne в Unix версии 7

Первая оболочка Unix , оболочка V6 , была разработана Кеном Томпсоном в 1971 году в Bell Labs и была смоделирована по образцу оболочки Multics Шрёдера. [4] [5] Оболочка Bourne была представлена ​​в 1977 году в качестве замены оболочки V6. Хотя он используется в качестве интерактивного интерпретатора команд, он также задумывался как язык сценариев и содержит большинство функций, которые обычно используются для создания структурированных программ. Оболочка Bourne привела к разработке оболочки KornShell (ksh), оболочки Almquist (ash) и популярной оболочки Bourne-again (или Bash). [5]

Сами ранние микрокомпьютеры были основаны на интерфейсе командной строки, таком как CP/M , DOS или AppleSoft BASIC . В 1980-х и 1990-х годах с появлением Apple Macintosh и Microsoft Windows на ПК интерфейс командной строки стал основным пользовательским интерфейсом, замененным графическим пользовательским интерфейсом . Командная строка оставалась доступной в качестве альтернативного пользовательского интерфейса, часто используемого системными администраторами и другими опытными пользователями для системного администрирования, компьютерного программирования и пакетной обработки .

В ноябре 2006 года Microsoft выпустила версию 1.0 Windows PowerShell (ранее под кодовым названием Monad ), которая объединила функции традиционных оболочек Unix с собственной объектно-ориентированной .NET Framework . MinGW и Cygwin — это пакеты с открытым исходным кодом для Windows, предлагающие Unix-подобный интерфейс командной строки. Microsoft предоставляет реализацию ksh оболочки MKS Korn от MKS Inc. для Windows через надстройку Services for UNIX .

С 2001 года операционная система Macintosh macOS основана на Unix-подобной операционной системе под названием Darwin . На этих компьютерах пользователи могут получить доступ к Unix-подобному интерфейсу командной строки, запустив программу эмулятора терминала под названием Terminal , которая находится в подпапке «Утилиты» папки «Приложения», или удаленно войдя в систему с помощью ssh . Оболочка Z — оболочка по умолчанию для macOS; Также предоставляются Bash, tcsh и KornShell . До macOS Catalina по умолчанию использовался Bash.

Применение

Интерфейс командной строки используется всякий раз, когда большой словарь команд или запросов в сочетании с широким (или произвольным) набором параметров может быть введен быстрее в виде текста, чем с помощью чистого графического интерфейса. Обычно это происходит с командными оболочками операционной системы . Интерфейсы командной строки также используются системами, у которых недостаточно ресурсов для поддержки графического пользовательского интерфейса. Некоторые системы компьютерного языка (такие как Python , Forth , LISP , Rexx и многие диалекты BASIC ) предоставляют интерактивный режим командной строки, позволяющий быстро оценить код.

Интерфейсы командной строки часто используются программистами и системными администраторами в инженерной и научной среде, а также технически продвинутыми пользователями персональных компьютеров. Интерфейсы командной строки также популярны среди людей с ограниченными возможностями по зрению, поскольку команды и ответы могут отображаться с помощью обновляемых дисплеев Брайля .

Анатомия оболочки CLI

Общий шаблон интерфейса командной строки [6] [7] таков:

Подсказка команды param1 param2 param3 … paramN

В этом формате разделителями между элементами командной строки являются пробелы , а разделителем конца строки является разделитель новой строки . Это широко используемое (но не универсальное) соглашение.

CLI обычно можно рассматривать как состоящий из синтаксиса и семантики . Синтаксис — это грамматика, которой должны следовать все команды . В случае операционных систем DOS и Unix определяют свой собственный набор правил, которым должны следовать все команды . В случае встроенных систем каждый поставщик, например Nortel , Juniper Networks или Cisco Systems , определяет свой собственный набор правил. Эти правила также определяют, как пользователь перемещается по системе команд. Семантика определяет, какие операции возможны, над какими данными эти операции могут выполняться и как грамматика представляет эти операции и данные — символическое значение в синтаксисе .

Два разных CLI могут согласовываться либо по синтаксису, либо по семантике, но только если они согласуются в обоих случаях, их можно считать достаточно схожими, чтобы позволить пользователям использовать оба CLI без необходимости чему-либо изучать, а также обеспечить возможность повторного использования сценариев. .

Простой интерфейс командной строки отобразит приглашение, примет «командную строку», введенную пользователем и завершенную клавишей Enter , затем выполнит указанную команду и обеспечит текстовое отображение результатов или сообщений об ошибках. Расширенные интерфейсы командной строки будут проверять, интерпретировать и расширять параметры командной строки перед выполнением указанной команды, а также, при необходимости, захватывать или перенаправлять ее выходные данные.

В отличие от кнопки или пункта меню в графическом интерфейсе, командная строка обычно является самодокументируемой и точно указывает, что именно хочет сделать пользователь. Кроме того, командные строки обычно содержат множество значений по умолчанию , которые можно изменить для настройки результатов. Полезные командные строки можно сохранить, назначив строку символов или псевдоним для представления полной команды, или можно сгруппировать несколько команд для выполнения более сложной последовательности — например, скомпилировать программу, установить ее и запустить — создавая единый объект. , называемый командной процедурой или сценарием, который сам по себе можно рассматривать как команду. Эти преимущества означают, что пользователю необходимо определить сложную команду или серию команд только один раз, поскольку их можно сохранить и использовать снова.

Команды, передаваемые оболочке CLI, часто имеют одну из следующих форм:

где doSomething — это, по сути, глагол , как наречие (например, должна ли команда выполняться «многословно» или «тихо») и toFiles — объект или объекты (обычно один или несколько файлов), на которые должна действовать команда. В третьем примере — это оператор перенаправления , сообщающий интерпретатору командной строки отправлять вывод команды не на его собственный стандартный вывод (экран), а в указанный файл. Это перезапишет файл. Использование перенаправит вывод и добавит его в файл. Другой оператор перенаправления — это вертикальная черта ( ), которая создает конвейер , в котором выходные данные одной команды становятся входными данными для следующей команды.>>>|

CLI и защита ресурсов

Можно изменить набор доступных команд, изменив пути, отображаемые в переменной среды PATH . В Unix команды также необходимо помечать как исполняемые файлы. Каталоги в переменной пути просматриваются в том порядке, в котором они указаны. Изменив порядок пути, можно запустить, например, \OS2\MDOS\E.EXE вместо \OS2\E.EXE, если по умолчанию установлено обратное. Переименование исполняемых файлов также работает: люди часто переименовывают свой любимый редактор, например, в EDIT.

Командная строка позволяет ограничить доступные команды, например доступ к расширенным внутренним командам. Это делает Windows CMD.EXE . Часто условно-бесплатные программы ограничивают диапазон команд, включая вывод из командной строки команды «ваш администратор запретил запуск пакетных файлов». [ нужны разъяснения ]

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

Командная строка

Запрос BBC Micro после включения или аппаратного сброса

Командная строка (или просто приглашение ) — это последовательность (одного или нескольких) символов, используемая в интерфейсе командной строки для обозначения готовности принимать команды. Он буквально побуждает пользователя совершить действие. Приглашение обычно заканчивается одним из символов $, %, #, [8] [9] : или [10]> и часто включает в себя другую информацию, например путь к текущему рабочему каталогу и имя хоста .-

Во многих Unix и производных системах приглашение обычно заканчивается на $или %, если пользователь является обычным пользователем, но и на том #, если пользователь является суперпользователем («root» в терминологии Unix).

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

В COMMAND.COM DOS и cmd.exe в Windows NT пользователи могут изменить приглашение, введя PROMPTкоманду или напрямую изменив значение соответствующей %PROMPT% переменной среды . По умолчанию в большинстве современных систем C:\>стиль получается, например, с помощью PROMPT $P$G. По умолчанию в старых системах DOS C>используется просто PROMPT, хотя в некоторых системах это приводит к более новому C:\>стилю, если только он не используется на дисководах A: или B:; в этих системах PROMPT $N$Gможно использовать для отмены автоматического выбора по умолчанию и явного переключения на старый стиль.

Во многих системах Unix есть эта $PS1переменная (строка приглашения 1), [11] , хотя на приглашение могут влиять и другие переменные (в зависимости от используемой оболочки ). В оболочке Bash появится приглашение вида:

[ время ]  пользователь@хост:  рабочий_каталог  $

можно установить, введя команду

экспорт PS1 = '[\t] \u@\H: \W $' 

В zsh эта $RPROMPTпеременная управляет необязательной «подсказкой» в правой части экрана. Это не настоящая подсказка, поскольку место ввода текста не меняется. Он используется для отображения информации в той же строке, что и приглашение, но с выравниванием по правому краю.

В ОС RISC командная строка является *символом, и поэтому команды CLI (ОС) часто называют «командами звезды». [12] Можно также получить доступ к тем же командам из других командных строк (например, командной строки BBC BASIC ), поставив перед командой символ *.

Аргументы

Командная строка MS-DOS, иллюстрирующая разбор команды и аргументов.

Аргумент или параметр командной строки — это элемент информации, предоставляемый программе при ее запуске. Программа может иметь множество аргументов командной строки, которые определяют источники или места назначения информации или изменяют работу программы.

Когда командный процессор активен, программа обычно вызывается путем ввода его имени, за которым следуют аргументы командной строки (если таковые имеются). Например, в Unix и Unix-подобных средах пример аргумента командной строки:

rm  файл.s

«file.s» — это аргумент командной строки, который сообщает программе rm , что нужно удалить файл «file.s».

Некоторые языки программирования, такие как C , C++ и Java , позволяют программе интерпретировать аргументы командной строки, обрабатывая их как строковые параметры в основной функции . Другие языки, такие как Python , предоставляют API (функциональность) конкретной операционной системы через sys модуль , и, в частности, sys.argvдля «аргументов командной строки».

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

Параметр командной строки

Параметр командной строки или просто параметр (также известный как флаг или переключатель ) изменяет работу команды; эффект определяется программой команды. Параметры следуют за именем команды в командной строке, разделенными пробелами. Пробел перед первой опцией не всегда требуется, например, Dir/?и DIR /?в DOS, которые имеют тот же эффект [10] , что и список доступных опций команды DIR, тогда как dir --help(во многих версиях Unix) требуется , чтобы перед опцией стоял знак at хотя бы один пробел (с учетом регистра).

Формат параметров сильно различается в зависимости от операционной системы. В большинстве случаев синтаксис является соглашением, а не требованием операционной системы; вся командная строка — это просто строка, передаваемая в программу, которая может обрабатывать ее любым способом, который захочет программист, при условии, что интерпретатор может определить, где заканчивается имя команды и начинаются ее аргументы и параметры.

Несколько типичных примеров параметров командной строки, относящихся к перечислению файлов в каталоге, для иллюстрации некоторых соглашений:

Сокращение команд

В Multics параметры командной строки и ключевые слова подсистемы могут быть сокращены. Эта идея, по-видимому, заимствована из языка программирования PL/I с его сокращенными ключевыми словами (например, STRG для STRINGRANGE и DCL для DECLARE). Например, в подсистеме «форум» Multics параметр -long_subject может быть сокращенно -lgsj . Команды Multics также часто сокращаются, обычно соответствующие начальным буквам слов, которые соединяются вместе с подчеркиванием для формирования имен команд, например, использование Did для delete_iacl_dir .

В некоторых других системах сокращения являются автоматическими, например, допускается достаточное количество первых символов имени команды, чтобы однозначно идентифицировать его (например, SUсокращение для SUPERUSER), в то время как в других могут быть заранее запрограммированы некоторые конкретные сокращения (например, MDдля MKDIRCOMMAND.COM). или определяется пользователем с помощью пакетных сценариев и псевдонимов (например, alias md mkdirв tcsh ).

Соглашения об опциях в DOS, Windows, OS/2

В DOS, OS/2 и Windows разные программы, вызываемые из их COMMAND.COM или CMD.EXE (или их внутренних команд), могут использовать разный синтаксис в одной и той же операционной системе. Например:

В DOS , OS/2 и Windows наиболее распространена косая черта ( /), хотя иногда также используется дефис-минус. Во многих версиях DOS (MS-DOS/PC DOS 2.xx и выше, во всех версиях DR-DOS начиная с 5.0, а также в PTS-DOS , Embedded DOS , FreeDOS и RxDOS ) символ переключателя (иногда сокращенно Switchar или Switchchar) ), который будет использоваться, определяется значением, возвращаемым системным вызовом ( INT 21h /AX=3700h). Символ по умолчанию, возвращаемый этим API, — /, но его можно изменить на дефис-минус в вышеупомянутых системах, за исключением Datalight ROM-DOS и MS-DOS/PC DOS 5.0 и выше, которые всегда возвращаются /из этого вызова ( если не загружен один из многих доступных TSR для повторного включения функции SwitChar). В некоторых из этих систем (MS-DOS/PC DOS 2.xx, DOS Plus 2.1, DR-DOS 7.02 и выше, PTS-DOS, Embedded DOS, FreeDOS и RxDOS) этот параметр также можно предварительно настроить с помощью SWITCHAR . директива в CONFIG.SYS . Embedded DOS компании General Software предоставляет команду SWITCH для той же цели, тогда как 4DOS позволяет изменять настройку с помощью SETDOS /W:n. [13] В DR-DOS, если настройка была изменена с /, первый разделитель каталогов \при отображении параметра PROMPT$G изменится на косую черту /(которая также является допустимым разделителем каталогов в DOS, FlexOS, 4680 OS, 4690). OS, OS/2 и Windows), тем самым служа визуальной подсказкой, указывающей на изменение. [10] Кроме того, текущие настройки отображаются на встроенных экранах справки. [10] Некоторые версии DR-DOS COMMAND.COM также поддерживают токен PROMPT $/для отображения текущих настроек. COMMAND.COM, начиная с DR-DOS 7.02, также предоставляет переменную псевдосреды%/% , позволяющую писать переносимые пакетные задания. [14] [15] Некоторые внешние команды DR-DOS дополнительно поддерживают переменную среды %SWITCHAR% для отмены системных настроек.

Однако многие программы предназначены /только для использования, а не для получения настройки переключателя перед анализом аргументов командной строки. Очень небольшое количество, в основном порты из Unix-подобных систем, запрограммированы на прием «-», даже если для него не установлен символ переключателя (например, netstatи ping, поставляемый с Microsoft Windows , принимает параметр /? для вывода списка доступных параметров. , и тем не менее в списке будет указано соглашение «-»).

Соглашения об опциях в Unix-подобных системах

В Unix-подобных системах опции начинаются с дефиса-минус ASCII; новое соглашение (и GNU ) заключается в использовании двух дефисов, а затем слова (например, --create) для обозначения использования параметра, в то время как старое соглашение (и все еще доступное в качестве параметра для часто используемых параметров) заключается в использовании одного дефиса, а затем одной буквы (например, , -c); если за одним дефисом следуют две или более буквы, это может означать, что указаны две опции, или это может означать, что вторая и последующие буквы являются параметром (например, именем файла или датой) для первой опции. [16]

Два символа дефис-минус без следующих букв ( --) могут указывать на то, что остальные аргументы не следует рассматривать как параметры, что полезно, например, если имя файла начинается с дефиса или если дополнительные аргументы предназначены для внутренней команды (например, , судо ). Двойной дефис-минус также иногда используется для префикса «длинных опций», где используются более описательные имена опций. Это общая особенность программного обеспечения GNU . Функция и программа getopt , а также команда getopts обычно используются для анализа параметров командной строки.

Имена, аргументы и параметры команд Unix чувствительны к регистру (за исключением нескольких примеров, в основном когда популярные команды из других операционных систем были перенесены в Unix).

Соглашения об опционах в других системах

FlexOS , 4680 OS и 4690 OS используют -.

Обычно используется CP/M[ .

Система диалогового мониторинга (CMS) использует одну левую скобку , чтобы отделить параметры в конце команды от других аргументов. Например, в следующей команде параметры указывают, что целевой файл должен быть заменен, если он существует, а дата и время исходного файла должны быть сохранены в копии:COPY source file a target file b (REPLACE OLDDATE)

Интерфейс командной строки Data General в своих операционных системах RDOS , AOS и т. д., а также версия CLI, поставляемая с их Business Basic , использует только /символ переключателя, нечувствителен к регистру и допускает «локальные переключатели» в некоторых случаях. аргументы для управления способом их интерпретации, например, MAC/U LIB/S A B C $LPT/Lглобальная опция «U» для команды ассемблера макроса для добавления пользовательских символов, но два локальных переключателя, один для указания LIB, следует пропустить на проходе 2, а другой — для прямого вывода списка на принтер, $LPT.

Встроенная помощь по использованию

Одним из критических замечаний к CLI является отсутствие подсказок пользователю о доступных действиях. [ нужна цитация ] Напротив, графические интерфейсы обычно информируют пользователя о доступных действиях с помощью меню, значков или других визуальных подсказок. [ необходима цитация ] Чтобы преодолеть это ограничение, многие программы CLI отображают сообщение об использовании , обычно при вызове без аргументов или с одним из ?, -?, -h, -H, /?, /h, /H, /Help, -helpили --help. [10] [17] [18]

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

Хотя желательно, по крайней мере, для параметра справки, программы могут не поддерживать все начальные символы параметров, приведенные выше. В DOS, где символ опции командной строки по умолчанию может быть изменен с /на -, программы могут запрашивать API SwitChar , чтобы определить текущую настройку. Таким образом, если программа не поддерживает их все, пользователю может потребоваться знать текущие настройки даже для того, чтобы иметь возможность надежно запросить помощь. Если SwitChar был изменен на -и, следовательно, этот /символ принимается в качестве альтернативного разделителя пути также в командной строке DOS, программы могут неправильно интерпретировать такие параметры, как /hили /H, как пути, а не как параметры справки. [10] Однако, если он указан в качестве первого или единственного параметра, большинство программ DOS по соглашению примут его как запрос о помощи независимо от текущей настройки SwitChar. [10] [13]

В некоторых случаях для программы можно выбрать разные уровни помощи. Некоторые программы, поддерживающие это, позволяют указывать уровень детализации в качестве дополнительного аргумента параметра справки (например /H:1, /H:2, и т. д.) или дают лишь краткую справку по параметрам справки с вопросительным знаком и более длинный экран справки для других параметров справки. [19]

В зависимости от программы иногда доступна дополнительная или более конкретная справка по принятым параметрам путем предоставления рассматриваемого параметра в качестве аргумента параметра справки или наоборот (как в /H:Wили в /W:?(при условии, /Wчто программа поддерживает другой параметр)) . [20] [21] [18] [17] [19] [шт. 1]

Аналогично параметру help, но гораздо реже, некоторые программы предоставляют дополнительную информацию о себе (например, режим, статус, версию, автора, лицензию или контактную информацию) при вызове с параметром «о», например -!, /!, -aboutили --about. [17]

Поскольку символы ?и !обычно служат и для других целей в командной строке, они могут быть доступны не во всех сценариях, поэтому они не должны быть единственными вариантами доступа к соответствующей справочной информации.

Конец вывода команды HELP от RT-11SJ отображается на VT100.

Если необходима более подробная справка, чем та, которую предоставляет встроенная внутренняя справка программы, многие системы поддерживают специальную внешнюю команду " " (или аналогичную), которая принимает имя команды в качестве вызывающего параметра и вызывает внешнюю справочную систему.help command

В семействе DR-DOS при вводе /?или /Hв командной строке COMMAND.COM вместо самой команды будет отображаться динамически создаваемый список доступных внутренних команд; [10] 4DOS и NDOS поддерживают одну и ту же функцию путем ввода ?командной строки [13] (которая также поддерживается более новыми версиями DR-DOS COMMAND.COM); внутренние команды можно индивидуально отключить или повторно включить с помощью SETDOS /I. [13] В дополнение к этому, некоторые новые версии DR-DOS COMMAND.COM также принимают ?%команду для отображения списка доступных встроенных переменных псевдосреды . Помимо использования в качестве краткой справочной информации, его можно использовать в пакетных заданиях для запроса возможностей базового процессора командной строки. [10]

Синтаксис описания команды

Встроенная справка по использованию и страницы руководства обычно используют небольшой синтаксис для описания допустимой формы команды: [22] [23] [24] [nb 2]

Обратите внимание, что эти символы имеют другое значение, чем при использовании непосредственно в оболочке. Угловые скобки можно опускать, если вероятность перепутать имя параметра с строкой литерала мала.

Космический персонаж

Во многих областях вычислений, но особенно в командной строке, символ пробела может вызвать проблемы, поскольку он выполняет две разные и несовместимые функции: как часть команды или параметра или как параметр или разделитель имени . Неоднозначность можно предотвратить либо путем запрета вложенных пробелов в именах файлов и каталогов в первую очередь (например, путем замены их символами подчеркивания _ ), либо путем заключения имени со встроенными пробелами между символами кавычек или использования escape-символа перед пробелом, обычно обратная косая черта ( \). Например

Long path/Long program name Parameter one Parameter two

неоднозначно (является ли «имя программы» частью имени программы или двумя параметрами?); однако

Long_path/Long_program_name Parameter_one Parameter_two…,
LongPath/LongProgramName ParameterOne ParameterTwo…,
"Long path/Long program name" "Parameter one" "Parameter two"

и

Long\ path/Long\ program\ name Parameter\ one Parameter\ two

не являются двусмысленными. Операционные системы на базе Unix сводят к минимуму использование встроенных пробелов, чтобы свести к минимуму потребность в кавычках. В Microsoft Windows часто приходится использовать кавычки, поскольку вложенные пробелы (например, в именах каталогов) являются обычным явлением.

Интерпретатор командной строки

Хотя большинство пользователей думают об оболочке как об интерактивном интерпретаторе команд, на самом деле это язык программирования, в котором каждый оператор запускает команду. Поскольку он должен удовлетворять как интерактивным, так и программным аспектам выполнения команд, это странный язык, сформированный как историей, так и дизайном.

Термин «интерпретатор командной строки» ( CLI ) применяется к компьютерным программам , предназначенным для интерпретации последовательности строк текста, который может быть введен пользователем, прочитан из файла или другого типа потока данных . Контекст интерпретации обычно представляет собой конкретную операционную систему или язык программирования .

Интерпретаторы командной строки позволяют пользователям очень эффективно (и часто кратко) вводить различные команды. Для этого пользователю необходимо знать имена команд и их параметров, а также синтаксис интерпретируемого языка .

Механизм Unix #!и команда EXTPROC OS/2 облегчают передачу пакетных файлов на внешние процессоры. Эти механизмы можно использовать для написания конкретных командных процессоров для специального использования и обработки внешних файлов данных, которые находятся в пакетных файлах.

Многие графические интерфейсы, такие как Менеджер презентаций OS/2 и ранние версии Microsoft Windows, используют командные строки для вызова вспомогательных программ для открытия документов и программ. Команды хранятся в графической оболочке [ необходимы пояснения ] или в таких файлах, как реестр или файл OS/2 OS2USER.INI .

История ранних веков

Клавиатура телетайпа Teletype Model 33 ASR со считывателем перфоленты и перфоратором.
Терминал DEC VT52

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

Начиная с 1960-х годов взаимодействие пользователя с компьютерами осуществлялось в основном посредством интерфейсов командной строки, сначала на таких машинах, как Teletype Model 33 ASR, а затем на ранних компьютерных терминалах на базе ЭЛТ , таких как VT52 .

Все эти устройства были чисто текстовыми, без возможности отображать графику или изображения. [nb 3] Для бизнес -приложений использовались текстовые меню , но для более общего взаимодействия интерфейсом была командная строка.

Примерно в 1964 году Луи Пузен представил концепцию и название оболочки в Multics , основываясь на более ранних, более простых возможностях совместимой системы разделения времени (CTSS). [26] [ нужен лучший источник ]

С начала 1970-х годов операционная система Unix адаптировала концепцию мощной среды командной строки и представила возможность передавать выходные данные одной команды в качестве входных данных для другой. В Unix также была возможность сохранять и повторно запускать строки команд в виде « сценариев оболочки », которые действовали как пользовательские команды.

Командная строка была также основным интерфейсом для первых домашних компьютеров, таких как Commodore PET , Apple II и BBC Micro  – почти всегда в форме интерпретатора BASIC . Когда появились более мощные микрокомпьютеры, ориентированные на бизнес, с компьютерами CP/M и более поздними версиями DOS , такими как IBM PC , командная строка начала заимствовать некоторые синтаксисы и функции оболочек Unix, такие как подстановка и конвейеризация вывода.

Командная строка впервые столкнулась с серьезным вызовом со стороны подхода PARC GUI , использованного в Apple Lisa 1983 года и Apple Macintosh 1984 года . Некоторые пользователи компьютеров использовали графические интерфейсы, такие как GEOS и Windows 3.1, но большинство пользователей IBM PC не заменяли оболочку COMMAND.COM графическим интерфейсом до тех пор, пока в 1995 году не была выпущена Windows 95. [27] [28]

Современное использование в качестве оболочки операционной системы

В то время как большинство неопытных пользователей компьютеров теперь используют почти исключительно графический интерфейс, более продвинутые пользователи имеют доступ к мощным средам командной строки:

Сценарии

Большинство интерпретаторов командной строки в различной степени поддерживают сценарии . (В конце концов, они являются интерпретаторами интерпретируемого языка программирования , хотя во многих случаях этот язык уникален для конкретного интерпретатора командной строки.) Они будут интерпретировать сценарии (также называемые сценариями оболочки или пакетными файлами ), написанные на языке , на котором они работают. интерпретировать. Некоторые интерпретаторы командной строки также включают механизмы интерпретатора других языков, такие как REXX , в дополнение к своим собственным, что позволяет выполнять сценарии на этих языках непосредственно внутри самого интерпретатора командной строки.

И наоборот, языки программирования сценариев , в частности те, которые имеют функцию eval (такие как REXX, Perl , Python , Ruby или Jython ), могут использоваться для реализации интерпретаторов и фильтров командной строки. Для некоторых операционных систем , особенно DOS , такой интерпретатор команд обеспечивает более гибкий интерфейс командной строки, чем поставляемый. В других случаях такой интерпретатор команд может представлять собой гибко настраиваемый пользовательский интерфейс, использующий пользовательский интерфейс и средства ввода/вывода языка.

Другие интерфейсы командной строки

Командная строка обеспечивает интерфейс между программами и пользователем. В этом смысле командная строка является альтернативой диалоговому окну . Редакторы и базы данных представляют собой командную строку, в которой могут работать альтернативные командные процессоры. С другой стороны, в командной строке могут быть параметры, открывающие диалоговое окно. Последняя версия Take Command имеет эту функцию. DBase использовала диалоговое окно для создания командных строк, которые можно было редактировать перед использованием.

Такие программы, как BASIC, diskpart , Edlin и QBASIC, предоставляют интерфейсы командной строки, некоторые из которых используют системную оболочку. Базовый смоделирован на основе интерфейса по умолчанию для 8-битных компьютеров Intel. Калькуляторы можно запускать как через командную строку, так и через диалоговый интерфейс.

Emacs предоставляет интерфейс командной строки в виде минибуфера. Команды и аргументы можно вводить с использованием стандартной поддержки редактирования текста Emacs, а выходные данные отображаются в другом буфере.

Существует ряд игр с текстовым режимом, таких как Adventure или King's Quest 1-3 , в которых пользователь набирает команды в нижней части экрана. Управлять персонажем можно, вводя такие команды, как «получить кольцо» или «посмотреть». Программа возвращает текст, который описывает, как персонаж это видит, или выполняет действие. Текстовое приключение «Автостопом по Галактике»интерактивная фантастика, основанная на одноименной книге Дугласа Адама , представляет собой игру с командной строкой в ​​стиле телетайпа.

Наиболее примечательным из этих интерфейсов является стандартный интерфейс потоков , который позволяет передавать выходные данные одной команды на вход другой. Текстовые файлы также могут служить любой цели. Это обеспечивает интерфейсы конвейеров, фильтров и перенаправления. В Unix устройства также являются файлами , поэтому обычным типом файла оболочки, используемой для stdin, stdout и stderr, является файл устройства tty .

Другой интерфейс командной строки позволяет программе оболочки запускать вспомогательные программы либо для запуска документов, либо для запуска программы. Команда обрабатывается внутри оболочки, а затем передается другой программе для запуска документа. Графический интерфейс Windows и OS/2 в значительной степени опирается на командные строки, передаваемые в другие программы – консольные или графические, которые затем обычно обрабатывают командную строку, не открывая пользовательскую консоль.

Такие программы, как редактор OS/2 E и некоторые другие редакторы IBM , могут обрабатывать командные строки, обычно предназначенные для оболочки, при этом выходные данные помещаются непосредственно в окно документа.

Поле ввода URL-адреса веб-браузера можно использовать в качестве командной строки. Его можно использовать для «запуска» веб-приложений , доступа к конфигурации браузера , а также выполнения поиска. Google , который называют «командной строкой Интернета», будет выполнять поиск по конкретному домену, когда обнаружит параметры поиска в известном формате. [36] Эта функция присутствует независимо от того, запускается ли поиск из поля браузера или на веб-сайте Google.

Существуют библиотеки JavaScript , которые позволяют писать приложения командной строки в браузере как отдельные веб-приложения или как часть более крупного приложения. [37] Примером такого веб-сайта является интерфейс CLI для DuckDuckGo . [38] Существуют также веб- приложения SSH, которые позволяют предоставлять доступ к интерфейсу командной строки сервера из браузера.

Многие видеоигры для ПК имеют интерфейс командной строки, который часто называют консолью. Обычно он используется разработчиками игр во время разработки и разработчиками модов для целей отладки, а также для мошенничества или пропуска частей игры.

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

Примечания

  1. ^ Примером является комплексная внутренняя справочная система команды DR-DOS 7.03 DEBUG , которую можно вызвать из ??командной строки отладки (а не только из ?обзора по умолчанию). Конкретные страницы справки можно выбрать через ?n(где n— номер страницы). Кроме того, справку по конкретным командам можно отобразить, указав имя команды после ?, например, ?Dбудет вызываться справка по различным командам дампа (например, Dи т. д.). Некоторые из этих функций уже поддерживались DR DOS 3.41 SID86 и GEMSID.
  2. ^ Заметное отличие в описании синтаксиса команд DOS -подобных операционных систем: в документации Windows Server 2003 R2 используются курсивные буквы для «информации, которую должен предоставить пользователь», а в документации Windows Server 2008 используются угловые скобки. Курсив не может отображаться внутренним «help», при этом с угловыми скобками проблем нет.
  3. ^ За исключением артов ASCII .

Рекомендации

  1. ^ "Оболочки Unix". Архивировано из оригинала 8 ноября 2007 г. Идея наличия сменной «командной оболочки», а не «монитора», тесно интегрированного с ядром ОС, обычно приписывают Multics.
  2. ^ ab «Происхождение оболочки». www.multicians.org . Архивировано из оригинала 21 декабря 2017 г. Проверено 12 апреля 2017 г.
  3. ^ Мец, Кейд (3 января 2013 г.). «Скажи «Добрый день» давно потерянному французскому дяде Интернета». Проводной . Проверено 31 июля 2017 г.
  4. ^ Мазьер, Давид (осень 2004 г.). «МУЛЬТИКС - Первые семь лет». Продвинутые операционные системы . Стэнфордский факультет компьютерных наук. Архивировано из оригинала 23 ноября 2014 г. Проверено 1 августа 2017 г.
  5. ^ Аб Джонс, М. (6 декабря 2011 г.). «Эволюция оболочек в Linux». РазработчикWorks . ИБМ . Архивировано из оригинала 8 июля 2017 г. Проверено 1 августа 2017 г.
  6. ^ «Справочник по GNU BASH». Архивировано из оригинала 3 декабря 2010 г. Проверено 20 декабря 2015 г.
  7. ^ «Обзор командной оболочки Microsoft Windows» . Архивировано из оригинала 5 сентября 2015 г. Проверено 12 июля 2015 г.
  8. ^ Руководство пользователя SID (PDF) . Цифровые исследования . 1978. 595-2549. Архивировано (PDF) из оригинала 20 октября 2019 г. Проверено 6 февраля 2020 г.(4+69 страниц)
  9. ^ Руководство пользователя SID-86 для CP / M-86 (2-е изд.). Цифровые исследования . Август 1982 г. [март 1982 г.]. SID86UG.WS4. Архивировано из оригинала 20 октября 2019 г. Проверено 6 февраля 2020 г.[1] (Примечание. Перепечатанная версия руководства Эммануэля Роша с добавлением команд Q, SR и Z.)
  10. ^ abcdefghijk Пол, Матиас Р. (30 июля 1997 г.). «СОВЕТЫ NWDOS – советы и подсказки для Novell DOS 7, с просмотром недокументированных подробностей, ошибок и обходных путей». МПДОСТИП . Выпуск 157 (на немецком языке) (3-е изд.). Архивировано из оригинала 10 сентября 2017 г. Проверено 6 сентября 2014 г.(Примечание. NWDOSTIP.TXT — это всеобъемлющая работа по Novell DOS 7 и OpenDOS 7.01 , включая описание многих недокументированных функций и внутренних устройств. Это часть еще более обширной авторской коллекции MPDOSTIP.ZIP, которая поддерживалась до 2001 года и распространялась на многих сайтах по адресу: время. Предоставленная ссылка указывает на более старую версию файла NWDOSTIP.TXT, преобразованную в HTML.)
  11. ^ Паркер, Стив (2011). «Глава 11: Выбор и использование оболочек». Сценарии оболочки: экспертные рецепты для Linux, Bash и других систем. Программист программисту. Индианаполис, США: John Wiley & Sons . п. 262. ИСБН 978-111816632-1. Оболочка имеет четыре разные командные строки: PS1, P52, P53 и PS4. PS означает строку подсказки.
  12. ^ Руководство пользователя RISC OS 3 (PDF) . Желудь Компьютерс Лимитед . 01.03.1992. п. 125. Архивировано (PDF) из оригинала 9 января 2017 г. Проверено 12 апреля 2017 г.
  13. ^ abcd Brothers, Хардин; Роусон, Том ; Конн, Рекс К .; Пол, Матиас Р.; Дай, Чарльз Э.; Георгиев, Лучезар И. (27 февраля 2002 г.). Онлайн-справка по 4DOS 8.00 .
  14. ^ Пол, Матиас Р. (9 января 1998 г.). DELTREE.BAT R1.01 Расширенное удаление файлов и каталогов. Caldera, Inc. Архивировано из оригинала 8 апреля 2019 г. Проверено 08 апреля 2019 г.
  15. ^ DR-DOS 7.03 WHATSNEW.TXT — Изменения с DR-DOS 7.02 на DR-DOS 7.03. Кальдера, Инк. 24 декабря 1998 г. Архивировано из оригинала 08 апреля 2019 г. Проверено 08 апреля 2019 г.
  16. ^ «Синтаксис аргументов (Библиотека GNU C)» . gnu.org . Архивировано из оригинала 18 июня 2021 г. Проверено 9 июля 2021 г.
  17. ^ abc Пол, Матиас Р. (13 мая 2002 г.). «[fd-dev] mkeyb». freedos-dev . Архивировано из оригинала 10 сентября 2018 г. Проверено 10 сентября 2018 г. […] CPI /H […] CPI [@] [@] [/?|/Help[:topic]] [/!|/О программе] […] [?|&] […] /?, /Help Отобразить этот экран справки или специальную справку по теме (+) […] /!, /About Отобразить экран информации «О программе» […] /Cpifile (+) .CPI/.CP имя файла <EGA.CPI>; расширение: <.CPI>; CPI.EXE=StdIn […] /Report Имя файла отчета <''=StdOut>; расширение: <.RPT> […] /Style (+) Export <0>-6=BIN-raw/ROM/RAM/PSF0/1/SH/CHED; 7-12/13-18/19-24=ASM-hex/dec/bin/ip/il/p/l/mp/ml […] CPI /H:C […] Обзор использования параметров файла кодовой страницы: [ …] CPI /H:S […] Обзор параметров /Style: […] ?, & Режим онлайн-редактирования (запрашивает ввод дополнительных параметров) […]
  18. ^ аб Пол, Матиас Р. (9 января 2002 г.). «СИД86». Группа новостей : comp.os.cpm . Проверено 8 апреля 2018 г. […] Поскольку DEBUG DR-DOS 7.03 по-прежнему основан на старом SID86.EXE, я предлагаю запустить DEBUG 1.51 и войти в расширенную справочную систему с помощью ?? из приглашения отладки. Это даст вам восемь экранов с синтаксисом и справкой по функциям. Некоторые из этих функций также поддерживались более старыми выпусками. […]
  19. ^ аб Пол, Матиас Р.; Фринке, Аксель К. (16 января 2006 г.). FreeKEYB — расширенный международный драйвер клавиатуры и консоли для DOS (Руководство пользователя) (предварительная версия v7).
  20. ^ Интернет-документация CCI Multiuser DOS 7.22 GOLD . Concurrent Controls, Inc. (CCI). 10 февраля 1997 г. ПОМОЩЬ.HLP.(Примечание. Отладчик символических инструкций SID86 предоставляет краткий экран справки ?и подробную справку по ??.)
  21. ^ Пол, Матиас Р. (24 мая 1997 г.) [1991]. «DRDOSTIP.TXT – Советы и рекомендации для DR DOS 3.41–5.0». MPDOSTIP (на немецком языке) (47 изд.). Архивировано из оригинала 07.11.2016 . Проверено 7 ноября 2016 г.
  22. ^ «Базовые спецификации открытой группы, выпуск 7, глава 12.1 Синтаксис служебных аргументов» . Открытая группа . 2008. Архивировано из оригинала 30 апреля 2013 г. Проверено 7 апреля 2013 г.man-pages(7) –  Соглашения Linux и вспомогательное руководство (Примечание. Соглашения для описания команд в Unix-подобных операционных системах.)
  23. ^ «Обзор командной оболочки» . Справка по продукту Windows Server 2003 . Майкрософт . 21 января 2005 г. Архивировано из оригинала 12 июля 2012 г. Проверено 7 апреля 2013 г.
  24. ^ «Синтаксиальный ключ командной строки». Библиотека TechNet для Windows Server 2008 R2 . Майкрософт . 25 января 2010 г. Архивировано из оригинала 4 мая 2013 г. Проверено 7 апреля 2013 г.
  25. ^ Керниган, Брайан В .; Пайк, Роб (1984). Среда программирования UNIX . Энглвудские скалы: Прентис-Холл . ISBN 0-13-937699-2.
  26. ^ Пузен, Луи. «Происхождение ракушки». Multicians.org . Архивировано из оригинала 21 декабря 2017 г. Проверено 22 сентября 2013 г.
  27. ^ «Вспоминая запуск Windows 95 15 лет спустя» . 24 августа 2010 г. Архивировано из оригинала 18 февраля 2015 г. Проверено 18 февраля 2015 г.
  28. ^ «История Windows». windows.microsoft.com . Архивировано из оригинала 01 марта 2015 г.
  29. ^ «Совместимость оболочки Windows POSIX» . Архивировано из оригинала 3 июля 2017 г. Проверено 26 августа 2017 г.
  30. ^ "мастер - платформа/внешний/mksh - Git в Google" . android.googlesource.com . Архивировано из оригинала 21 января 2016 г. Проверено 18 марта 2018 г.
  31. ^ "Оболочка Android adb - ясень или кш?". stackoverflow.com . Архивировано из оригинала 2 июля 2017 г. Проверено 14 марта 2018 г.
  32. ^ "Источник Android sh" . Гитхаб . Архивировано из оригинала 17 декабря 2012 г.
  33. ^ «Источник панели инструментов Android» . Гитхаб .
  34. ^ «Руководство по настройке по основам конфигурации, Cisco IOS версии 15M&T» . Циско . 2013-10-30. Использование интерфейса командной строки. Архивировано из оригинала 18 ноября 2016 г. Проверено 28 ноября 2016 г. Интерфейс командной строки (CLI) Cisco IOS является основным пользовательским интерфейсом…
  35. ^ «Обзор интерфейса командной строки» . www.juniper.net . Архивировано из оригинала 8 сентября 2003 г. Проверено 14 марта 2018 г.
  36. ^ "Google странная доброта" . Архивировано из оригинала 4 марта 2014 г. Проверено 27 февраля 2014 г.
  37. ^ «Эмулятор терминала jQuery» . Архивировано из оригинала 20 апреля 2021 г. Проверено 20 апреля 2021 г.
  38. ^ "DuckDuckGo TTY" . Архивировано из оригинала 07 мая 2021 г. Проверено 20 апреля 2021 г.

Внешние ссылки