Сравнение командных оболочек - Comparison of command shells
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
А командная оболочка это Интерфейс командной строки компьютерная программа в Операционная система.
Общие характеристики
Ракушка | Обычная среда | Обычно вызывается | Введено | Независимая платформа | Оболочка входа по умолчанию в | Оболочка сценария по умолчанию в | Лицензия | Доступность исходного кода | Пользовательский интерфейс | Поддержка мыши | Unicode поддерживать | ISO 8601 поддерживать | Перенаправление консоли | Транслировать перенаправление | Конфигурируемость | Скрипты запуска / завершения работы | Пакетные скрипты | логирование | доступен как статически связанный, независимый исполняемый файл с одним файлом |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Оболочка Томпсона | UNIX | ш | 1971 | Нет данных | UNIX | UNIX | Нет данных | да | На основе текста CLI | Нет | Нет | Нет данных | да | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных |
Оболочка Борна Версия 1977 года | 7-е изд. UNIX | ш | 1977 | да[1] | 7-е изд. UNIX | 7-е изд. UNIX, | Проприетарный[2] | да | На основе текста CLI | Нет | Нет | Нет данных | да | Да (произвольно fds) | Да (через переменные и опции) | Да (.профиль) | Да (функция Unix) | Нет | да |
Оболочка Борна текущая версия | Разные UNIX | ш | 1977 | да[3] | SunOS-5.x, FreeBSD (пользователь без полномочий root)[4] | SunOS-5.x | CDDL[5][нужен лучший источник ] | да | На основе текста CLI | Нет | да[nb 1][нужен лучший источник ] | Нет данных | да | Да (произвольно fds) | Да (через переменные и опции) | Да (.профиль) | Да (функция Unix) | да[nb 2] | да |
POSIX ракушка[6] | POSIX | ш | 1992[7] | Нет данных | Нет данных | POSIX | Нет данных | Нет данных | Текстовый интерфейс командной строки | Нет | Да, если используется настроенная локаль | Нет данных | да | Да (произвольно fds) | Да (через переменные и опции) | Неопределенные (.профиль приведен в качестве примера) | Да (функция Unix) | да | Нет данных |
трепать (v4) | POSIX | баш, ш | 1989[8] | да | GNU, Linux (по умолчанию для root), macOS 10.3–10.14 | GNU, Linux, Хайку, macOS 10.3–10.14 | GPL | да | Текстовый интерфейс командной строки | Нет | да[9][нужен лучший источник ] | Да (printf встроенный) | да | Да (произвольно fds) | Да (через переменные и опции) | Да (/ etc / profile, .bash_profile, .bash_login, .профиль, .bashrc) | Да (функция Unix) | да | да |
csh | POSIX | csh | 1978 | да | SunOS | ? | BSD | да | Текстовый интерфейс командной строки | Нет | Нет | ? | да | Да (стандартный ввод, стандартный вывод, stdout + stderr) | Да (через переменные и опции) | Да (~ / .cshrc, ~ / .login, ~ / .logout) | Да (функция Unix) | да | да |
tcsh | POSIX | tcsh, csh | 1983[10] | да | FreeBSD (по умолчанию для root), ранее Mac OS X | ? | BSD | да | Текстовый интерфейс командной строки | Нет | да | ? | да | Да (стандартный ввод, стандартный вывод, stdout + stderr) | Да (через переменные и опции) | Да (/etc/csh.cshrc, /etc/csh.login, ~ / .tcshrc, ~ / .cshrc, ~ / .history, ~ / .login, ~ / .cshdirs) | Да (функция Unix) | да | да |
Оболочка Hamilton C | Win32, OS / 2 | csh | 1988[11] | Да (версия OS / 2 больше не поддерживается) | Необязательный | Необязательный | Проприетарный | Нет | Текстовый интерфейс командной строки | Нет | Нет | Да (оператор отметки времени -t) | да | Да (стандартный ввод, стандартный вывод, stdout + stderr) | Да (через переменные и опции) | Да (через login.csh, startup.csh и logout.csh) | Да (опция командной строки) | да | да |
Scsh | POSIX | scsh | 1994 | да | ? | ? | BSD -стиль | да | ? | ? | ? | ? | ? | да | ? | ? | ? | ? | да |
кш (кш93т +) | POSIX | кш | 1983[12][13] | да | AIX, HP-UX | OpenSolaris | Общая общественная лицензия | да | Текстовый интерфейс командной строки | Нет | да | Да (printf встроенный с % (% F) Т[14]) | да | Да (произвольно fds) | Да (через переменные и опции) | Да (система и пользователь профиль и kshrc) | Да (функция Unix) | да | да |
pdksh | POSIX | кш, ш | 1989? | да | OpenBSD[15] | OpenBSD[15] | Всеобщее достояние | да | Текстовый интерфейс командной строки | Нет | Нет | Нет данных | да | Да (произвольно fds) | Да (через переменные и опции) | Да (/ etc / profile, .профиль) | Да (функция Unix) | да | да |
zsh | POSIX | zsh | 1990 | да | Глубоко в, GoboLinux, Grml, macOS 10.15+ | Grml, macOS 10.15+ | Массачусетский технологический институт -стиль | да | Текстовый интерфейс командной строки | через дополнительный код[16] | да | Да (различные внутренние функции, включая дату, с помощью % F strftime формат[17] и -я вариант для fc встроенный[18]) | да | Да (произвольно fds) | Да (через переменные, параметры, функции, стили и т. Д.) | Да (система и пользователь Zshenv, zprofile, zshrc, злогин, zlogout) | Да (функция Unix) | да | да |
пепел | POSIX | ш | 1989 | да | Minix, BusyBox основанные системы | NetBSD, Minix, BusyBox основанные системы | BSD -стиль | да | Текстовый интерфейс командной строки | Нет | Частичный (для BusyBox, поддерживается при редактировании из командной строки, но не при обработке строк[19]) | Нет данных | да | Да (произвольно fds) | Да (через переменные и опции) | Да (/ etc / profile, .профиль) | Да (функция Unix) | да | да |
КПК | CP / M, МП / м | (КПК) | 1976 (1974) | Нет | CP / M (без входа в систему), МП / м | CP / M, МП / м | Бесплатное ПО (изначально проприетарное) | Да (изначально с закрытым исходным кодом) | На основе текста CLI | Нет | Нет | Нет | Нет | Нет | Нет | Да (автоматически через $$$. SUB) | Частично (только через внешний РАЗМЕСТИТЬ команда для обновления $$$. SUB) | Нет | да |
COMMAND.COM | ДОС | КОМАНДА | 1980 | Нет (доступны сторонние реализации, не привязанные к конкретному поставщику или версии DOS) | ДОС, Windows 95, 98, SE, МНЕ | ДОС, Windows 95, 98, SE, МНЕ | зависит от поставщика, например. РС -EULA,[№ 3] или же BSD /GPL (бесплатные клоны) | Нет (кроме OpenDOS, DR-DOS, PTS / DOS и FreeDOS) | Текстовый интерфейс командной строки | Нет | Нет | Нет (кроме DR-DOS) | Да (через КОМАНДА con: или же CTTY con:) | Да (стандартный ввод, стандартный вывод) | Да (через параметры запуска и переменные среды DR-DOS также поддерживает DIR / C / R команда переключателя по умолчанию) | Да (автоматический AUTOEXEC.BAT для основной оболочки или явно через /П, /P:filename.bat или же / К параметры запуска) | Да (через ВЫЗОВ команда или / C и / К параметры запуска) | Нет | да |
OS / 2 CMD.EXE | OS / 2, eComStation, ArcaOS | CMD | 1987 | Нет | OS / 2, eComStation, ArcaOS | OS / 2, eComStation, ArcaOS | IBM -EULA[№ 4] | Нет | Текстовый интерфейс командной строки | Нет | Нет | Нет | Нет | Да (стандартный ввод, стандартный вывод, stderr) | ? | Частично (только через / К вариант запуска) | Да (через ВЫЗОВ команда или / C и / К параметры запуска) | Нет | да |
Windows CMD.EXE[№ 5] | Win32 | CMD | 1993 | Нет | Windows NT, 2000, XP, сервер 2003, Vista | Windows NT, 2000, XP, сервер 2003, Vista | РС -EULA[№ 6] | Нет | Текстовый интерфейс командной строки | Нет | Частичный (CHCP 65001 за UTF-8, но аргументы программы по-прежнему закодированы в локальной кодовой странице) | Нет | Нет | да | Да (через реестр, параметры запуска и переменные среды) | Да (автоматически через реестр или явно через / К вариант запуска) | Да (через ВЫЗОВ команда или / C и / К параметры запуска) | Нет | да |
4ДОС, NDOS | ДОС, Windows 95, 98, SE, МНЕ | 4ДОС, NDOS | 1989 (1986) | Нет (не привязан к конкретному поставщику или версии ОС) | Необязательный | Необязательный | Лицензия MIT, с ограничениями | да | Текстовый интерфейс командной строки с TUI расширения | Да (всплывающие окна, справочная система, % _MOUSE внутренняя переменная, INKEY / M команда) | Нет | да | Да (через CTTY con:, кроме ЯЩИК, ЛИНИЯ, DRAWVLINE, СПИСОК, ЭКРАН, SCRPUT, ВЫБРАТЬ, VSCRPUT команды и раскраска файлов / каталогов) | Да (стандартный ввод, стандартный вывод, stderr, stdout + stderr) | Да (через 4DOS.INI/NDOS.INI файл, параметры запуска, переменные среды, SETDOS команда) | Да (автоматический AUTOEXEC.BAT для первичной оболочки и 4START.BTM/4START.BAT а также 4EXIT.BTM/4EXIT.BAT для любой оболочки или явно через /П, /P:dirfilename.ext или же / К параметры запуска) | Да (через ВЫЗОВ команда или / C и / К параметры запуска) | да | да |
4OS2 | OS / 2, eComStation, ArcaOS | 4OS2 | 1992 | Нет (не привязан к конкретным версиям OS / 2) | Необязательно (но в комплекте с ArcaOS) | Необязательный | Бесплатное ПО | да | Текстовый интерфейс командной строки | Нет | Нет | Нет | Нет | Да (стандартный ввод, стандартный вывод, stderr, stdout + stderr) | Да (через 4OS2.INI файл, параметры запуска, переменные среды, SETDOS команда) | Да (автоматически через 4START.CMD/4START.BTM а также 4EXIT.CMD/4EXIT.BTM файлы или явно через / K startup.cmd вариант) | Да (через ВЫЗОВ команда или / C и / К параметры запуска) | да | ? |
TCC (ранее 4NT) | Win32 | TCC | 1993 | Нет (не привязан к конкретным версиям NT) | необязательный | необязательный | Условно-бесплатное ПО | Нет | Текстовый интерфейс командной строки (Взять командование: GUI ) | Да (консольная мышь, всплывающие окна, справочная система, % _XMOUSE, % _YMOUSE внутренние переменные, INKEY / M команда) | да | да | Нет | Да (стандартный ввод, стандартный вывод, stderr, stdout + stderr) | Да (через реестр, TCMD.INI/4NT.INI файл, параметры запуска, переменные среды, SETDOS команда) | Да (автоматически через реестр и TCSTART/4START а также TCEXIT/4 ВЫХОД, или явно через / К вариант запуска) | Да (через ВЫЗОВ команда или / C и / К параметры запуска) | да | Нет |
VMS DCL[20] | OpenVMS | Автоматически для входа в систему / интерактивного процесса | 1977? | да | VMS | VMS | Собственный, в комплекте с VMS | только по специальной лицензии | Текстовый интерфейс командной строки | с DECwindows / Motif | да | Да, по крайней мере, по стандарту 1988 г. | да | Да (sys $ input, sys $ output назначение) | Да (с помощью символов, логических имен и опций) | Да (SYS $ MANAGER: SYLOGIN.COM и пользовательский LOGIN.COM) | да | да | Нет |
PowerShell | .СЕТЬ | PowerShell | 2006 | да | Windows 10, 8, Сервер 2008, 7, Vista, XP[№ 7] | Windows 10, 8, Сервер 2008, 7 | Массачусетский технологический институт -стиль | да | Графический интерфейс командной строки | да | да | да | Нет | да | Да (через переменные и опции) | Да (% USERPROFILE% Documents WindowsPowerShell Microsoft.PowerShell_profile.ps1) | Да (функция PowerShell) | да | Нет |
rc | План 9, POSIX | rc | 1989 | да | План 9, Версия 10 Unix | План 9, Версия 10 Unix | Общественная лицензия Lucent | ? | ? | ? | да | ? | ? | да | ? | ? | ? | ? | да |
BeanShell | Ява | ? | 2005 | да | ? | ? | LGPL | ? | ? | ? | да | ? | ? | да | ? | ? | ? | ? | Нет |
рыбы | POSIX | рыбы | 2005[21] | да | GhostBSD | ? | GPL | да | Текстовый интерфейс командной строки | ? | да | ? | ? | Да (произвольно fds) | Да (через переменные среды и через веб-интерфейс через fish_config) | Да (/etc/fish/config.fish и ~ / .config / fish / config.fish) | Да (функция Unix) | Да (~ / .config / fish / fish_history *) | ? |
Ион | Редокс, Linux | ион | 2015[22] | да | Редокс | Редокс | Массачусетский технологический институт | да | Текстовый интерфейс командной строки | ? | да | да | ? | Да (произвольно fds) | Да (соответствует спецификации XDG Base Directory) | Да (~ / .config / ion / initrc) | да | Да (~ / .local / share / ion / history) | Частичный (не распространяется как отдельный исполняемый файл, но может быть собран как один) |
Ракушка | Обычная среда | Обычно вызывается | Введено | Независимая платформа | Оболочка входа по умолчанию в | Оболочка сценария по умолчанию в | Лицензия | Доступность исходного кода | Пользовательский интерфейс | Поддержка мыши | Unicode поддерживать | ISO 8601 поддерживать | Перенаправление консоли | Транслировать перенаправление | Конфигурируемость | Скрипты запуска / завершения работы | Пакетные скрипты | логирование | доступен как статически связанный, независимый исполняемый файл с одним файлом |
Интерактивные функции
Ракушка | Команда имя завершение | Дорожка завершение | Команда аргумент завершение | Подстановочный знак завершение | Команда история | Обязательный аргумент Подсказка | Автоматический предложения | Цветные каталог списки | Текст выделение | Синтаксис выделение | История каталогов, стек или аналогичные функции | Скрытый каталог изменять | Автокоррекция | Интегрированный среда | Фрагменты | Ценить Подсказка | Меню / опции Подсказка | Прогресс индикатор | Контекст чувствительный помощь | Команда строитель |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Оболочка Томпсона | Нет | Нет | Нет | Нет | Нет | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Оболочка Борна Версия 1977 года | Нет | Нет | Нет | Нет | Нет | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | да | Нет | Нет | Нет | Нет |
Оболочка Борна текущая версия | Нет | да[№ 8] | Нет | Нет | да[№ 8] | Нет | Нет | да | да | Нет | Да (CDPATH, pushd, popd, dirs), CDPATH с SVr4 | Нет | Нет | Нет | Нет | да | Нет | Нет | Нет | Нет |
POSIX ракушка | Нет | Нет | Нет | Нет | да | Нет | Нет | да | да | Нет | Да (CDPATH) | Нет | Нет | Нет | Нет | да | Нет | Нет | Нет | Нет |
трепать (v4.0) | да | да | когда определено | да[№ 9] | да | Нет | Нет | да | да | Нет | Да (CDPATH, толкать, popd) | необязательный | Нет | Нет | Нет | да | да | Нет | Нет | Нет |
csh | да | да | Нет | Нет | да | Нет | Нет | да | да | Нет | Да (cdpath, толкать, popd) | необязательный | Нет | Нет | Нет | да | Нет | Нет | Нет | Нет |
tcsh | да | да | когда определено | Нет | да | Нет | Нет | да | да | Нет | Да (cdpath, толкать, popd) | необязательный | да | Нет | Нет | да | Нет | Нет | Нет | Нет |
Оболочка Hamilton C | да | да | Нет | да | да | Нет | Нет | ? | ? | Нет | Да (cdpath, толкать, popd) | Нет | Нет | Нет | Нет | да | Нет | Нет | Нет | Нет |
Scsh | Нет | Нет | Нет | Нет | Нет | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | да | Нет | Нет | Нет | Нет |
кш (кш93т +) | Да (расширяемый) | Да (расширяемый) | Нет | Нет | да | Нет | Нет | да | да | Нет | Да (cdpath встроенный, толкать, popd реализовано как функции) | Нет | Нет | Нет | Нет | да | да | Нет | Нет | Нет |
pdksh | да | да | Нет | Нет | да | Нет | Нет | да | да | Нет | Нет | Нет | Нет | Нет | Нет | да | да | Нет | Нет | Нет |
zsh | да | да | когда определено | да[23] | да | Нет | Да (через предсказание или определяемый пользователем[24]) | да | да | Стороннее расширение[25] | да | необязательный | да | Нет | при определении (как виджеты ZLE) | да | да | Нет | да | Нет |
пепел | Нет | Нет | Нет | Нет | да | Нет | Нет | да | да | Нет | Нет | Нет | Нет | Нет | Нет | да | да | Нет | Нет | Нет |
КПК | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
COMMAND.COM | Нет | Нет | Нет | Нет | Нет[№ 10][№ 11] | Нет | Нет | Нет | Нет (только в DR-DOS через % $ ON%, % $ OFF%, % $ HEADER%, % $ FOOTER% ) | Нет | Нет | Нет | Нет | Нет (только пошаговое выполнение с COMMAND / Y[26]) | Нет | Нет | Нет (только через внешний ВЫБОР команда, в DR-DOS также через ВЫКЛЮЧАТЕЛЬ / ПЕРЕКЛЮЧАТЕЛЬ внутренние команды) | Нет | Нет | Нет |
OS / 2 CMD.EXE | да | да | Нет | Нет | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Windows CMD.EXE | частичный | частичный | Нет | Нет | Да (F8) | Нет | Нет | Нет | Нет | Нет | Да (PUSHD, POPD) | Нет | Нет | Нет | Нет | Да (через SET / P команда) | Нет | Нет | Нет | Нет |
4ДОС | да | да | да | да | да[№ 12][№ 13] | Нет | Нет | да | Нет | Нет | (через всплывающее окно, расширенный поиск в каталоге, CDPATH, PUSHD, POPD, ИСТОРИЯ, DIRS, CDD, CD - команды и % @ DIRSTACK [] функция) | да | Нет | да | Нет | Да (через ВХОД, INKEY и ESET команды) | Да (через @ВЫБРАТЬ[] функции, и косвенно через комбинацию INKEY, ВХОД, ВЫКЛЮЧАТЕЛЬ команды) | Нет | да | Нет (кроме ВАРИАНТ команда для директив файла INI) |
4OS2 | ? | ? | ? | ? | да | Нет | Нет | да | Нет | Нет | да | да | Нет | ? | Нет | ? | ? | Нет | да | Нет |
TCC (ранее 4NT) | да | да | да | да | да | Нет | Нет | да | Нет | да | (через всплывающее окно, расширенный поиск в каталоге, CDPATH, PUSHD, POPD, ИСТОРИЯ, DIRS, CDD, CD - команды и % @ DIRSTACK [] функция) | да | Нет | да | Нет | Да (через ВХОД, INKEY, ESET и SET / P команды) | Да (через @ВЫБРАТЬ[] функции, и косвенно через комбинацию INKEY, ВХОД, ВЫКЛЮЧАТЕЛЬ команды)[№ 14] | Нет | да | Нет |
PowerShell | да | да | да | да | Да (F8) | да | Да, в ISE[27] | ? | ? | Да, в ISE[27] и PSReadLine[28] модуль (включен в v5.0[29]) | Да; несколько стеков; несколько типов местоположения[30] | Нет | Да, в PSReadLine[28] модуль | Да, в ISE[27] | Да, в ISE[27] | да | да[31] | да[32] | Да, в ISE[27] | всплывающее окно[33] |
rc | да[№ 15] | да[№ 15] | Нет | Нет | да[№ 15] | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | ? | Нет | Нет | Нет | Нет |
BeanShell | да | да | Нет | Нет | Нет | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
VMS DCL | Схема минимальной уникальности | Нет | Нет | Нет | да | да | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет | да | Нет | Нет | Нет | Нет |
рыбы | да | да | при определении или анализе на страницах руководства[34] | да[34] | да | Нет | да | ? | ? | да | да | да | да | да[№ 16] | Нет | да | (через fish_config команда) | Нет | Нет | Нет |
Ракушка | Команда имя завершение | Дорожка завершение | Команда аргумент завершение | Подстановочный знак завершение | Команда история | Обязательный аргумент Подсказка | Автоматический предложения | Цветные каталог списки | Текст выделение | Синтаксис выделение | История каталогов, стек или аналогичные функции | Скрытый каталог изменять | Автокоррекция | Интегрированный среда | Фрагменты | Ценить Подсказка | Меню / опции Подсказка | Прогресс индикатор | Контекст чувствительный помощь | Команда строитель |
Фоновое выполнение
Фоновое выполнение позволяет оболочке запускать команду в фоновом режиме. Оболочки POSIX и другие оболочки Unix допускают выполнение в фоновом режиме с помощью & символ в конце команды, а в PowerShell вы можете использовать Старт-процесс
или же Start-Job
команды.
Завершено
Функции завершения помогают пользователю вводить команды в командной строке, находя и предлагая совпадающие слова для неполных. Завершение обычно запрашивается нажатием клавиши завершения (часто Вкладка ↹ ключ).
Завершение имени команды это завершение имени команды. В большинстве оболочек команда может быть программой в пути к команде (обычно $ PATH
), встроенная команда, функция или псевдоним.
Завершение пути - завершение пути к файлу, относительное или абсолютное.
Завершение подстановочного знака является обобщением завершения пути, где выражение соответствует любому количеству файлов с использованием любого поддерживаемого синтаксиса для сопоставление файлов.
Вариативное завершение является завершением имени переменной name (переменная окружения или переменная оболочки) .Bash, zsh и fish имеют завершение для всех имен переменных. В PowerShell есть дополнения для имен переменных среды, имен переменных оболочки и - из пользовательских функций - имен параметров.
Завершение аргумента команды - завершение аргументов конкретной команды. Есть два типа аргументов: названный и позиционные: именованные аргументы, часто называемые опции, идентифицируются своим именем или буквой, предшествующей значению, тогда как позиционные аргументы состоят только из значения. Некоторые оболочки позволяют завершать имена аргументов, но немногие поддерживают завершение значений.
Bash, zsh и fish предлагают завершение имени параметра через определение, внешнее по отношению к команде, которое распространяется в отдельном файле определения завершения. Для завершения имени / значения параметра команды эти оболочки предполагают завершение пути / имени файла, если для команды не определено завершение. Завершение может быть настроено так, чтобы предлагать завершение путем вызова функции оболочки.[35] Оболочка рыбы дополнительно поддерживает парсинг страницы руководства для извлечения информации о параметрах, которую можно использовать для улучшения дополнений / предложений. В PowerShell все типы команд (командлеты, функции, файлы сценариев) по своей сути предоставляют данные об именах, типах и допустимых диапазонах / списках значений для каждого аргумента. Эти метаданные используются PowerShell для автоматической поддержки имени аргумента и завершения значения для встроенных команд / функций, пользовательских команд / функций, а также для файлов сценариев. Отдельные командлеты также могут определять динамическое завершение значений аргументов, где значения завершения вычисляются динамически в работающей системе.
История команд
Пользователь оболочки может обнаружить, что он / она набирает что-то похожее на то, что пользователь вводил раньше. Если оболочка поддерживает история команд пользователь может вызвать предыдущую команду в строковом редакторе и отредактировать ее перед повторным вводом.
Оболочки, поддерживающие завершение, также могут иметь возможность напрямую завершить команду из истории команд, учитывая частичную / начальную часть предыдущей команды.
Большинство современных оболочек поддерживают историю команд. Оболочки, которые поддерживают историю команд в целом, также поддерживают завершение из истории, а не просто вызов команд из истории. В дополнение к обычному тексту команды PowerShell также записывает время начала и окончания выполнения и статус выполнения в журнал команд.
Обязательный аргумент
Обязательные аргументы / параметры - это аргументы / параметры, которым необходимо присвоить значение при вызове команды, функции или файла сценария. Оболочка, которая может определить перед вызовом отсутствие обязательных значений, может помочь интерактивному пользователю, запрашивая эти значения вместо того, чтобы позволить команде завершиться ошибкой. Наличие приглашения оболочки для отсутствующих значений позволит автору сценария, команды или функции выполнить пометить параметр как обязательный вместо создания кода сценария, который либо запрашивает отсутствующие значения (после определения того, что он выполняется в интерактивном режиме), либо завершается ошибкой с сообщением.
PowerShell позволяет командам, функциям и скриптам определять аргументы / параметры как обязательный. Оболочка определяет перед вызовом, есть ли какие-либо обязательные аргументы / параметры, которые не были связаны, и затем запрашивает у пользователя значение (я) перед фактическим вызовом.[36]
Автоматические предложения
С автоматическими предложениями оболочка отслеживает, когда интерактивный пользователь вводит текст, и отображает контекстно-зависимые предложения, не прерывая ввод вместо пользователя. явно запрашивающий завершение.
Интегрированная среда сценариев PowerShell использует обнаруживаемые метаданные для предоставления «intellisense» - т. Е. Предложений, которые автоматически появляются по мере ввода пользователем, в дополнение к тому, когда пользователь явно запрашивает списки завершения, нажимая, например, Вкладка ↹
История каталогов, стек или аналогичные функции
Оболочка может записывать местоположения, которые пользователь использовал в качестве текущих местоположений, и обеспечивать быстрое переключение в любое местоположение / каталог в истории.
Одно из применений стека каталогов zsh - запись истории каталогов. В частности, AUTO_PUSHD вариант и расширенный CD для этого используются аргументы и завершение.
PowerShell позволяет использовать несколько именованных стеков. Местоположения (каталоги) могут быть вставлены / извлечены из текущего стека или именованного стека. Любой стек может стать текущим (по умолчанию) стеком. В отличие от большинства других оболочек, PowerShell место расположения Концепция позволяет стекам местоположений хранить местоположения файловой системы, а также другие типы местоположений, например, Active Directory организационные единицы / группы, SQL Server базы данных / таблицы / объекты, Информационный сервер в Интернете приложения / сайты / виртуальные каталоги.
4DOS и Take Command Console записывают историю текущих каталогов и позволяют пользователю переключаться на каталог в истории, используя всплывающее окно.
Неявное изменение каталога
Имя каталога может использоваться непосредственно как команда, которая неявно изменяет текущее местоположение каталога.
Это следует отличать от несвязанного загрузочный привод функция поддерживается Параллельная DOS, Многопользовательская DOS, Системный менеджер и РЕАЛЬНЫЙ / 32, где буква диска L: будет неявно обновлена, чтобы указать путь загрузки загруженного приложения, тем самым позволяя приложениям обращаться к файлам, находящимся в их каталоге загрузки, под стандартной буквой диска, а не по абсолютному пути.[37]
Автокоррекция
Если командная строка не соответствует напрямую команде или аргументам, проверка орфографии может автоматически исправить типичные опечатки (например, чувствительность к регистру, пропущенные буквы). Есть два подхода к этому; оболочка может либо предложить возможные исправления при вызове команды, либо это может произойти раньше как часть завершения или автозаполнения.
В tcsh и zsh Оболочки имеют дополнительную функцию проверки / исправления орфографии при вызове команды.
Fish выполняет автокоррекцию после завершения и самовнушения. Таким образом, эта функция не мешает вводить всю команду и нажимать Enter, тогда как широкое использование табуляции и клавиш со стрелкой вправо делает оболочку в основном нечувствительной к регистру.
PSReadLine[28] Модуль PowerShell (который поставляется с версией 5.0) предоставляет возможность указать CommandValidationHandler ScriptBlock, который запускается перед отправкой команды. Это позволяет настраивать исправление часто ошибочных команд и проверку перед фактическим запуском команды.
Интегрированная среда
Интегрированная среда - это интеграция интерфейса командной строки с редакторами (обычно с несколькими документами), справочная система и возможно отладка и другие инструменты.
Взять командную консоль (TCC) поставляется с интегрированной средой с панелью командной строки, проводником файлов, редактором, пакетным отладчиком и многим другим.[38]
PowerShell ISE включает панель командной строки с поддержкой встроенной командной строки, функции копирования и вставки, нескольких редакторов документов, отладка на уровне исходного кода, панель справки, панель проводника команд и интерфейс сценариев, позволяющий сценариям / модулям управлять меню, надстройками и т. д. ISE (меню, окна, ярлыки, надстройки) настраиваются с помощью сценариев.[39]
Фрагменты
Фрагменты - это небольшие участки повторно используемого кода сценария. Фрагменты часто используются для сохранения нажатий клавиш или для помощи пользователю с общими шаблонами сценариев. Многие текстовые редакторы поддерживают фрагменты для написания сценариев либо как встроенные функции, либо через плагины.
PowerShell поддерживает фрагменты в интегрированной среде сценариев (ISE), используя Ctrl+J.[40]
Подсказка значения
Сценарий оболочки может запрашивать у интерактивного пользователя значение.
Селектор меню / опций
Сценарий оболочки может предоставить интерактивному пользователю список вариантов.
Индикатор прогресса
Сценарий оболочки (или задание) может сообщать интерактивному пользователю о ходе выполнения длительных задач.
Системы Unix / Linux могут предлагать поддержку других инструментов с использованием индикаторов прогресса из скриптов или в виде отдельных команд, таких как программа "pv".[41] Однако это не встроенные функции оболочек.
PowerShell имеет встроенную команду и функции API (которые будут использоваться при создании команд) для написания / обновления индикатора выполнения. Сообщения индикатора выполнения отправляются отдельно от обычного вывода команды, и индикатор выполнения всегда отображается на конечной интерактивной пользовательской консоли, независимо от того, исходят ли сообщения о ходе выполнения из интерактивного сценария, из фонового задания или из удаленного сеанса.
Интерактивный стол
Выходные данные выполнения команды могут отображаться в таблице / сетке, которые можно интерактивно сортировать и фильтровать и / или иным образом манипулировать после завершения выполнения команды.
PowerShell Out-GridView командлет отображает данные в интерактивном окне с интерактивной сортировкой и фильтрацией.
Цветные списки каталогов
Программное обеспечение JP Процессоры командной строки обеспечивают настраиваемую пользователем раскраску имен файлов и каталогов в списках каталогов на основе их расширения файла и / или атрибутов с помощью необязательно определенной переменной среды% COLORDIR%.
Для оболочек Unix / Linux это особенность ls команда и терминал.
Выделение текста
Процессоры командной строки в DOS Plus, Многопользовательская DOS, РЕАЛЬНЫЙ / 32 и во всех версиях DR-DOS поддерживать ряд дополнительных переменных среды для определения управляющих последовательностей, позволяющих управлять выделением, реверсией или раскрашиванием текста для отображения или печати в таких командах, как ТИП. Все упомянутые процессоры командной строки поддерживают % $ ON% и % $ OFF%. Если определено, эти последовательности будут выдаваться до и после имен файлов. Типичная последовательность для% $ ON% будет 033 [1m в сочетании с ANSI.SYS, 033p для ASCII терминал или 016 для IBM или ESC / P принтер. Аналогично, типичные последовательности для% $ OFF% будут 033 [0m, 033q, 024 соответственно. Переменные % $ HEADER% и % $ FOOTER% поддерживаются только COMMAND.COM в DR-DOS 7.02 и выше для определения последовательностей, генерируемых до и после текстовых блоков, для управления выделением текста, разбиением на страницы или другими параметрами форматирования.
Для оболочек Unix / Linux это особенность терминала.
Подсветка синтаксиса
Независимый проект предлагает подсветку синтаксиса как дополнение к Z Shell (zsh).[42] Однако это не часть оболочки.
PowerShell обеспечивает настраиваемую подсветку синтаксиса в командной строке через PSReadLine.[28] модуль. Этот модуль можно использовать с PowerShell v3.0 +, он включен в v5.0. Кроме того, он загружается по умолчанию в хост командной строки "powershell.exe" в версии 5.0. PowerShell ISE также включает подсветку синтаксиса в командной строке, а также на панели скриптов.[39]Take Command Console (TCC) предлагает подсветку синтаксиса в интегрированной среде.
Контекстно-зависимая помощь
4DOS, 4OS2, 4NT / Take Command Console и PowerShell (в PowerShell ISE) просматривают контекстно-зависимую справочную информацию, когда F1 нажата.
Zsh предоставляет различные формы настраиваемой контекстно-зависимой справки как часть своего беги-помощь виджет _complete_help команда, или в завершении параметров для некоторых команд.
Построитель команд
Конструктор команд - это управляемый диалог, который помогает пользователю заполнить команду. В PowerShell есть построитель команд, который доступен в PowerShell ISE или может отображаться отдельно через Показать-команду командлет.[43]
Возможности программирования
Ракушка | Функции | Обработка исключений | Поиск и замена при замене переменных | Арифметика | Плавающая точка | Библиотека математических функций | Линейные массивы или же списки | Ассоциативные массивы | Лямбда-функции | функция eval | Генерация псевдослучайных чисел | Байт-код |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Оболочка Борна Версия 1977 года | Нет | Да (через ловушка) | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да | Нет | Нет |
Оболочка Борна текущая версия | Да с SVR2 | Да (через ловушка) | Нет | да[№ 8] | Нет | Нет | Нет | Нет | Нет | да | Нет | Нет |
POSIX ракушка | да | Да (через ловушка) | Нет | да | Нет | Нет | Нет | Нет | Нет | да | Нет | Нет |
трепать (v4.0) | да | Да (через ловушка) | Да (через ${//} синтаксис) | да | Нет | Нет | да | да | Нет | да | Да ($ RANDOM) | Нет |
csh | Нет | Нет | Да (через $ var: s /// синтаксис) | да | Нет | Нет | да | Нет | Нет | да | Нет | Нет |
tcsh | Нет | Нет | Да (через $ var: s /// синтаксис) | да | Нет | Нет | да | Нет | Нет | да | Нет | Нет |
Оболочка Hamilton C | да | Нет | Да (через $ var: s /// синтаксис) | да | да | да | да | Нет | Нет | да | Да (случайная полезность) | Нет |
Scsh | да | ? | Да (через строковые функции и регулярные выражения) | ? | ? | ? | да | ? | да | да | Да (случайное целое, случайное действительное) | Да (компилятор - это виртуальная машина Scheme48, через scshvm) |
кш (кш93т +) | да | Да (через ловушка) | Да (через ${//} синтаксис и встроенные команды) | да | да | да | да | да | Нет | да | Да ($ RANDOM) | Да (компилятор называется shcomp) |
pdksh | да | Да (через ловушка) | Нет | да | Нет | Нет | да | Нет | Нет | да | Да ($ RANDOM) | Нет |
zsh | да | да | Да (через $ {: s //} и ${//} синтаксис) | да | да | Да (zsh / mathfunc модуль) | да | да | Нет | да | Да ($ RANDOM) | Да (встроенный zcompile команда) |
пепел | да | Да (через ловушка) | Нет | Да (с 1992 г.)[44] | Нет | Нет | Нет | Нет | Нет | да | Нет | Нет |
КПК | Нет | ? | Нет | Нет | ? | ? | Нет | Нет | Нет | Нет | Нет | Нет |
COMMAND.COM | Нет | Частичный (только автоматический отказ (через КОМАНДА / F (или же / N в некоторых версиях DR-DOS)) | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
OS / 2 CMD.EXE | Нет | Нет | Нет | ? | Нет | Нет | ? | Нет | Нет | Нет | Нет | Нет |
Windows CMD.EXE | Да (через ЗВОНИТЕ: ярлык) | Нет | Да (через НАБОР %varname:выражение синтаксис) | Да (через НАБОР / А)[45] | Нет | Нет | Да (через НАБОР[46]) | Нет | Нет | Нет | Да (%случайный%) | Нет |
4ДОС | да | Да (через НА команда, необязательный автоматический отказ через 4DOS / F) | Да (через %@Заменять[...] функция) | Да (через НАБОР / А) | ? | ? | Да (через диапазоны, включая списки, @списки файлов и ЗА команда) | Нет | Нет | да | Да (%@Случайный[...] функция) | Да (через БАТКОМП команда) |
4OS2 | ? | ? | ? | ? | ? | ? | ? | ? | Нет | да | Да (%@Случайный[...] функция) | ? |
TCC (ранее 4NT) | да | Да (через НА и различные ... МОНИТОР команды) | Да (через %@Заменять[...] функция) | Да (через НАБОР / А) | ? | ? | Да (через диапазоны, включая списки, @списки файлов и ЗА команда) | ? | Нет | да | Да (%@Случайный[...] функция) | Да (через БАТКОМП команда) |
PowerShell | да | Да (попробуй-поймай-наконец) | Да (-заменять оператор) | да | да | [Класс математики[47] | да | да | да | да | да | Да, автомат |
rc | да | да | Нет | ? | ? | ? | да | ? | Нет | да | Нет | Нет |
BeanShell | да | да | ? | да | ? | ? | да | да | Нет | да | да | да |
VMS DCL | да | да | Нет | да | Нет | да, для скомпилированных программ | да | Нет | Нет | Нет | Нет | Нет |
рыбы | да | Да (через ловушка) | Нет | да | да | да | да | Нет | Нет | да | Да (случайный) | Нет |
Обработка строк и сопоставление имен файлов
Ракушка | Обработка строк | Чередование (Расширение скобы ) | Сопоставление с образцом (обычные выражения встроенный) | Сопоставление с образцом (имя файла шарик ) | Подстановочные квалификаторы (генерация имени файла на основе атрибутов файла) | Рекурсивная глобализация (создание файлов из подкаталогов любого уровня) |
---|---|---|---|---|---|---|
Оболочка Борна Версия 1977 года | ? | Нет | Нет | Да (*, ?, [...]) | Нет | Нет |
Оболочка Борна последняя версия | Частичное (удаление префикса и суффикса при расширении переменной) | Нет | Нет | Да (*, ?, [...]) | Нет | Нет |
POSIX ракушка | Частично (удаление префиксов и суффиксов при раскрытии переменных) | Нет | Нет | Да (*, ?, [...]) | Нет | Нет |
трепать (v4.0) | Частичное (удаление префикса и суффикса при расширении переменной) | да | да | Да (*, ?, [...], {...}) | Нет | Да (**/...) |
csh | Да (: s и другие операторы редактирования) | да | Нет | да | Нет | Нет |
tcsh | Да (: s и другие операторы редактирования) | да | да | да | Нет | Нет |
Оболочка Hamilton C | Да (: s и другие операторы редактирования + substr, strlen, strindex, printf, reverse, upper, lower, concat и другие встроенные функции) | да | Нет | да | Нет | Да (через неопределенный каталог "..." подстановочный знак[48]) |
Scsh | ? | ? | да | да | Нет | Нет |
кш (кш93т +) | Частично (префикс, удаление суффикса и замена строки в раскрытии переменной) | да[49] | да | Да (*, ?, [...]) | Нет | Да (с установить -G, без символических ссылок) |
pdksh | ? | да[49] | Нет | да | Нет | Нет |
zsh | Да (посредством обработки переменных: например, извлечение подстроки, различные преобразования посредством расширения параметров) | да | да | Да (*, ?, [...], расширенная подстановка[50]) | да | Да (**/... или же ***/... следовать символическим ссылкам) |
пепел | ? | ? | Нет | да | Нет | Нет |
КПК | Нет | Нет | Нет | Нет | Нет | Нет |
COMMAND.COM | Нет | Нет | Нет | Да (*, ?) | Нет | Нет |
OS / 2 CMD.EXE | Нет | Нет | Нет | Да (*, ?) | Частично (только в DIR / A: ... команда) | Нет |
Windows CMD.EXE | Частично (только через FOR / F и НАБОР / А) | Нет | Нет[№ 17] | Да (*, ?) | Частично (только в DIR / A: ... команда) | Да (через FOR / R команда или, если возможно, косвенно через / S опция subdir) |
4ДОС | Да (через функции переменных %@...[], расширенная обработка переменных среды, различные строковые команды и FOR / F и НАБОР / А) | Нет | Нет | Да (*, ?, [...], расширенные подстановочные знаки, ВЫБРАТЬ всплывающая команда) | Да (через / A: ... атрибут и /Я"..." варианты описания и / [S ...] размер, / [Т ...] время, / [D ...] дата, и /[!...] диапазоны исключения файлов) | Да (через FOR / R команда, или косвенно через ГЛОБАЛЬНЫЙ команда или, если доступно, / S опция subdir) |
4OS2 | ? | Нет | Нет | ? | ? | ? |
TCC (ранее 4NT) | Да (через функции переменных %@...[], расширенная обработка переменных среды, различные строковые команды и FOR / F и НАБОР / А) | Нет | да | Да (*, ?, [...], расширенные подстановочные знаки, ВЫБРАТЬ всплывающая команда) | Да (через / A: ... атрибут и /Я"..." варианты описания и / [S ...] размер, / [Т ...] время, / [D ...] Дата, / [O ...] владелец и /[!...] диапазоны исключения файлов) | Да (через FOR / R команда, или косвенно через ГЛОБАЛЬНЫЙ команда или, если доступно, / S опция subdir) |
PowerShell | Да (Concat / Substring / Insert / Remove / Replace, ToLower / ToUpper, Trim / TrimStart / TrimEnd, Compare, Contains / StartsWith / EndWith, Format, IndexOf / LastIndexOf, Pad / PadLeft / PadRight, Split / Join, функции регулярных выражений и другие строковые функции .NET) | Нет | Да (полная поддержка регулярных выражений)[№ 18] | Да (*, ?, [...]) | ? | ? |
rc | ? | ? | Нет | да | Нет | Нет |
BeanShell | ? | ? | да | ? | ? | ? |
VMS DCL | да | Нет | Нет | да | Нет | Да (через [ПОДДЕРЖКА ...]) |
рыбы | Да (встроенная строковая функция) | да | да (через встроенный соответствие строки и строка заменить функции) | Да (*, ?, {...}) | Нет | Да (**/...) |
Межпроцессного взаимодействия
Ракушка | Трубы | Подстановка команд | Замена процесса | Подоболочки | TCP /UDP соединения как потоки | Сложение нажатий клавиш |
---|---|---|---|---|---|---|
Оболочка Борна | байтов одновременно | да | Нет | да | Нет | Нет данных[№ 19] |
POSIX ракушка | байтов одновременно | да | Нет | да | Нет | Нет данных[№ 19] |
трепать (v4.0) | байтов одновременно | да | Да (если система поддерживает / dev / fd /⟨N⟩ или именованные каналы) | да | Да (только клиент) | Нет данных[№ 19] |
csh | байт одновременно | да | Нет | да | Нет | Нет данных[№ 19] |
tcsh | байтов одновременно | да | Нет | да | Нет | Нет данных[№ 19] |
Оболочка Hamilton C | байтов одновременно | да | Нет | да | Нет | ? |
Scsh | текст | ? | ? | ? | да | Нет данных[№ 19] |
кш (кш93т +) | байты (могут содержать сериализованные объекты, если печать -C используется) одновременно | Да ($(...) и $ {<пробел> ...;}) | Да (если система поддерживает / dev / fd /⟨N⟩) | да | Да (и поддержка SCTP, только клиент) | Нет данных[№ 19] |
pdksh | байтов одновременно | да | Нет | да | Нет | Нет данных[№ 19] |
zsh | байтов одновременно | да | да | да | Да (клиент и сервер, но только TCP) | Нет данных[№ 19] |
пепел | байтов одновременно | да | Нет | да | Нет | Нет данных[№ 19] |
КПК | Нет | Нет | Нет | Нет | Нет | Нет |
COMMAND.COM | текстовые последовательные временные файлы | Нет | Нет | Частично (только в режиме многозадачности DR-DOS через COMMAND.COM / T) | Нет | Нет |
OS / 2 CMD.EXE | одновременный текст | Нет | Нет | ? | Нет | Нет |
Windows CMD.EXE | одновременный текст | Да (через FOR / F команда) | Нет | Да (обратная кавычка: ` в FOR / F usebackq) | Нет | Нет |
4ДОС | текстовые последовательные временные файлы | Да (через FOR / F команда) | ? | Частично (через % @ EXECSTR [] и % @ EXEC [], или через SET / M, ESET / M и UNSET / M и %@ВЛАДЕЛЕЦ[...]) | Нет | Да (через KEYSTACK и KSTACK)[51] |
4OS2 | одновременный текст | ? | ? | ? | Нет | Да (через KEYSTACK) |
TCC (ранее 4NT) | одновременный текст | Да (через FOR / F команда) | ? | Частично (через % @ EXECSTR [] и % @ EXEC []) | Да (через FTP, TFTP, FTPS, SFTP, HTTP, HTTPS и IFTP, только клиент) | Да (через KEYSTACK) |
PowerShell | объекты одновременно | да | Нет | да | да | ? |
rc | одновременный текст | да | Да (через: <{cmd} если система поддерживает / dev / fd /⟨N⟩) | да | Нет | ? |
BeanShell | не поддерживается | ? | ? | ? | да | ? |
VMS DCL | текст (через ТРУБКА команда) | да | Нет | Да (возрождение) | Да (только TCP-сервер) | Нет |
рыбы | байтов одновременно | Да (...) | Нет (сломано)[52] | Нет | Нет | Нет данных[№ 19] |
Сложение нажатий клавиш
В ожидании того, что данное запущенное приложение может принять в качестве ввода с клавиатуры, пользователь оболочки инструктирует оболочку создать последовательность смоделированный нажатия клавиш, которые приложение интерпретирует как ввод с клавиатуры от интерактивного пользователя. Посредством отправки последовательностей нажатий клавиш пользователь может указать приложению выполнять действия, которые невозможно было бы выполнить с помощью перенаправления ввода или которые иным образом потребовали бы интерактивного пользователя. Например, если приложение воздействует на нажатия клавиш, которые не могут быть перенаправлены, различает обычные и расширенные клавиши, очищает очередь перед принятием нового ввода при запуске или при определенных условиях, или потому что оно вообще не считывает стандартный ввод. Стекинг нажатий клавиш обычно также предоставляет средства для управления временем отправки имитированных клавиш или задержки новых клавиш до тех пор, пока очередь не будет очищена и т. Д. Это также позволяет имитировать клавиши, которых нет на клавиатуре (потому что соответствующие клавиши физически не существуют или потому что используется другая раскладка клавиатуры), и поэтому пользователь не сможет его ввести.
Особенности безопасности
Эта секция содержит информацию неясного или сомнительного характера важность или же актуальность к теме статьи.Июль 2014 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Ракушка | Запрос безопасности (пароль) | Зашифрованные переменные / параметры | Пароли файлов / каталогов | Выполнить разрешение | Блокировка ненадежных скриптов | Ограниченное подмножество оболочки | Подмножество безопасных данных |
---|---|---|---|---|---|---|---|
Оболочка Борна | через stty[№ 20] | Нет | ? | Нет данных[№ 21] | Нет | да | Нет |
POSIX ракушка | через stty[№ 20] | Нет | ? | Нет данных[№ 21] | Нет | Нет | Нет |
трепать (v4.0) | читает -s | Нет | ? | Нет данных[№ 21] | Нет | да | Нет |
csh | через stty[№ 20] | Нет | ? | Нет данных[№ 21] | Нет | да | Нет |
tcsh | через stty[№ 20] | Нет | ? | Нет данных[№ 21] | Нет | да | Нет |
Оболочка Hamilton C | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Scsh | через stty[№ 20] | Нет | ? | Нет данных[№ 21] | Нет | Нет | Нет |
кш (кш93т +) | через stty[№ 20] | Нет | ? | Нет данных[№ 21] | Нет | да | Нет |
pdksh | через stty[№ 20] | Нет | ? | Нет данных[№ 21] | Нет | да | Нет |
zsh | читает -s | Нет | ? | Нет данных[№ 21] | Нет | да | Нет |
пепел | через stty[№ 20] | Нет | ? | Нет данных[№ 21] | Нет | да | Нет |
КПК | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
COMMAND.COM | Частично (только в DR-DOS, запрашивает пароль, если файл / каталог защищен) | Нет | Частично (только под DR-DOS через dirname; dirpwd filename; filepwd синтаксис)[№ 22] | Частично (только в DR-DOS, если файлы защищены паролем для чтения и / или разрешения на выполнение)[№ 23] | Нет | Нет | Нет |
OS / 2 CMD.EXE | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Windows CMD.EXE | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
4ДОС | Да (через ВХОД / P или же INKEY / P)[№ 24] | Нет | Частично (только под DR-DOS через dirname ;; dirpwd filename ;; filepwd синтаксис)[№ 22] | Частично (только в DR-DOS, если файлы защищены паролем для чтения и / или разрешения на выполнение)[№ 23] | Нет | Нет | Нет |
4OS2 | ? | Нет | Нет | Нет | Нет | Нет | Нет |
TCC (ранее 4NT) | Да (через ВХОД / P, INKEY / P или же QUERYBOX / P)[№ 24] | Нет | Нет | Нет | Нет | Нет | Нет |
PowerShell | да[№ 25] | да | Нет | Нет[№ 26] | да[53] | да[nb 27] | да[54] |
rc | через stty[№ 20] | Нет | ? | Нет данных[№ 21] | Нет | да[55] | Нет |
BeanShell | ? | ? | ? | ? | ? | ? | ? |
VMS DCL | да | Нет | Нет | да | Нет | да | Нет |
рыбы | читает -s | Нет | ? | Нет данных[№ 21] | Нет | Да (через рыба -l) | ? |
Безопасная подсказка
Некоторым сценариям оболочки необходимо запрашивать у пользователя конфиденциальную информацию, такую как пароли, частные цифровые ключи, PIN коды или другая конфиденциальная информация. Чувствительный ввод не должен отражаться эхом на экране / устройстве ввода, где он может быть получен посторонними лицами. Также следует избегать представления конфиденциальной информации в виде открытого текста, поскольку это может позволить скомпрометировать информацию, например, через файлы подкачки, дампы ядра и т. Д.[56]
Оболочки bash, zsh и PowerShell предлагают это как особую функцию.[57][58] Оболочки, которые не предлагают это как конкретную функцию, могут по-прежнему отключать эхо с помощью других средств. Оболочки, выполняемые в операционной системе Unix / Linux, могут использовать stty внешняя команда для выключения / включения эха вводимых символов.[59] Помимо того, что символы не повторяются, PowerShell -AsSecureString опция также шифрует ввод посимвольно во время процесса ввода, гарантируя, что строка никогда не будет представлена незашифрованной в памяти, где она может быть скомпрометирована посредством дампов памяти, сканирования, транскрипции и т. д.
Зашифрованные переменные / параметры
Если сценарий считывает пароль в переменную среды, он находится в памяти в виде обычного текста и, таким образом, может быть доступен через дамп ядра. Он также находится в среде процесса, который может быть доступен другим процессам, запущенным сценарием.[60]
PowerShell может работать с зашифрованными строковыми переменными / параметрами.[61] Зашифрованные переменные гарантируют, что значения не будут случайно раскрыты, например, стенограммы, эхо, файлы журналов, памяти или аварийные дампы или даже вредоносное сканирование памяти. PowerShell также поддерживает сохранение таких зашифрованных строк в текстовых файлах, защищенных ключом, принадлежащим текущему пользователю.
Выполнить разрешение
Некоторые операционные системы определяют выполнять разрешение, которое может быть предоставлено пользователям / группам для файла.
В системах Unix разрешение на выполнение контролирует доступ к вызову файла как программы и применяется как к исполняемым файлам, так и к скриптам. загрузчик программ, ни вызывающая программа, ни вызываемая программа не обязаны требовать разрешения на выполнение - это также относится к оболочкам и другим программам-интерпретаторам. Библиотека POSIX C который используется для взаимодействия с ядром. POSIX указывает, что exec
семейство функций должно завершиться ошибкой с EACCESS (в разрешении отказано), если файл отклоняет разрешение на выполнение (см. - Справочник по системным интерфейсам, Единая спецификация UNIX, Выпуск 7 из Открытая группа ).
В выполнять разрешение применяется только при прямом запуске сценария. Если сценарий вызывается в качестве аргумента интерпретирующей оболочки, он будет выполняться независимо от того, удерживает ли пользователь выполнять разрешение для этого сценария.
Хотя Windows также указывает выполнять Если разрешение не было предоставлено, ни одна из специфичных для Windows оболочек не блокирует выполнение сценария.
Блокировка ненадежных скриптов
Некоторые оболочки блокируют сценарии, признанные ненадежными, или отказываются запускать сценарии, если это требуется системным администратором.
Ограничение на выполнение скрипта происхождения
PowerShell можно настроить так, чтобы блокировать выполнение сценариев, которые были помечены как полученные из неизвестного / ненадежного источника (например, из Интернета).[62] Интернет-приложения, такие как веб-браузеры, клиенты обмена мгновенными сообщениями, программы чтения почты и т. Д., Маркируют файлы, загруженные из Интернета, с помощью зоны происхождения в альтернативном потоке данных, который понимается PowerShell.
Ограничение подписанного скрипта
Политики подписи сценариев / кода могут использоваться для обеспечения того, чтобы операционный отдел выполнял только утвержденные сценарии / код, которые были проверены и подписаны доверенным рецензентом / утверждающим лицом. Режимы подписи также защищают от подделки.Если сценарий отправляется от поставщика клиенту, клиент может использовать подпись, чтобы гарантировать, что сценарий не был изменен во время передачи и что сценарий действительно исходит от поставщика, а не злоумышленника, пытающегося с помощью социальной инженерии заставить оператора запустить сценарий атаки.
PowerShell может быть настроен так, чтобы разрешить выполнение заблокированных в противном случае сценариев (например, исходящих из ненадежной зоны), если сценарий был подписан цифровой подписью с использованием доверенного цифрового сертификата.[63][64][65]
Многоуровневые политики исполнения
Компания может захотеть применить ограничение исполнения в глобальном масштабе внутри компании и / или в определенных частях компании. Он может захотеть установить политику для запуска подписанных сценариев, но разрешить определенным подразделениям компании устанавливать свои собственные политики для зональных ограничений.
PowerShell позволяет применять политики блокировки сценариев на нескольких уровнях: локальный компьютер, текущий пользователь и т. Д. Политика более высокого уровня переопределяет политику более низкого уровня, например если политика определена для локальной машины, она действует для всех пользователей локальной машины, только если она оставлена неопределенный на более высоком уровне это может быть определено для более низких уровней.
Ограниченное подмножество оболочки
Можно запустить или настроить несколько оболочек для запуска в режиме, в котором пользователю доступен только ограниченный набор команд и действий. Пока не безопасность граница (блокируется команда доступа к ресурсу, а не к ресурсу), тем не менее, обычно используется для ограничения действий пользователей перед входом в систему.
Ограниченный режим является частью POSIX спецификация для оболочек, и большинство оболочек Linux / Unix поддерживают такой режим, в котором несколько встроенных команд отключены и могут быть вызваны только внешние команды из определенного каталога.[66][67]
PowerShell поддерживает ограниченные режимы через файлы конфигурации сеанса или конфигурации сеанса. Файл конфигурации сеанса может определять видимые (доступные) командлеты, псевдонимы, функции, поставщиков путей и многое другое.[68]
Подмножество безопасных данных
Сценарии, вызывающие другие сценарии, могут представлять угрозу безопасности, поскольку они потенциально могут выполнять внешний код в контексте пользователя, запустившего начальный сценарий. Сценарии обычно разрабатываются таким образом, чтобы включать исключительно сценарии из известных безопасных мест; но в некоторых случаях, например предлагая пользователю способ настройки среды или загрузки локализованных сообщений, в сценарий может потребоваться включить другие сценарии / файлы.[69] Один из способов уменьшить этот риск - предложить оболочке безопасное подмножество команд, которые могут быть выполнены включенным скриптом.
PowerShell разделы данных может содержать константы и выражения с использованием ограниченного набора операторов и команд.[70] Разделы данных PowerShell используются, например, когда локализованные строки необходимо читать из внешнего источника, обеспечивая при этом защиту от нежелательных побочных эффектов.
Примечания
- ^ С середины 1990-х гг.
- ^ если скомпилирован с -DACCT.
- ^ Компонент MS-DOS и Windows - покрывается действующей лицензией для MS-DOS или Microsoft Windows.
- ^ Компонент OS / 2 - подпадает под действующую лицензию на OS / 2.
- ^ Включены расширения команд или "CMD / X".
- ^ Компонент Windows - подпадает под действующую лицензию Microsoft Windows.
- ^ Windows PowerShell устанавливается вместе с Windows 7, однако это необязательная загрузка для пользователей Windows Vista или Windows XP.
- ^ а б c текущие версии от Йорга Шиллинга.
- ^ Alt-Shift-8 или Alt- * расширится до полного списка совпадающих имен файлов.
- ^ Доступно через ДОСКИ добавить.
- ^ Доступно в DR-DOS через ИСТОРИЯ.
- ^ Альтернативно доступно через ДОСКИ надстройка.
- ^ Альтернативно доступен в DR-DOS через ИСТОРИЯ также.
- ^ У TCC есть специальные функции подсказки для Да, Нет, Отмена, Закрыть, Повторить.
- ^ а б c Обрабатывается Рио, Строка чтения GNU, строка редактирования или же vrl.
- ^ Раковина рыбы - это интерактивная поверхность ввода / вывода на основе символов.
- ^ Недоступно как встроенная оболочка. Внешний FINDSTR / R доступна в большинстве выпусков Windows.
- ^ PowerShell использует все .СЕТЬ Механизм регулярных выражений, который имеет именованные захваты, просмотр вперед / назад с нулевой шириной, жадный / не жадный, классы символов, подсчет уровней и т. д.
- ^ а б c d е ж грамм час я j k xautomation и xdotool можно использовать для генерации нажатий клавиш в X Window System; или программа может быть запущена в псевдотерминал чтобы иметь возможность контролировать его (как с ожидать инструмент).
- ^ а б c d е ж грамм час я Оболочка может использовать stty утилита для подавления вывода на экран вводимых символов. Для этого требуется несколько шагов: 1. чтение текущего состояния эха, 2. отключение эха, 3. чтение ввода, 4. переключение состояния эха обратно в исходное состояние.
- ^ а б c d е ж грамм час я j k л В выполнить разрешение принудительно выполняется отдельной программой, загрузчиком программ, путем отказа в вызове интерпретатора (возможно, оболочки), указанного в сценарии хэшбэнг. Интерпретатор не требует разрешения на выполнение, если вызывается напрямую, как загрузчик программы, с файлом в качестве аргумента; для этого требуется только разрешение на чтение, как и передача файла в качестве входных данных интерпретатору, и в этом случае интерпретатор не может видеть разрешение на выполнение.
- ^ а б В DR-DOS разделителем паролей для паролей файлов и каталогов является точка с запятой. Это также поддерживается в 4DOS до тех пор, пока команда не поддерживает списки включения. В 4DOS разделитель паролей должен быть удвоен для всех команд, поддерживающих списки включения, чтобы отличать пароли от списков включения. Команды, не поддерживающие списки включения, принимают обе формы. DR-DOS 7.02 и выше также могут принимать двойную точку с запятой, так что двойная точка с запятой работает как в COMMAND.COM, так и в 4DOS независимо от выполняемой команды.
- ^ а б DR-DOS поддерживает пароли файлов для чтения / записи / удаления и, при необходимости, разрешения на выполнение. По умолчанию файлы не защищены, но систему можно настроить так, чтобы, например, для чтения пакетных сценариев требуется пароль.
- ^ а б ВХОД / P и INKEY / P отображает звездочки для каждого набранного символа.
- ^ Read-Host -AsSecureString считывает строку символов с устройства ввода в зашифрованную строку, по одному символу за раз, обеспечивая, таким образом, отсутствие в памяти образа открытого текста, который можно было бы извлечь из памяти сканирования или из аварийных дампов, дампов памяти, файлов подкачки, файлы журнала или аналогичные.
- ^ Файлы сценария PowerShell (.ps1 files) по умолчанию связаны с редактором Блокнота, а не с механизмом выполнения PowerShell. Вызов .ps1 файл запустит Блокнот вместо выполнения сценария.
- ^ Сценарии запуска для каждого компьютера / пользователя могут импортировать модули и предоставлять подмножество команд / функций, доступных в модулях.
Рекомендации
- ^ А независимая от платформы версия основанный на историческом исходном коде UNIX V7, доступном по адресу Джефф Коллиер
- ^ Историческая версия UNIX V7 доступна по адресу лицензия в стиле BSD через Unix Heritage Society и другие.
- ^ А независимая от платформы версия на основе исходного кода SVr4 / Solaris доступен у Йорга Шиллинга
- ^ Феррелл, Джон, «Глава 2. Оболочка по умолчанию», Руководство по быстрому запуску FreeBSD для пользователей Linux, Проект документации FreeBSD, получено 2015-07-24
- ^ "SchilliX-ON / SchilliX-ON Mercurial / [b1d9a2] / usr / src / cmd / sh". Sourceforge.net. Получено 2015-07-02.
- ^ IEEE и The Open Group (2008). Стандарт IEEE 1003.1 для информационных технологий - интерфейс переносимой операционной системы (POSIX): оболочка и служебные программы, выпуск 7.
- ^ Как часть IEEE Std.1003.2-1992 (POSIX.2); интегрирован в IEEE Std.1003.1 с редакцией 2001 года.
- ^ Фокс, Брайан (1989-06-07). Тауэр младший, Леонард Х. (ред.). "Bash находится в стадии бета-тестирования!". Группа новостей: gnu.announce. Usenet: [email protected]. Получено 2010-10-28.
- ^ Купер, Мендель, "Глава 37.3.2. Bash, версия 4.2", Расширенное руководство по сценариям на Bash, Проект документации Linux, получено 2015-04-30, "Bash теперь поддерживает экранирование Unicode u и U".
- ^ Грир, Кен (1983-10-03). "Оболочка C с распознаванием / завершением команд и имен файлов". Группа новостей: net.sources. Получено 2010-12-29.
- ^ Суссман, Энн (1988-12-26). "Hamilton C Shell ускоряет разработку приложений OS / 2" (PDF). Неделя ПК (1988-12-26 - 1989-01-02): 37. Получено 2010-11-22.
- ^ Гомес, Рон (1983-06-09). «Расписание конференции USENIX в Торонто (предварительное)». Группа новостей: net.usenix. Получено 2010-12-29.
- ^ Харрис, Гай (1983-10-10). "вопрос csh". Группа новостей: net.flame. Получено 2010-12-29.
- ^ ksh93 (1) справочная страница
- ^ а б Оболочка по умолчанию в OpenBSD это кш (пдкш).
- ^ Редактор командной строки zsh полностью настраивается и может поддерживать мышь различными способами, например с помощью Стефана Шазеласа mouse.zsh.
- ^ zsh (1) справочная страница и подстраницы
- ^ zshbuiltins (1) справочная страница
- ^ "# 782228 - busybox sh не поддерживает многобайтовые символы при обработке строк - журналы отчетов об ошибках Debian". Bugs.debian.org. 2015-04-09. Получено 2015-07-02.
- ^ "Словарь HP OpenVMS DCL". Архивировано из оригинал на 2007-03-25. Получено 2009-03-23.
- ^ Лильенкранц, Аксель (17 мая 2005 г.). «Рыбка - дружелюбная интерактивная оболочка». Получено 2013-04-08.
- ^ Соллер, Джереми (2015-11-15). "d79c8f511573fb7710abc63b4236a40022914520". Получено 2019-08-03.
- ^ "[Z Shell] Система заканчивания". Zsh.sourceforge.net. Получено 2015-02-24.
- ^ например через третьих лиц, например zsh-autosuggestions
- ^ zsh не поддерживает подсветку синтаксиса, но существует сторонний проект, который предлагает эту возможность в качестве надстройки: zsh-подсветка синтаксиса
- ^ Пол, Матиас Р. (1997-10-02) [1997-09-29]. "Caldera OpenDOS 7.01 / 7.02 Обновление Alpha 3 IBMBIO.COM - README.TXT и BOOT.TXT - Краткое описание того, как загружается OpenDOS". Архивировано из оригинал на 2003-10-04. Получено 2009-03-29. [1]
- ^ а б c d е «Интегрированная среда сценариев Windows PowerShell (ISE)». Microsoft Technet. Получено 2015-09-12.
- ^ а б c d Ширк, Джейсон (2018-02-15). «PSReadLine: реализация строки чтения для PowerShell, вдохновленная bash» - через GitHub.
- ^ «Архивная копия». Архивировано из оригинал 17 сентября 2016 г.. Получено 8 сентября 2016.CS1 maint: заархивированная копия как заголовок (связь)
- ^ Push-Location (с псевдонимом
толкать
) и Pop-Location (с псевдонимомpopd
) допускает несколько типов расположения (каталоги файловых систем, организационные подразделения Active Directory, узлы Реестр Windows и т. д.), чтобы их можно было вставлять и выталкивать из стеков локаций. - ^ В $ host.ui.PromptForChoice Функция позволяет сделать выбор в виде подсказки в стиле меню. Приглашение работает как в фоновых заданиях, так и в удаленных сеансах, отображая приглашение меню на консоли управляющего сеанса.
- ^ В Запись-Прогресс командлет записывает индикатор выполнения, который может указывать процент, оставшиеся секунды и т. д. Сообщения индикатора выполнения работают из фоновых заданий или удаленных сеансов в дополнение к интерактивным скриптам, т.е. индикатор выполнения отображается на консоли управляющего сеанса, а не как часть обычный выход.
- ^ В Показать-команду командлет проверяет определение команды и открывает интерактивные окна с именованным полем ввода для каждого параметра / переключателя
- ^ а б "рыба: документация". Раздел Завершение вкладки. Получено 2016-01-10.
- ^ "zsh: 20. Система завершения". Zsh.sourceforge.net. 2013-03-06. Получено 2013-08-18.
- ^ «Используйте PowerShell для создания обязательных параметров». Blogs.technet.com. Получено 2015-02-24.
- ^ Concurrent DOS 386 - Многопользовательская / многозадачная операционная система - Руководство пользователя (PDF). Цифровые исследования.
- ^ «# 1 Замена командной строки Windows - Команды командной строки Windows CMD». Программное обеспечение JP. Получено 2013-08-18.
- ^ а б «Интегрированная среда сценариев Windows PowerShell 3.0 (ISE)». Technet.microsoft.com. Получено 2013-08-18.
- ^ «Изменения и улучшения в модели сценариев PowerShell v3 ISE и ISE». Журнал PowerShell. 2011-09-28. Получено 2013-08-18.
- ^ "pv (1): отслеживать прохождение данных через канал - справочная страница Linux". Linux.die.net. Получено 2015-02-24.
- ^ "zsh-users / zsh-syntax-highlighting: Fish shell, как подсветка синтаксиса для Zsh". GitHub. Получено 2013-08-18.
- ^ "Шоу-команда". Technet.microsoft.com. Получено 2013-08-18.
- ^ "Варианты ясеня". Архивировано из оригинал 2010-03-10. Получено 2014-12-15.
- ^ «Установить - Переменная среды - Windows CMD». SS64.com. Получено 2015-02-24.
- ^ "Как перебрать массив в пакетном режиме?". Переполнение стека. Получено 2015-02-24.
- ^ Сеть System.Math класс определяет математические функции, которые можно использовать через ярлык [Математика], например [Математика] :: Грех для синус функция.[2]
- ^ Справочник по языку оболочки Hamilton C: подстановочные знаки и сопоставление с образцом, Гамильтон Лаборатории, получено 2013-10-29,
... Неопределенный каталог: сопоставьте любое количество уровней каталогов - ноль или более - все, что требуется для сопоставления остальной части шаблона.
- ^ а б Зеебах, Питер (2008). Начало создания сценариев переносимой оболочки: от новичка до профессионала. Голос эксперта в открытом доступе. Апресс. п. 149. ISBN 9781430210436. Получено 2014-09-17.
Расширение скобок доступно в ksh93, pdksh, bash и zsh.
- ^ Zsh предлагает множество варианты подстановки.
- ^ Братья Хардин; Роусон, Том; Конн, Рекс К.; Пол, Маттиас Р .; Краситель, Чарльз Э .; Георгиев, Лучезар И. (27.02.2002). Онлайн-справка 4DOS 8.00.
- ^ "найти способ вывести` psub --fifo` из тупика · Проблема №1040 · fish-shell / fish-shell ». GitHub.
- ^ «О политиках исполнения». Technet.microsoft.com. Получено 2015-02-24.
- ^ «О разделах данных». Technet.microsoft.com. Получено 2015-02-24.
- ^ "Ubuntu Manpage: rc - shell". Manpages.ubuntu.com. 2003-07-17. Получено 2015-02-24.
- ^ Провос, Нильс. «Шифрование виртуальной памяти». Центр интеграции информационных технологий, Мичиганский университет. Получено 2012-12-20.
- ^ "bash - GNU Bourne-Again SHell".
читает -s Тихий режим. Если ввод идет с терминала, символы не отображаются.
- ^ «Использование командлета Read-Host».
Добавив параметр -assecurestring, вы можете замаскировать данные, введенные в командной строке.
- ^ "Команда Linux / Unix: stty". Linux.about.com. Получено 2015-02-24.
- ^ Альбинг, Карл; Vossen, J. P .; Ньюхэм, Кэмерон (2007). «3.8. Запрос пароля». Поваренная книга Bash (1-е изд.). Севастополь, Калифорния: O'Reilly Media. п.65. ISBN 978-0-596-52678-8.
Имейте в виду, что если вы считываете пароль в переменную среды, он находится в памяти в виде обычного текста и, таким образом, может быть доступен через дамп ядра или / proc / core. Он также находится в технологической среде, которая может быть доступна другим процессам.
- ^ Холмс, Ли. «SecureStrings в PowerShell». Получено 2012-12-18.
- ^ "PowerShell Security :: Безопасность ОС Windows :: Статьи и руководства". WindowSecurity.com. Получено 2013-08-18.
- ^ «Подписание сценариев PowerShell». Hanselman.com. Получено 2015-12-24.
- ^ «Привет, сценарист! Как я могу подписать сценарии Windows PowerShell с помощью корпоративной PKI Windows? (Часть 2 из 2) - Привет, сценарист! Блог - Домашняя страница сайта - Блоги TechNet». Blogs.technet.com. Получено 2013-08-18.
- ^ «Запуск сценариев Windows PowerShell». Technet.microsoft.com. Получено 2013-08-18.
- ^ "man sh - shell, стандартный интерпретатор командного языка / posix" (На французском). Pwet.fr. Архивировано из оригинал на 2014-12-21. Получено 2013-08-18.
- ^ "Справочное руководство Bash: ограниченная оболочка". Gnu.org. 2010-12-28. Получено 2013-08-18.
- ^ "New-PSSessionConfigurationFile". Technet.microsoft.com. Получено 2013-08-18.
- ^ Альбинг, Карл; Vossen, J. P .; Ньюхэм, Кэмерон (2007). Поваренная книга Bash (1-е изд.). Севастополь, Калифорния, США: O'Reilly Media. ISBN 978-0-596-52678-8.
[...] вряд ли можно назвать пассивным списком настроенных переменных. Он может запускать другие команды (например, cat) и использовать операторы if для изменения своего выбора. Это даже заканчивается повторением сообщения. Будьте осторожны, когда что-то исходите, так как это широко открытая дверь в ваш сценарий.
- ^ «О разделах данных». Microsoft. Получено 2012-12-18.