Сравнение командных оболочек
Перейти к навигации
Перейти к поиску
- Подробнее по этой теме см.: Оболочка операционной системы.
Командная оболочка — это компьютерная программа с интерфейсом командной строки операционной системы.
Общие характеристики[править]
Обычное окружение (или среда) | Обычно вызывается | Появление | Платформо-независимое | 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-10.14 | GNU, Haiku, Mac OS X |
GPL | Да (произвольные файловые дескрипторы) | |||||
csh | POSIX | csh | 1978 | SunOS | ? | 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 | ? | |||||
ksh (ksh93t+) | POSIX | ksh | 1983[7][8] | AIX, HP-UX | OpenSolaris | Common Public License | С SVr4[9] | Да (произвольные файловые дескрипторы) | ||||
pdksh | POSIX | ksh, sh | 1989 ? | OpenBSD[10] | OpenBSD[10] | Общественное достояние | Да (произвольные файловые дескрипторы) | |||||
zsh | POSIX | zsh | 1990 | Grml, GoboLinux,
macOS 10.15 |
Grml | BSD-подобная | Да (произвольные файловые дескрипторы) | |||||
ash | POSIX | sh | 1989 | Minix, BusyBox based systems | FreeBSD, NetBSD, Minix, BusyBox based systems | BSD-style | Да (произвольные файловые дескрипторы) | |||||
Windows cmd.exe[11] |
Win32, Win64 | cmd | 1993 | Windows NT, 2000, XP, Server 2003, Vista/Server 2008, Windows 7/Server 2008 R2, Windows 8/Server 2012, Windows 8.1/Server 2012 R2 | Windows NT, 2000, XP, Server 2003, Vista/Server 2008, Windows 7/Server 2008 R2, Windows 8/Server 2012, Windows 8.1/Server 2012 R2 | MS-EULA[12] | ||||||
TCC (ранее 4NT) | Win32 | ? | 1993 | ? | ? | Shareware | Да (stdin, out, err) | |||||
Windows PowerShell | .NET | powershell | 2006 | Windows Server 2008, 7, Vista, XP[13] | Windows Server 2008, 7 | Лицензия MIT | ||||||
COMMAND.COM | DOS | command | 1980 | Нет (3rd party available[14]) |
DOS, Windows 95, 98, ME | DOS, Windows 95, 98, ME | MS-EULA[15] или BSD/GPL (свободные клоны) |
Да (только stdin, out, COMn/LPT) | ||||
4DOS | DOS | ? | 1989 | ? | ? | Лицензия MIT, с ограничениями | Да (stdin, out, err) | |||||
OS/2 cmd.exe |
OS/2 | cmd | 1987 | OS/2 | OS/2 | IBM-EULA[16] | Да (stdin, out, err) | ? | ||||
rc | Plan 9, POSIX | rc | 1989 | Plan 9, Version 10 Unix | Plan 9, Version 10 Unix | Lucent Public License | ||||||
BeanShell | Java | bsh | 2005 | ? | ? | LGPL | ? | Да (bsh.jar) | ||||
Python shell | Python | python, ipython | 1991 | ? | ? | Python | ? | Да, на Windows через py2exe | ||||
Ruby shell | Ruby | irb | 1995 | ? | ? | Ruby, BSD | 1.9: Да 1.8: ограниченно |
? | Да с помощью rubyscript2exe.rb | |||
VMS DCL[17] | OpenVMS | ? | 1977 ? | VMS | VMS | ? | Да (присваивание sys$input, sys$output) | |||||
Обычное окружение (или среда) | Обычно вызывается | Introduced | Платформо-независимое | Default login shell in | Default script shell in | Лицензия | Unicode | Перенаправление потоков | Встроенная поддержка CIM/WBEM | Блокирование неподписанных скриптов | доступно как статически связанный, один независимый исполняемый файл |
Интерактивные возможности[править]
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[18] | 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 | ? | $ | Да (переменная: $PS1) | ||||||||||
zsh | Да (расширяемое) | (опционально) |
<hostname>% | Да (переменная: $PS1, и больше) | |||||||||
ash | $ | Да (переменная: $PS1) | |||||||||||
Windows cmd.exe |
(частично) | Да (F7) | Да (F8) | <path>> | Да (переменная окружения: %PROMPT%) | Да ("macros", через doskey) | |||||||
TCC (ранее 4NT) | (частично) | [<path>] | Да (переменная окружения: %PROMPT) | ? | Да (4start) | ||||||||
Windows PowerShell | Да (extendable) | Да (all location types)[19] | Да (F8) | PS <path>> | Да (функция: prompt) | ||||||||
COMMAND.COM | [20][21] | [20][21] | <path or drive name>> | Да (переменная окружения: %PROMPT%) | Да (используя SET или реестр) | Нет[22] | |||||||
4DOS | <path>> | Да (переменная окружения: %PROMPT) | ? | Да (4start) | |||||||||
OS/2 cmd.exe |
? | ? | [<path>] | Да (переменная окружения: %PROMPT%) | |||||||||
rc | [23] | ? | [23] | [23] | term%, ; | Да (функция: prompt, или переменная: $prompt) | Да (функции) | Handled by rio | |||||
BeanShell | ? | ? | bsh % | Да (переменная: bsh.prompt, или метод: getBshPrompt()) | ? | ? | ? | Да (.bshrc) | |||||
Python shell | Да (предоставляется модулем rlcompleter или IPython) | Да (предоставляется IPython) | Да (предоставляется IPython) | >>> | Да (переменная: sys.ps1) | Да (функции) | ? | Да ($PYTHONSTARTUP или ipythonrc) | |||||
Ruby shell | Да (передать блок методу Dir.chdir()) | Да (with UtilityBelt gem) | irb(main):001:0> | ? | Да (.irbrc) | ||||||||
VMS DCL | $ | Да (команда SET PROMPT) | Да (login.com) | ||||||||||
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[18] | Custom command prompt | Aliases | Binary prefix notation | Job control | Startup scripts |
Программные возможности[править]
Функции | Обработка исключений | Поиск и замена по переменным | Параллельное присваивание | Variadic functions | Аргументы по умолчанию | Именованные параметры | Лямбда-функции | функция eval | Генератор псевдослучайных чисел | Байт-код | |
---|---|---|---|---|---|---|---|---|---|---|---|
Bourne shell | Да с SVr2 | Да (via trap) | С SVr2 | ||||||||
POSIX shell | Да (via trap) | ||||||||||
bash (v4.0) | Да (via trap) | Да (через ${//} синтаксис) | Да ($RANDOM) | ||||||||
csh | |||||||||||
tcsh | Да (через ${:s//} синтаксис | ||||||||||
Scsh | ? | Да (через строковые функции и регулярные выражения) | Да (random-integer, random-real) | Да (компилятор представляет собой Scheme48 виртуальную машину, "scshvm") | |||||||
ksh (ksh93t+) | Да (via trap) | Да (через ${//} синтаксис и встроенные команды) | ? | Да (для определяемых пользователем "типов") | Да ($RANDOM) | Да (компилятор называется "shcomp") | |||||
pdksh | Да (via trap) | ? | Да ($RANDOM) | ||||||||
zsh | Да (через ${:s//} и ${//} синтаксис) | ? | Да ($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[ ]) | ? | ? | Да (функция %@random[ ]) | |||||||
OS/2 cmd.exe |
|||||||||||
rc | ? | ? | |||||||||
BeanShell | ? | ? | |||||||||
Python shell | Да (через строковые методы и регулярные выражения) | Да (стандартный CPython, IronPython или Jython) | |||||||||
Ruby shell | Да (через строковые функции и регулярные выражения) | Да (NetRuby, JRuby, version 1.9/YARV) | |||||||||
VMS DCL | |||||||||||
Функции | Обработка исключений | Поиск и замена по переменным | Параллельное присваивание | Variadic functions | Аргументы по умолчаниюs | Именованные параметры | Лямбда-функции | функция eval | Генератор псевдослучайных чисел | Байт-код |
Поиск соответствий строк и имён файлов[править]
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[24]) |
(**/… or ***/… для следования по символическим ссылкам) | ||
ash | ||||
Windows cmd.exe |
(через команду findstr /r) | Да (*, ?) | ? | |
TCC (ранее 4NT) | Ограниченная поддержка | Да (*, ?, [...]) | ? | (через FOR /R) |
Windows PowerShell | Да (полная поддержка регулярных выражений)[25] | Да (*, ?, [...]) | ? | ? |
COMMAND.COM | Да (*, ?) | ? | ||
4DOS | Да (*, ?, [...]) | ? | (через FOR /R) | |
OS/2 cmd.exe |
Да (*, ?) | ? | ? | |
rc | ||||
BeanShell | ? | ? | ? | |
Python shell | Да (через модуль glob) | Да (через модуль glob) | ||
Ruby shell | Да (через метод Dir.glob()) | ? | Да (через метод 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 | текст | ? | ? | ? | |
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) | ? | Ограниченно, через %@execstr[ ] и %@exec[ ] | |
Windows PowerShell | объекты concurrent |
||||
COMMAND.COM | текст sequential временные файлы |
||||
4DOS | текст sequential временные файлы |
Да (через команду FOR /F) | ? | Ограниченно, через %@execstr[ ] и %@exec[ ] | |
OS/2 cmd.exe |
текст concurrent |
? | |||
rc | текст concurrent |
Да (через: <{cmd} если система поддерживает /dev/fd/<n>) | |||
BeanShell | не поддерживается | ? | ? | ? | |
Python shell | объекты (при использовании IPython+IPipe) | Да (через модуль subprocess) | |||
Ruby shell | не поддерживается | Да (Backtick: `) | |||
VMS DCL | текст (через команду PIPE) |
Да (spawn) | Да (server TCP only) | ||
Pipes | Подстановка команд | Подстановка процессов | Подоболочки | TCP/UDP соединения в виде потоков |
Источники[править]
- ↑ В настоящее время доступно в соответствии под BSD-подобной лицензией через Unix Heritage Society и другие.
- ↑ SVr4 Bourne Shell включает в себя поддержку многобайтовых символов, позже в libc была добавлена поддержка UNICODE в качестве конкретной многобайтовой кодировки
- ↑ Институт инженеров электротехники и электроники 1003.1™ Standard for Information Technology — Portable Operating System Interface (POSIX®): Shell and Utilities, Issue 6. — 2001.
- ↑ 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 в качестве конкретной многобайтовой кодировки
- ↑ 10,0 10,1 Default shell in OpenBSD is ksh (pdksh).
- ↑ Command extensions enabled, or «cmd /x».
- ↑ Windows component — covered by a valid license or Microsoft Windows
- ↑ 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. Архивировано из первоисточника 25 марта 2007.[недоступная ссылка] Проверено 23 марта 2009.
- ↑ 18,0 18,1 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
- ↑ 20,0 20,1 Добавлено резидентными программами, такими как DOSKey
- ↑ 21,0 21,1 Доступно в DR-DOS через команду «history» в config.sys; см. эту ссылку
- ↑ Ограниченная поддержка через AUTOEXEC.BAT.
- ↑ 23,0 23,1 23,2 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.
Литература[править]
- Нейл Ботвик Сравнение: командные оболочки (русский) // Linux Format. — СПб.: 2007. — № 6 (93). — С. 18—23.
![]() ↑ [+] | |
---|---|
Среды рабочего стола |
полнофункциональные: KDE • GNOME • облегчённые: Trinity • CDE • MATE • Xfce • Étoilé • минималистичные: EDE • LXDE • LXQt • ROX • оболочки: Unity • GNOME Shell • Cinnamon • KDE Plasma |
Менеджеры окон |
Композитные: Compiz • KWin • Metacity • Xfwm • Фреймовые: awesome • dwm • i3 • PWM • Subtle • Ion • wmii • ratpoison • xmonad • Стековые: amiwm • Enlightenment • Openbox • Fluxbox • Blackbox • twm • IceWM • JWM • FVWM |
Командные оболочки |
ash • Bash • BusyBox • csh • dash • es shell • fish • ksh • psh • rc • rsh • Sash • Scsh • sh • tcsh • Thompson shell • xsh • zsh • прочие… • сравнение… |
X Window System |