Сравнение командных оболочек

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Командная оболочка — это компьютерная программа с интерфейсом командной строки операционной системы.

Общие характеристики[править]

Обычное окружение (или среда) Обычно вызывается Появление Платформо-независимое 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 соединения в виде потоков

Источники[править]

  1. В настоящее время доступно в соответствии под BSD-подобной лицензией через Unix Heritage Society и другие.
  2. SVr4 Bourne Shell включает в себя поддержку многобайтовых символов, позже в libc была добавлена поддержка UNICODE в качестве конкретной многобайтовой кодировки
  3. Институт инженеров электротехники и электроники 1003.1™ Standard for Information Technology — Portable Operating System Interface (POSIX®): Shell and Utilities, Issue 6. — 2001.
  4. As part of IEEE Std.1003.2-1992 (POSIX.2); integrated into IEEE Std.1003.1 with the 2001 revision.
  5. 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.
  6. Ken Greer (Oct 3 1983). "C shell with command and filename recognition/completion". net.sources. (Google Groups). Retrieved on Dec 29 2010.
  7. Ron Gomes (Jun 9 1983). "Toronto USENIX Conference Schedule (tentative)". net.usenix. (Google Groups). Retrieved on Dec 29 2010.
  8. Guy Harris (Oct 10 1983). "csh question". net.flame. (Google Groups). Retrieved on Dec 29 2010.
  9. SVr4 Korn Shell включает в себя поддержку многобайтовых символов, позже в libc была добавлена поддержка UNICODE в качестве конкретной многобайтовой кодировки
  10. 10,0 10,1 Default shell in OpenBSD is ksh (pdksh).
  11. Command extensions enabled, or «cmd /x».
  12. Windows component — covered by a valid license or Microsoft Windows
  13. Windows PowerShell is installed with Windows 7, however, it is an optional download for users of Windows Vista or Windows XP.
  14. Доступны сторонние повторные реализации, такие как DosBox, Wine и FreeDOS.
  15. MS-DOS and Windows component — covered by a valid license for MS-DOS or Microsoft Windows
  16. OS/2 component — covered by a valid license for OS/2
  17. HP OpenVMS DCL Dictionary. Архивировано из первоисточника 25 марта 2007.[недоступная ссылка] Проверено 23 марта 2009.
  18. 18,0 18,1 Many shells in *nix environments change the root user's prompt to '#'.
  19. 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. 20,0 20,1 Добавлено резидентными программами, такими как DOSKey
  21. 21,0 21,1 Доступно в DR-DOS через команду «history» в config.sys; см. эту ссылку
  22. Ограниченная поддержка через AUTOEXEC.BAT.
  23. 23,0 23,1 23,2 Handled by rio, GNU readline, editline или vrl
  24. Zsh offers an almost overwhelming variety of globbing options.
  25. PowerShell leverages the full .NET regular expression engine which features named captures, zero-width lookahead/-behind, greedy/non-greedy, character classes, level counting etc.

Литература[править]

 
Среды рабочего стола

полнофункциональные: 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

X.Org Wayland XFree86 MicroXwin Mir