- Сравнение командных оболочек
-
Подробнее по этой теме см.: Оболочка операционной системы.
Командная оболочка — это компьютерная программа с интерфейсом командной строки операционной системы.
Содержание
Общие характеристики
Обычное окружение (или среда) Обычно вызывается Introduced Платформо-независимое Default login shell in Default script shell in Лицензия Unicode Перенаправление потоков Встроенная поддержка CIM/WBEM Блокирование неподписанных скриптов доступно как статически связанный, один независимый исполняемый файл Bourne shell 7th Ed. UNIX sh 1977 Нет 7th Ed. UNIX 7h Ed. UNIX AT&T prop.[1] С SVr4[2] Да (произвольные файловые дескрипторы) Нет Нет Да POSIX shell[3] POSIX sh 1992[4] Да N/A POSIX N/A Да, если используется настроенной локалью Да (произвольные файловые дескрипторы) Нет Нет N/A bash (v4.0) POSIX bash, sh 1989[5] Да GNU, Mac OS X 10.3+ GNU,
HaikuGPL Да Да (произвольные файловые дескрипторы) Нет Нет Да csh POSIX csh 1978 Да ? ? BSD Нет Да (stdin, out, out+err) Нет Нет Да tcsh POSIX tcsh, csh 1983[6] Да FreeBSD, ранее Mac OS X ? BSD Да Да (stdin, out, out+err) Нет Нет Да Scsh POSIX scsh 1994 Да ? ? BSD-style [[{{{1}}}|?]] Да Нет Нет Да ksh (ksh93t+) POSIX ksh 1983[7][8] Да AIX, HP-UX OpenSolaris Common Public License С SVr4[9] Да (произвольные файловые дескрипторы) Нет Нет Да pdksh POSIX ksh, sh 1989 [[{{{1}}}|?]] Да OpenBSD[10] OpenBSD[10] Общественное достояние Нет Да (произвольные файловые дескрипторы) Нет Нет Да zsh POSIX zsh 1990 Да Grml, GoboLinux Grml BSD-подобная Да Да (произвольные файловые дескрипторы) Нет Нет Да ash POSIX sh 1989 Да Minix, BusyBox based systems FreeBSD, NetBSD, Minix, BusyBox based systems BSD-style Да Да (произвольные файловые дескрипторы Нет Нет Да Windows
cmd.exe[11]Win32 cmd 1993 Нет Windows NT, 2000, XP, Server 2003, Vista Windows NT, 2000, XP, Server 2003, Vista MS-EULA[12] Да Да Нет Нет Да TCC (ранее 4NT) Win32 ? 1993 Нет ? ? Shareware Да Да (stdin, out, err) Нет Нет Нет Windows PowerShell .NET powershell 2006 No
(3rd party in dev[13])Windows Server 2008, 7, Vista, XP[14] Windows Server 2008, 7 MS-EULA[12]
или BSD/GPL (PASH)Да Да Да Да Нет COMMAND.COM DOS command 1980 Нет
(3rd party available[15])DOS, Windows 95, 98, ME DOS, Windows 95, 98, ME MS-EULA[16]
или BSD/GPL (свободные клоны)Нет Да (только stdin, out, COMn/LPT) Нет Нет Да 4DOS DOS ? 1989 Нет ? ? Лицензия MIT, с ограничениями Нет Да (stdin, out, err) Нет Нет Нет OS/2
cmd.exeOS/2 cmd 1987 Нет OS/2 OS/2 IBM-EULA[17] Нет Да (stdin, out, err) Нет Нет [[{{{1}}}|?]] rc Plan 9, POSIX rc 1989 Да Plan 9, Version 10 Unix Plan 9, Version 10 Unix Lucent Public License Да Да Нет Нет Да BeanShell Java ? 2005 Да ? ? LGPL Да Да [[{{{1}}}|?]] Нет Да (bsh.jar) Python shell Python python, ipython 1991 Да ? ? Python Да Да [[{{{1}}}|?]] Нет Да, на Windows через py2exe Ruby shell Ruby irb 1995 Да ? ? Ruby, BSD 1.9: Да
1.8: ограниченноДа [[{{{1}}}|?]] Нет Да с помощью rubyscript2exe.rb VMS DCL[18] OpenVMS ? 1977 [[{{{1}}}|?]] Нет VMS VMS ? Нет Да (присваивание sys$input, sys$output) Нет Нет Нет Интерактивные возможности
Completion Directory stack (pushd/popd) Directory History Window (popup) Implicit Directory Change — If command is dir name changes to it История команд History completion Проверка правописания Default user prompt[19] Custom command prompt Aliases Binary prefix notation Job control Startup scripts Bourne shell Нет Нет Нет Нет Нет Нет Нет $ Да (переменная: $PS1) Через функции Нет С SVr4 Да POSIX shell Нет Нет Нет Нет Да Нет Нет $ Да (переменная: $PS1) Да Нет Да Да bash (v4.0) Да (расширяемое) Да Нет Да
(опциональное)Да Да Нет bash-<version number>$ Да (переменная: $PS1) Да Нет Да Да csh Да (через клавишу ESC) Да Нет Да
(опциональное)Да Да Нет % Да (переменная: $prompt Да Нет Да Да tcsh Да (расширяемое) Да Нет Да
(опциональное)Да Да экспериментальное > Да (переменная: $prompt Да Нет Да Да Scsh Нет Нет Нет Нет Нет Нет Нет > Нет Да (macro and procedure definitions) Да Да Да ksh (ksh93t+) Да (расширяемое) Нет Нет Нет Да Да Нет $ Да (переменная: $PS1, и больше) Да Нет Да Да pdksh Да Нет Нет Нет Да [[{{{1}}}|?]] Нет $ Да (переменная: $PS1) Да Нет Да Да zsh Да (расширяемое) Да Нет Да
(опционально)Да Да Да <hostname>% Да (переменная: $PS1, и больше) Да Нет Да Да ash Нет Да Нет Нет Да Да Нет $ Да (переменная: $PS1) Да Нет Да Да Windows
cmd.exeДа (частично) Да Нет Нет Да (F7) Да (F8) Нет <path>> Да (переменная окружения: %PROMPT%) Да ("macros", через doskey) Нет Нет Да TCC (ранее 4NT) Да (частично) Да Да Да Да Да Нет [<path>] Да (переменная окружения: %PROMPT) Да [[{{{1}}}|?]] Нет Да (4start) Windows PowerShell Да (extendable) Да (all location types)[20] Да Нет Да Да (F8) Нет PS <path>> Да (функция: prompt) Да Да Да Да COMMAND.COM Нет Нет Нет Нет Нет[21][22] Нет[21][22] Нет <path or drive name>> Да (переменная окружения: %PROMPT%) Да (используя SET или реестр) Нет Нет Нет[23] 4DOS Да Да Да Да Да Да Нет <path>> Да (переменная окружения: %PROMPT) Да [[{{{1}}}|?]] Нет Да (4start) OS/2
cmd.exeДа [[{{{1}}}|?]] Нет Нет Да [[{{{1}}}|?]] Нет [<path>] Да (переменная окружения: %PROMPT%) Нет Нет Нет Нет rc Да[24] [[{{{1}}}|?]] Нет Нет Да[24] Да[24] Нет term%, ; Да (функция: prompt, или переменная: $prompt) Да (функции) Нет Handled by rio Да BeanShell Да [[{{{1}}}|?]] Нет Нет Да [[{{{1}}}|?]] Нет bsh % Да (переменная: bsh.prompt, или метод: getBshPrompt()) [[{{{1}}}|?]] [[{{{1}}}|?]] [[{{{1}}}|?]] Да (.bshrc) Python shell Да (предоставляется модулем rlcompleter или IPython) Да (предоставляется IPython) Нет Нет Да Да (предоставляется IPython) Нет >>> Да (переменная: sys.ps1) Да (функции) [[{{{1}}}|?]] Да Да ($PYTHONSTARTUP или ipythonrc) Ruby shell Да Да (передать блок методу Dir.chdir()) Нет Нет Да Да (with UtilityBelt gem) Нет irb(main):001:0> Да Да [[{{{1}}}|?]] Да Да (.irbrc) VMS DCL Нет Нет Нет Нет Да Нет Нет $ Да (команда SET PROMPT) Да Да Да Да (login.com) Программные возможности
Функции Обработка исключений Поиск и замена по переменным Параллельное присваивание Variadic functions Аргументы по умолчаниюs Именованные параметры Лямбда-функции функция eval Генератор псевдослучайных чисел Байт-код Bourne shell Да с SVr2 Да (via trap) Нет Нет С SVr2 Нет Нет Нет Да Нет Нет POSIX shell Да Да (via trap) Нет Нет Да Нет Нет Нет Да Нет Нет bash (v4.0) Да Да (via trap) Да (через ${//} синтаксис) Нет Да Да Нет Нет Да Да ($RANDOM) Нет csh Нет Нет Нет Нет Нет Нет Нет Нет Да Нет Нет tcsh Нет Нет Да (через ${:s//} синтаксис Нет Нет Нет Нет Нет Да Нет Нет Scsh Да [[{{{1}}}|?]] Да (через строковые функции и регулярные выражения) Нет Да Нет Нет Да Да Да (random-integer, random-real) Да (компилятор представляет собой Scheme48 виртуальную машину, "scshvm") ksh (ksh93t+) Да Да (via trap) Да (через ${//} синтаксис и встроенные команды) [[{{{1}}}|?]] Да Да Да (для определяемых пользователем "типов") Нет Да Да ($RANDOM) Да (компилятор называется "shcomp") pdksh Да Да (via trap) Нет [[{{{1}}}|?]] Да Да Нет Нет Да Да ($RANDOM) Нет zsh Да Да Да (через ${:s//} и ${//} синтаксис) [[{{{1}}}|?]] Да Да Нет Нет Да Да ($RANDOM) Да (встроенная команда "zcompile") ash Да Да (via trap) Нет Нет Да Да Нет Нет Да Нет Нет Windows
cmd.exeДа (через "call :label") Нет Да (via set %varname:expression syntax) Нет Нет Нет Нет Нет Нет Да (%random%) Нет TCC (ранее 4NT) Да Нет Да (через функцию %@replace[ ]) Нет Нет Нет Нет Нет Да Да (функция %@random[ ]) Нет Windows PowerShell Да Да Да (-replace operator) Да Да Да Да Да Да Да Да, автоматически COMMAND.COM Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет 4DOS Да Нет Да (через функцию %@replace[ ]) Нет [[{{{1}}}|?]] Нет [[{{{1}}}|?]] Нет Да Да (функция %@random[ ]) Нет OS/2
cmd.exeНет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет rc Да Да Нет [[{{{1}}}|?]] Да Да [[{{{1}}}|?]] Нет Да Нет Нет BeanShell Да Да [[{{{1}}}|?]] [[{{{1}}}|?]] Нет Нет Нет Нет Да Да Да Python shell Да Да Да (через строковые методы и регулярные выражения) Да Да Да Да Да Да Да Да (стандартный CPython, IronPython или Jython) Ruby shell Да Да Да (через строковые функции и регулярные выражения) Да Да Да Да Да Да Да Да (NetRuby, JRuby, version 1.9/YARV) VMS DCL Да Да Нет Нет Нет Нет Нет Нет Нет Нет Нет Поиск соответствий строк и имён файлов
Pattern Matching (regular expressions built-in) Pattern Matching (globbing) Globbing qualifiers (создание имён файлов по их атрибутам) Recursive globbing (создание файлов с любого уровня подкаталогов) Bourne shell Нет Да (*, ?, [...]) Нет Нет POSIX shell Нет Да (*, ?, [...]) Нет Нет bash (v4.0) Да Да (*, ?, [...], {...}) Нет Да (**/…) csh Нет Да Нет Нет tcsh Да Да Нет Нет Scsh Да Да Нет Нет ksh (ksh93t+) Да Да (*, ?, [...]) Нет Да (with set -G, no following of symlinks) pdksh Нет Да Нет Нет zsh Да Да (*, ?, [...],
ext'd globbing[25])Да Да (**/… or ***/… для следования по символическим ссылкам) ash Нет Да Нет Нет Windows
cmd.exeДа (через команду findstr /r) Да (*, ?) [[{{{1}}}|?]] Нет TCC (ранее 4NT) Ограниченная поддержка Да (*, ?, [...]) [[{{{1}}}|?]] Да (через FOR /R) Windows PowerShell Да (полная поддержка регулярных выражений)[26] Да (*, ?, [...]) [[{{{1}}}|?]] [[{{{1}}}|?]] COMMAND.COM Нет Да (*, ?) [[{{{1}}}|?]] Нет 4DOS Нет Да (*, ?, [...]) [[{{{1}}}|?]] Да (через FOR /R) OS/2
cmd.exeНет Да (*, ?) [[{{{1}}}|?]] [[{{{1}}}|?]] rc Нет Да Нет Нет BeanShell Да [[{{{1}}}|?]] [[{{{1}}}|?]] [[{{{1}}}|?]] Python shell Да Да Да (через модуль glob) Да (через модуль glob) Ruby shell Да Да (через метод Dir.glob()) [[{{{1}}}|?]] Да (через метод Dir.glob()) VMS DCL Нет Да Нет Да (через [SUBDIR…]) Межпроцессное взаимодействие
Pipes Подстановка команд Подстановка процессов Подоболочки TCP/UDP соединения в виде потоков Bourne shell байты
concurrentДа Нет Да Нет POSIX shell байты
concurrentДа Нет Да Нет bash (v4.0) байты
concurrentДа Да (если система поддерживает /dev/fd/<n> или именованные каналы Да Да (только клиент) csh байты
concurrentДа Нет Да Нет tcsh байты
concurrentДа Нет Да Нет Scsh текст [[{{{1}}}|?]] [[{{{1}}}|?]] [[{{{1}}}|?]] Да ksh (ksh93t+) байты
(может содержать сериализованные объекты, если используется print -C)
concurrentДа ($(...) and ${<space>...;}) Да (если система поддерживает /dev/fd/<n> Да Да (и поддержка SCTP, client only) pdksh байты
concurrentДа Нет Да Нет zsh байты
concurrentДа Да Да Да (клиент и сервер, но только TCP) ash байты
concurrentДа Нет Да Нет Windows
cmd.exeтекст
concurrentДа (via FOR /F command) Нет Да (Backtick: ` in for /f usebackq) Нет TCC (ранее 4NT) текст Да (через команду FOR /F) [[{{{1}}}|?]] Ограниченно, через %@execstr[ ] и %@exec[ ] Нет Windows PowerShell объекты
concurrentДа Нет Да Да COMMAND.COM текст
sequential
временные файлыНет Нет Нет Нет 4DOS текст
sequential
временные файлыДа (через команду FOR /F) [[{{{1}}}|?]] Ограниченно, через %@execstr[ ] и %@exec[ ] Нет OS/2
cmd.exeтекст
concurrentНет Нет [[{{{1}}}|?]] Нет rc текст
concurrentДа Да (через: <{cmd} если система поддерживает /dev/fd/<n>) Да Нет BeanShell не поддерживается [[{{{1}}}|?]] [[{{{1}}}|?]] [[{{{1}}}|?]] Да Python shell объекты (при использовании IPython+IPipe) Да Да (через модуль subprocess) Да Да Ruby shell не поддерживается Да Да Да (Backtick: `) Да VMS DCL текст
(через команду PIPE)Нет Нет Да (spawn) Да (server TCP only) Примечания
- ↑ В настоящее время доступно в соответствии под BSD-подобной лицензией через Unix Heritage Society и другие.
- ↑ SVr4 Bourne Shell включает в себя поддержку многобайтовых символов, позже в libc была добавлена поддержка UNICODE в качестве конкретной многобайтовой кодировки
- ↑ IEEE 1003.1™ Standard for Information Technology — Portable Operating System Interface (POSIX®): Shell and Utilities, Issue 6.
- ↑ As part of IEEE Std.1003.2-1992 (POSIX.2); integrated into IEEE Std.1003.1 with the 2001 revision.
- ↑ Brian Fox (forwarded by Leonard H. Tower Jr.) (Jun 7 1989). "Bash is in beta release!". gnu.announce. (Google Groups). Retrieved on Oct 28 2010.
- ↑ Ken Greer (Oct 3 1983). "C shell with command and filename recognition/completion". net.sources. (Google Groups). Retrieved on Dec 29 2010.
- ↑ Ron Gomes (Jun 9 1983). "Toronto USENIX Conference Schedule (tentative)". net.usenix. (Google Groups). Retrieved on Dec 29 2010.
- ↑ Guy Harris (Oct 10 1983). "csh question". net.flame. (Google Groups). Retrieved on Dec 29 2010.
- ↑ SVr4 Korn Shell включает в себя поддержку многобайтовых символов, позже в libc была добавлена поддержка UNICODE в качестве конкретной многобайтовой кодировки
- ↑ 1 2 Default shell in OpenBSD is ksh (pdksh).
- ↑ Command extensions enabled, or «cmd /x».
- ↑ 1 2 Windows component — covered by a valid license or Microsoft Windows
- ↑ PASH, a third-party remake, is in development and almost half-finished. Activity seems to have stagnated early 2009.
- ↑ Windows PowerShell is installed with Windows 7, however, it is an optional download for users of Windows Vista or Windows XP.
- ↑ Доступны сторонние повторные реализации, такие как DosBox, Wine и FreeDOS.
- ↑ MS-DOS and Windows component — covered by a valid license for MS-DOS or Microsoft Windows
- ↑ OS/2 component — covered by a valid license for OS/2
- ↑ HP OpenVMS DCL Dictionary. Архивировано из первоисточника 17 сентября 2012. Проверено 23 марта 2009.
- ↑ Many shells in *nix environments change the root user's prompt to '#'.
- ↑ PowerShell exposes more than just the file system as a navigable system: Windows Registry, functions, aliases, variables, certificate store, credential store etc. The location types are extensible through a provider architecture. Common commands will work with any compliant provider
- ↑ 1 2 Добавлено резидентными программами, такими как DOSKey
- ↑ 1 2 Доступно в DR-DOS через команду «history» в config.sys; см. эту сылку
- ↑ Ограниченная поддержка через AUTOEXEC.BAT.
- ↑ 1 2 3 Handled by rio, GNU readline, editline или vrl
- ↑ Zsh offers an almost overwhelming variety of globbing options.
- ↑ PowerShell leverages the full .NET regular expression engine which features named captures, zero-width lookahead/-behind, greedy/non-greedy, character classes, level counting etc.
Ссылки
Интерфейс пользователя в UNIX-подобных системах Среды рабочего стола Менеджеры окон Командные оболочки X Window System Категории:- Командные оболочки
- Сравнение программного обеспечения
Wikimedia Foundation. 2010.