Сравнение командных оболочек
Перейти к навигации
Перейти к поиску
- Подробнее по этой теме см.: Оболочка операционной системы.
Командная оболочка — это компьютерная программа с интерфейсом командной строки операционной системы.
Общие характеристики[править]
| Обычное окружение (или среда) | Обычно вызывается | Появление | Платформо-независимое | 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 | |