Jump to content

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

Bash — оболочка по умолчанию во многих системах GNU/Linux.

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

Общие характеристики

[ редактировать ]
Оболочка Обычная среда Обычно вызывается Представлено Независимый от платформы Оболочка входа по умолчанию в Оболочка сценария по умолчанию в Лицензия Доступность исходного кода Пользовательский интерфейс Поддержка мыши Юникод Поддержка ISO 8601 Поддержка Перенаправление консоли потока Перенаправление Конфигурируемость Скрипты запуска/выключения Пакетные сценарии Ведение журнала Доступен как статически связанный, независимый однофайловый исполняемый файл.
оболочка Томпсона UNIX ш 1971 UNIX UNIX Да Текстовый интерфейс командной строки Нет Нет Да
Оболочка Борна версии 1977 года 7-е изд. UNIX ш 1977 Да [1] 7-е изд. UNIX 7-е изд. ЮНИКС , Собственный [2] Да Текстовый интерфейс командной строки Нет Нет Да Да ( произвольно ФДС [ нужна ссылка ] ) Да (через переменные и опции) Да ( .профиль ) Да (функция Unix) Нет Да
оболочки Bourne Текущая версия Различные UNIX ш 1977 Да [3] SunOS-5.x, FreeBSD [4] SunOS-5.x CDDL [5] [ нужен лучший источник ] Да Текстовый интерфейс командной строки Нет Да [номер 1] [ нужен лучший источник ] Да Да ( произвольно ФДС [ нужна ссылка ] ) Да (через переменные и опции) Да ( .профиль ) Да (функция Unix) Да [номер 2] Да
POSIX- оболочка [6] ПОСИКС ш 1992 [7] ПОСИКС Текстовый интерфейс командной строки Нет Да, если используется настроенной локалью Да Да ( произвольно ФДС [ нужна ссылка ] ) Да (через переменные и опции) Не указано ( .profile приведен в качестве примера) Да (функция Unix) Да
Баш (v4) ПОСИКС баш, ш 1989 [8] Да GNU , Linux (по умолчанию для root), macOS 10.3–10.14 GNU , Linux , Haiku , macOS 10.3–10.14 лицензия GPL Да Текстовый интерфейс командной строки Нет Да [9] [ нужен лучший источник ] Да ( встроенная функция printf ) Да Да ( произвольно ФДС [ нужна ссылка ] ) Да (через переменные и опции) Да ( /etc/профиль , .bash_profile , .bash_login , .профиль , .bashrc ) Да (функция Unix) Да Да
csh ПОСИКС csh 1978 Да СанОС ? БСД Да Текстовый интерфейс командной строки Нет Нет ? Да Да ( стандартный ввод , стандартный вывод , стандартный вывод+stderr ) Да (через переменные и опции) Да ( ~/.cshrc , ~/.логин , ~/.выход ) Да (функция Unix) Да Да
ткш ПОСИКС ткш, кш 1983 [10] Да FreeBSD (ранее по умолчанию для root), [11] ранее Mac OS X ? БСД Да Текстовый интерфейс командной строки Нет Да ? Да Да ( стандартный ввод , стандартный вывод , стандартный вывод+stderr ) Да (через переменные и опции) Да ( /etc/csh.cshrc , /etc/csh.login , ~/.tcshrc , ~/.cshrc , ~/.история , ~/.логин , ~/.cshdirs ) Да (функция Unix) Да Да
Оболочка Гамильтона C Win32 , ОС/2 csh 1988 [12] Да (версия OS/2 больше не поддерживается) Необязательный Необязательный Собственный Нет Текстовый интерфейс командной строки Нет Нет Да (оператор отметки времени -t) Да Да ( стандартный ввод , стандартный вывод , стандартный вывод+stderr ) Да (через переменные и опции) Да (через login.csh, start.csh и logout.csh) Да (опция командной строки) Да Да
Скш ПОСИКС scsh 1994 Да ? ? BSD -стиль Да ? ? ? ? ? Да ? ? ? ? Да
кш (кш93т+) ПОСИКС кш 1983 [13] [14] Да AIX , HP-UX OpenSolaris Общая общественная лицензия Да Текстовый интерфейс командной строки Нет Да Да ( printf встроен с %(%F)Т [15] ) Да Да ( фдс до 9) [15] Да (через переменные и опции) Да (системные и пользовательские профиль и кшрк ) Да (функция Unix) Да Да
например ПОСИКС кш,ш 1989? Да OpenBSD [16] OpenBSD [16] Общественное достояние Да Текстовый интерфейс командной строки Нет Нет Да Да ( произвольно ФДС [ нужна ссылка ] ) Да (через переменные и опции) Да ( /etc/профиль , .профиль ) Да (функция Unix) Да Да
zsh ПОСИКС zsh 1990 Да Deepin , GoboLinux , Grml , macOS 10.15+, Kali 2020.4+ Грмл , macOS 10.15+ С -стиль Да Текстовый интерфейс командной строки через дополнительный код [17] Да Да (различные внутренние функции, связанные с датой, с помощью strftime формат [18] и вариант для ФК встроенный [19] ) Да Да ( фдс до 9) [20] Да (через переменные, параметры, функции, стили и т. д.) Да (системные и пользовательские зшенв , зпрофиль , zshrczshrc злогин , выход из системы ) Да (функция Unix) Да Да
пепел ПОСИКС ш 1989 Да Minix , BusyBox Системы на базе NetBSD , Minix , BusyBox Системы на базе BSD -стиль Да Текстовый интерфейс командной строки Нет Частичный (для BusyBox поддерживается при редактировании из командной строки, но не при обработке строк). [21] ) Да Да ( произвольно ФДС [ нужна ссылка ] ) Да (через переменные и опции) Да ( /etc/профиль , .профиль ) Да (функция Unix) Да Да
КПК КП/М , МП/М (КПК) 1976 (1974) Нет CP/M (без входа), MP/M КП/М , МП/М Бесплатное ПО (изначально проприетарное) Да (изначально с закрытым исходным кодом) Текстовый интерфейс командной строки Нет Нет Нет Нет Нет Нет Да (автоматически через $$$.СУБ ) Частичный (только через внешний Команда SUBMIT для обновления $$$.СУБ ) Нет Да
COMMAND.COM ПРИНАДЛЕЖАЩИЙ КОМАНДА 1980 Нет (доступны сторонние реализации, не привязанные к конкретному поставщику или версии DOS) ДОС , Windows 95 , 98 , SE , Я ДОС , Windows 95 , 98 , SE , Я зависит от поставщика, например, MS - EULA , [номер 3] или BSD / GPL (бесплатные клоны) Нет (кроме OpenDOS, DR-DOS, PTS/DOS и FreeDOS) Текстовый интерфейс командной строки Нет Нет Нет (кроме DR-DOS) Да (через КОМАНДА con: или CTTY минус :) Да ( стандартный ввод , стандартный вывод ) Да (через параметры запуска и переменные среды, DR-DOS также поддерживает DIR /C /R команда переключения пользователя по умолчанию) Да (автоматический \AUTOEXEC.BAT для основной оболочки или явно через , /P:имя_файла.bat или /K параметры запуска) Да (через Команда ВЫЗОВ или и /K параметры запуска) Нет Да
ОС/2 CMD.EXE OS/2 , eComStation , ArcaOS КМД 1987 Нет OS/2 , eComStation , ArcaOS OS/2 , eComStation , ArcaOS IBM лицензионное соглашение [номер 4] Нет Текстовый интерфейс командной строки Нет Нет Нет Нет Да ( стандартный ввод , стандартный вывод , стандартное сообщение ) ? Частично (только через /K вариант запуска) Да (через Команда ВЫЗОВ или и /K параметры запуска) Нет Да
Windows CMD.EXE [номер 5] Win32 КМД 1993 Нет Windows NT, 2000, XP, Сервер 2003, Vista Windows NT, 2000, XP, Сервер 2003, Vista МС  – Лицензионное соглашение [номер 6] Нет Текстовый интерфейс командной строки Нет Частичный ( CHCP 65001 для UTF-8 , но аргументы программы по-прежнему закодированы в локальной кодовой странице) Нет Нет Да Да (через реестр, параметры запуска и переменные среды) Да (автоматически через реестр или явно через /K вариант запуска) Да (через Команда ВЫЗОВ или и /K параметры запуска) Нет Да
4ДОС , НДОС ДОС , Windows 95 , 98 , SE , Я 4ДОС , НДОС 1989 (1986) Нет (не привязано к конкретному поставщику или версии ОС) Необязательный Необязательный Лицензия MIT с ограничениями Да Текстовый интерфейс командной строки с TUI расширениями Да (всплывающие окна, справочная система, Внутренняя переменная %_MOUSE , команда INKEY/M ) Нет Да Да (через CTTY con: , за исключением ЯЩИК , РИСУНОК , РИСОВАЯ ЛИНИЯ , СПИСОК , ЭКРАН , СКРПУТ , ВЫБИРАТЬ , Команды VSCRPUT и раскраска файлов/каталогов) Да ( стандартный ввод , стандартный вывод , стандартный , стандартный вывод+stderr ) Да (через 4DOS.INI / Файл NDOS.INI , параметры запуска, переменные среды, команда SETDOS ) Да (автоматический \AUTOEXEC.BAT для основной оболочки и 4СТАРТ.БТМ / 4START.BAT, а также 4ВЫХОД.БТМ / 4EXIT.BAT для любой оболочки или явно через , /P:каталог\имя_файла.ext или /K параметры запуска) Да (через Команда ВЫЗОВ или и /K параметры запуска) Да Да
4ОС2 OS/2 , eComStation , ArcaOS 4ОС2 1992 Нет (не привязано к конкретной версии OS/2) Необязательно (но в комплекте с ArcaOS) Необязательный Бесплатное ПО Да Текстовый интерфейс командной строки Нет Нет Нет Нет Да ( стандартный ввод , стандартный вывод , стандартный , стандартный вывод+stderr ) Да (через Файл 4OS2.INI , параметры запуска, переменные среды, команда SETDOS ) Да (автоматически через 4СТАРТ.CMD / 4START.BTM, а также 4ВЫХОД.CMD / 4EXIT.BTM или явно через /K параметр start.cmd) Да (через Команда ВЫЗОВ или и /K параметры запуска) Да ?
ТСС (ранее 4NT) Win32 ТСС 1993 Нет (не привязано к конкретным версиям NT) необязательный необязательный Условно-бесплатное ПО Нет Текстовый интерфейс командной строки ( Take Command : GUI ) Да (консольная мышь, всплывающие окна, справочная система, %_XMOUSE , %_YMOUSE внутренние переменные, команда INKEY/M ) Да Да Нет Да ( стандартный ввод , стандартный вывод , стандартный , стандартный вывод+stderr ) Да (через реестр, TCMD.INI / Файл 4NT.INI , параметры запуска, переменные среды, команда SETDOS ) Да (автоматически через реестр и TCSTART / 4СТАРТ, а также TCEXIT / 4EXIT или явно через /K вариант запуска) Да (через Команда ВЫЗОВ или и /K параметры запуска) Да Нет
СМС ДКЛ [22] OpenVMS Автоматически для входа в систему/интерактивного процесса 1977? Да СМС СМС Собственный, в комплекте с VMS только по специальной лицензии Текстовый интерфейс командной строки с DECwindows/Motif Да Да, по крайней мере, по стандарту 1988 года. Да Да ( системный $вход , назначение вывода sys$ ) Да (через символы, логические имена и параметры) Да (SYS$MANAGER:SYLOGIN.COM и определяемый пользователем LOGIN.COM) Да Да Нет
PowerShell .СЕТЬ ,
.NET Framework
PowerShell 2006 Да Windows 10, 8, Сервер 2008, 7 [номер 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 МОЯ лицензия [23] Да Текстовый интерфейс командной строки ? Да Да ? Да Да (через опции) Да ( $HOME/.rcrc ) Да ? Да
БинШелл Ява ? 2005 Да ? ? LGPL ? ? ? Да ? ? Да ? ? ? ? Нет
рыба ПОСИКС рыба 2005 [24] Да ПризракBSD ? лицензия GPL Да Текстовый интерфейс командной строки ? Да ? ? Да ( произвольно ФДС [ нужна ссылка ] ) Да (через переменные среды и через веб-интерфейс через рыба_конфигурация ) Да ( /etc/fish/config.fish и ~/.config/fish/config.fish ) Да (функция Unix) Да ( ~/.config/fish/fish_history* ) ?
Ион Редокс , Линукс ион 2015 [25] Да Редокс Редокс С Да Текстовый интерфейс командной строки ? Да Да ? Да ( произвольно ФДС [ нужна ссылка ] ) Да (согласно спецификации базового каталога XDG) Да ( ~/.config/ion/initrc ) Да Да ( ~/.local/share/ion/история ) Частичный (не распространяется как отдельный исполняемый файл, но может быть собран как единое целое)
Оболочка Обычная среда Обычно вызывается Представлено Независимый от платформы Оболочка входа по умолчанию в Оболочка сценария по умолчанию в Лицензия Доступность исходного кода Пользовательский интерфейс Поддержка мыши Юникод Поддержка ISO 8601 Поддержка Перенаправление консоли потока Перенаправление Конфигурируемость Скрипты запуска/выключения Пакетные сценарии Ведение журнала Доступен как статически связанный, независимый однофайловый исполняемый файл.

Интерактивные функции

[ редактировать ]
Оболочка Команда
имя
завершение
Путь
завершение
Команда
аргумент
завершение
Подстановочный знак
завершение
Команда
история
Обязательный
аргумент
быстрый
Автоматический
предложения
Цветной
каталог
списки
Текст
выделение
Синтаксис
выделение
История каталогов, стек или подобные функции Скрытый
каталог
изменять
Auto­correction Интегрированный
среда
Фрагменты Ценить
быстрый
Меню/опции
быстрый
Прогресс
индикатор
Контекст
чувствительный
помощь
Команда
строитель
оболочка Томпсона Нет Нет Нет Нет Нет Нет Нет ? ? Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет
Оболочка Борна версии 1977 года Нет Нет Нет Нет Нет Нет Нет ? ? Нет Нет Нет Нет Нет Нет Да Нет Внешний Нет Нет
оболочки Bourne Текущая версия Нет Да [номер 8] Нет Нет Да [номер 8] Нет Нет Да Да Нет Да (CDPATH, pushd, popd, dirs), CDPATH начиная с SVr4 Нет Нет Нет Нет Да Нет Внешний Нет Нет
POSIX- оболочка Нет Нет Нет Нет Да Нет Нет Да Да Нет Да ( CDПУТЬ ) Нет Нет Нет Нет Да Нет Внешний Нет Нет
Баш (v4.0) Да Да когда определено Да [номер 9] Да Нет Нет Да Да Нет Да ( CDPATH , толчок , попд ) необязательный Нет Нет Нет Да Да Внешний Нет Нет
csh Да Да Нет Нет Да Нет Нет Да Да Нет Да ( путь к компакт-диску , толчок , попд ) необязательный Нет Нет Нет Да Нет Внешний Нет Нет
ткш Да Да когда определено Нет Да Нет Нет Да Да Нет Да ( путь к компакт-диску , толчок , попд ) необязательный Да Нет Нет Да Нет Внешний Нет Нет
Оболочка Гамильтона C Да Да Нет Да Да Нет Нет Да Да Нет Да ( путь к компакт-диску , толчок , попд ) Нет Нет Нет Нет Да Нет Внешний Нет Нет
Скш Нет Нет Нет Нет Нет Нет Нет ? ? Нет Нет Нет Нет Нет Нет Да Нет Внешний Нет Нет
кш (кш93т+) Да (расширяемый) Да (расширяемый) Нет Нет Да Нет Нет Да Да Нет Да ( cdpath , встроенный толчок , popd реализован как функции) Нет Нет Нет Нет Да Да Внешний Нет Нет
например Да Да Нет Нет Да Нет Нет Да Да Нет Нет Нет Нет Нет Нет Да Да Внешний Нет Нет
zsh Да Да когда определено Да [26] Да Да [27] Да (через прогнозируемый или определяемый пользователем [28] ) Да Да Стороннее расширение [29] Да необязательный Да Нет когда они определены (как виджеты ZLE) Да Да Внешний Да Нет
пепел Нет Нет Нет Нет Да Нет Нет Да Да Нет Нет Нет Нет Нет Нет Да Да Внешний Нет Нет
КПК Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет
COMMAND.COM Нет Нет Нет Нет Нет [номер 10] [номер 11] Нет Нет Нет Нет (только в DR-DOS через %$ON% , %$OFF% , %$HEADER% , %$FOOTER% ) Нет Нет Нет Нет Нет (только пошаговый режим с COMMAND /Y [30] ) Нет Нет Нет (только через внешний CHOICE , в DR-DOS также через ВЫКЛЮЧАТЕЛЬ / внутренние команды DRSWITCH ) Нет Нет Нет
ОС/2
CMD.EXE
Да Да Нет Нет Да Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет
Окна
CMD.EXE
частичный частичный Нет Нет Да ( Ф8 ) Нет Нет Нет Нет Нет Да ( ПУШД , ПОПД ) Нет Нет Нет Нет Да (через SET/P команда ) Нет Нет Нет Нет
4DOS Да Да Да Да Да [номер 12] [номер 13] Нет Нет Да Нет Нет (через всплывающее окно, расширенный поиск в каталоге, CDPATH , ПУШД , ПОПД , ДИРИСТОРИЯ , ДИРС , CDD , CD – команды и %@DIRSTACK[] функция) Да Нет Да Нет Да (через ВХОД , ИНКИ и команды ESET ) Да (через @SELECT[] и косвенно через комбинацию ИНКИ , ВХОД , команды ПЕРЕКЛЮЧЕНИЯ ) Нет Да Нет (кроме Команда OPTION для директив INI-файла)
4ОС2 ? ? ? ? Да Нет Нет Да Нет Нет Да Да Нет ? Нет ? ? Нет Да Нет
ТСС (ранее 4NT) Да Да Да Да Да Нет Нет Да Нет Да (через всплывающее окно, расширенный поиск в каталоге, CDPATH , ПУШД , ПОПД , ДИРИСТОРИЯ , ДИРС , CDD , CD – команды и %@DIRSTACK[] функция) Да Нет Да Нет Да (через ВХОД , ИНКИ , ESET и SET/P команды ) Да (через @SELECT[] и косвенно через комбинацию ИНКИ , ВХОД , команды ПЕРЕКЛЮЧЕНИЯ ) [номер 14] Нет Да Нет
PowerShell Да Да Да Да Да ( Ф8 ) Да Да; через PSReadLine [31] модуль (входит в состав v5.0 [32] ) или в ISE [33] Стороннее расширение [34] Да [35] Да; через PSReadLine [31] модуль (входит в состав v5.0) или в ISE [33] Да (несколько стопок; несколько типов локаций; [36] Нажмите-Местоположение , Поп-локация ) Да, в PSReadLine [31] модуль Да, в ИСЭ [33] Да, в ИСЭ [33] Да Да [37] Да [38] Да, в ИСЭ [33] всплывающее окно [39] Да, в ИСЭ [33]
RC Да [номер 15] Да [номер 15] Нет Нет Да [номер 15] Нет Нет Нет ? Нет Нет Нет Нет Нет Нет ? Нет Нет Нет Нет
БинШелл Да Да Нет Нет Нет Нет Нет ? ? Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет
СМС ДКЛ Схема минимальной уникальности Нет Нет Нет Да Да Нет ? ? Нет Нет Нет Нет Нет Нет Да Нет Нет Нет Нет
рыба Да Да когда определено или анализируется на страницах руководства [40] Да [40] Да Нет Да Да Да (доступен встроенный помощник [41] ) Да Да Да Да Да [номер 16] Да, используя сокращения команда Да (с помощью fish_config команда [42] ) Нет Нет Нет
Оболочка Команда
имя
завершение
Путь
завершение
Команда
аргумент
завершение
Подстановочный знак
завершение
Команда
история
Обязательный
аргумент
быстрый
Автоматический
предложения
Цветной
каталог
списки
Текст
выделение
Синтаксис
выделение
История каталогов, стек или подобные функции Скрытый
каталог
изменять
Auto­correction Интегрированный
среда
Фрагменты Ценить
быстрый
Меню/опции
быстрый
Прогресс
индикатор
Контекст
чувствительный
помощь
Команда
строитель

Фоновое выполнение

[ редактировать ]

Фоновое выполнение позволяет оболочке запускать команду без взаимодействия с пользователем в терминале, освобождая командную строку для дополнительной работы с оболочкой. Оболочки POSIX и другие оболочки Unix допускают фоновое выполнение с помощью символа & в конце команды. В PowerShell Start-Process[43] или Start-Job[44] можно использовать командлеты.

Завершения

[ редактировать ]
Завершение командной строки в Bash .

Функции завершения помогают пользователю вводить команды в командной строке, находя и предлагая подходящие слова для неполных команд. Завершение обычно запрашивается нажатием клавиши завершения (часто Tab ↹ ключ).

Дополнение имени команды — это завершение имени команды. В большинстве оболочек команда может быть программой в пути к команде (обычно $PATH), встроенная команда, функция или псевдоним.

Завершение пути — это завершение пути к файлу, относительного или абсолютного.

Завершение с помощью подстановочных знаков — это обобщение завершения пути, при котором выражение соответствует любому количеству файлов с использованием любого поддерживаемого синтаксиса для сопоставления файлов .

Завершение переменной — это завершение имени имени переменной ( переменная среды или переменная оболочки).Bash, zsh и fish имеют завершение для всех имен переменных. PowerShell имеет дополнения для имен переменных среды, имен переменных оболочки и — из пользовательских функций — имен параметров.

Завершение аргументов команды — это завершение аргументов конкретной команды. Существует два типа аргументов: именованные и позиционные. Именованные аргументы, часто называемые опциями , идентифицируются по имени или букве, предшествующей значению, тогда как позиционные аргументы состоят только из значения. Некоторые оболочки допускают завершение имен аргументов, но немногие поддерживают завершение значений.

Bash, zsh и fish предлагают завершение имени параметра через определение, внешнее по отношению к команде, которое распространяется в отдельном файле определения завершения. Для завершения имени/значения параметра команды эти оболочки предполагают завершение пути/имени файла, если для команды не определено завершение. Завершение можно настроить так, чтобы оно предлагало завершение путем вызова функции оболочки. [45] Оболочка fish дополнительно поддерживает анализ страниц руководства для извлечения информации о параметрах, которую можно использовать для улучшения дополнений/предложений. В PowerShell все типы команд (командлеты, функции, файлы сценариев) по своей сути предоставляют данные об именах, типах и допустимых диапазонах/списках значений для каждого аргумента. Эти метаданные используются PowerShell для автоматической поддержки имени аргумента и завершения значения для встроенных команд/функций, определяемых пользователем команд/функций, а также для файлов сценариев. Отдельные командлеты также могут определять динамическое завершение значений аргументов, при этом значения завершения вычисляются динамически в работающей системе.

История команд

[ редактировать ]

Пользователи оболочки могут вводить что-то похожее на то, что они вводили раньше. Поддержка истории команд означает, что пользователь может вызвать предыдущую команду в редакторе командной строки и отредактировать ее перед вводом потенциально измененной команды.

Оболочки, поддерживающие завершение, также могут иметь возможность напрямую завершить команду из истории команд, учитывая частичную/начальную часть предыдущей команды.

Большинство современных оболочек поддерживают историю команд. Оболочки, которые поддерживают историю команд в целом, также поддерживают завершение из истории, а не просто вызов команд из истории. Помимо обычного текста команды, PowerShell также записывает время начала и окончания выполнения, а также статус выполнения в истории команд.

Обязательный аргумент

[ редактировать ]

Обязательные аргументы/параметры — это аргументы/параметры, которым должно быть присвоено значение при вызове команды, функции или файла сценария. Оболочка, которая может перед вызовом определить, что отсутствуют обязательные значения, может помочь интерактивному пользователю, запрашивая эти значения вместо того, чтобы допустить сбой команды. Наличие запроса оболочки для отсутствующих значений позволит автору сценария, команды или функции пометить параметр как обязательный вместо создания кода сценария, который либо запрашивает пропущенные значения (после определения того, что он запускается в интерактивном режиме), либо завершается ошибкой с сообщение.

PowerShell позволяет командам, функциям и сценариям определять аргументы/параметры как обязательные . Оболочка перед вызовом определяет, есть ли какие-либообязательные аргументы/параметры, которые не были связаны, а затем запрашивают у пользователя значения (значения) перед фактическим вызовом. [46]

Автоматические предложения

[ редактировать ]
Завершение командной строки в PowerShell .

Оболочки с автоматическими предложениями отображают необязательные дополнения командной строки по мере ввода пользователем. PowerShell Shell изначально и Fish поддерживают эту функцию; нажав кнопку Tab ↹ ключ вставляет завершение.

Реализации этой функции могут различаться в разных оболочках; например, PowerShell [47] и зш [48] используйте внешний модуль для предоставления дополнений, а fish получает свои завершения из истории команд пользователя. [49]

История каталогов, стек или подобные функции

[ редактировать ]

Оболочки могут записывать историю каталогов, в которых находился пользователь, и позволять быстро переключаться на любое записанное место. Это называется «стеком каталогов». Идея была реализована еще в 1978 году. [50] в выпуске оболочки C (csh).

PowerShell позволяет использовать несколько именованных стеков. Местоположение (каталоги) можно помещать в текущий стек или из именованного стека или извлекать из него. Любой стек может стать текущим стеком (по умолчанию). PowerShell В отличие от большинства других оболочек, концепция расположения позволяет стекам местоположений хранить местоположения файловой системы, а также другие типы местоположений, такие как, например, Active Directory организационные подразделения/группы SQL Server , базы данных/таблицы/объекты Internet Information Server , приложения/сайты/виртуальные каталоги .

Интерпретаторы командной строки 4DOS и его графический преемник Take Command Console также имеют стек каталогов.

Неявное изменение каталога

[ редактировать ]

Имя каталога можно использовать непосредственно как команду, которая неявно изменяет текущее местоположение каталога.

Это следует отличать от несвязанной функции загрузки диска, поддерживаемой Concurrent DOS , Multiuser DOS , System Manager и REAL/32 , где буква диска L: будет неявно обновлена, чтобы указать путь загрузки загруженного приложения, тем самым позволяя приложениям ссылайтесь на файлы, находящиеся в их каталоге загрузки, под стандартизированной буквой диска, а не по абсолютному пути. [51]

Автокоррекция

[ редактировать ]
Демонстрация автозаполнения и автоисправления Zsh для программы telnet .

Если командная строка не соответствует напрямую команде или аргументам, проверка орфографии может автоматически исправить типичные ошибки ввода (например, чувствительность к регистру , пропущенные буквы). Есть два подхода к этому; оболочка может либо предложить возможные исправления при вызове команды, либо это может произойти раньше в рамках завершения или автопредложения.

Оболочки tcsh и zsh имеют дополнительную функцию проверки/исправления орфографии при вызове команды.

Фиш выполняет автокоррекцию после завершения и самовнушения. Таким образом, эта функция не мешает набирать всю команду и нажимать Enter, тогда как широкое использование клавиш табуляции и клавиш со стрелками вправо делает оболочку в основном нечувствительной к регистру.

PSReadLine [31] Модуль PowerShell (поставляемый с версией 5.0) предоставляет возможность указать CommandValidationHandler ScriptBlock, который запускается перед отправкой команды. Это позволяет индивидуально исправлять часто вводимые с ошибками команды и проверять их перед фактическим запуском команды.

Индикатор прогресса

[ редактировать ]

Сценарий оболочки (или задание) может сообщать интерактивному пользователю о ходе выполнения длительных задач.

Системы Unix/Linux могут предлагать поддержку других инструментов с использованием индикаторов прогресса из сценариев или в виде отдельных команд, таких как программа «pv». [52] Однако это не интегрированные функции оболочек.

PowerShell имеет встроенную команду и функции API (которые будут использоваться при разработке команд) для записи/обновления индикатора выполнения. Сообщения индикатора выполнения отправляются отдельно от обычного вывода команды.и индикатор выполнения всегда отображается на конечной интерактивной пользовательской консоли независимо от того, исходят ли сообщения о ходе выполнения из интерактивного сценария, из фонового задания или из удаленного сеанса.

Цветные списки каталогов

[ редактировать ]

JP Software обеспечивают настраиваемую пользователем раскраску имен файлов и каталогов в списках каталогов на основе их расширения файлов и/или атрибутов с помощью опционально определенного Процессоры командной строки %COLORDIR% переменная среды.

Для оболочек Unix/Linux это особенность команда ls и терминал.

Выделение текста

[ редактировать ]

Процессоры командной строки в DOS Plus , Multiuser DOS , REAL/32 и во всех версиях DR-DOS поддерживают ряд дополнительных переменных среды для определения escape-последовательностей, позволяющих управлять выделением текста, его изменением или раскрашиванием для отображения или печати в таких командах, как ТИП . Все упомянутые процессоры командной строки поддерживают %$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 это функция терминала.

Подсветка синтаксиса

[ редактировать ]

Определяющей особенностью Fish Shell является встроенная подсветка синтаксиса. По мере ввода пользователем текст окрашивается, чтобы показать, является ли введенная команда допустимой командой или нет (исполняемый файл существует, и у пользователя есть разрешения на его запуск), и действительный файл пути подчеркнуты. [53]

Независимый проект предлагает подсветку синтаксиса в качестве дополнения к Z Shell (zsh). [54] Однако это не часть оболочки.

PowerShell обеспечивает настраиваемую подсветку синтаксиса в командной строке с помощью PSReadLine. [31] модуль. Этот модуль можно использовать с PowerShell v3.0+ и входит в состав версии v5.0 и более поздних. Он загружается по умолчанию в хост командной строки «powershell.exe», начиная с версии 5.0. [55]

Take Command Console (TCC) предлагает подсветку синтаксиса в интегрированной среде.

Контекстно-зависимая справка

[ редактировать ]

4DOS, 4OS2, 4NT / Take Command Console и PowerShell (в PowerShell ISE) ищут контекстно-зависимую справочную информацию, когда F1 нажимается.

Zsh предоставляет различные формы настраиваемой контекстно-зависимой помощи как часть своей программы. помощи при запуске , виджет _complete_help или в дополнении опций некоторых команд.

Рыбная оболочка предоставляет краткое описание флагов команды во время завершения вкладки.


Возможности программирования

[ редактировать ]
Оболочка Функции Обработка исключений Поиск и замена при замене переменных Arith­metic Плавающая точка Библиотека математических функций Линейные массивы или списки Ассоциативные массивы Лямбда-функции функция оценки Генерация псевдослучайных чисел Байт-код
Оболочка Борна версии 1977 года Нет Да (через ловушка ) Нет Нет Нет Нет Нет Нет Нет Да Нет Нет
оболочки Bourne Текущая версия Да, начиная с СВР2 Да (через ловушка ) Нет Да [номер 8] Нет Нет Нет Нет Нет Да Нет Нет
POSIX- оболочка Да Да (через ловушка ) Нет Да Нет Нет Нет Нет Нет Да Нет Нет
Баш (v4.0) Да Да (через ловушка ) Да (через синтаксис ${// }) Да Нет Нет Да Да Нет Да Да ( $СЛУЧАЙНО ) Нет
csh Нет Нет Да (через $var:s/// синтаксис ) Да Нет Нет Да Нет Нет Да Нет Нет
ткш Работа в процессе [56] Нет Да (через $var:s/// синтаксис ) Да Нет Нет Да Нет Нет Да Нет Нет
Оболочка Гамильтона C Да Нет Да (через $var:s/// синтаксис ) Да Да Да Да Нет Нет Да Да (случайная полезность) Нет
Скш Да ? Да (через строковые функции и регулярные выражения) ? ? ? Да ? Да Да Да (случайное целое число, случайное действительное число) Да (компилятор — виртуальная машина Scheme48, через сшвм )
кш (кш93т+) Да Да (через ловушка ) Да (через синтаксис ${// } и встроенные команды) Да Да Да Да Да Нет Да Да ( $СЛУЧАЙНО ) Да (компилятор называется шкомп )
например Да Да (через ловушка ) Нет Да Нет Нет Да Нет Нет Да Да ( $СЛУЧАЙНО ) Нет
zsh Да Да Да (через ${:s// } и синтаксис ${// }) Да Да Да ( zsh/mathfunc module) Да Да Нет Да Да ( $СЛУЧАЙНО ) Да (встроенный zcompile команда )
пепел Да Да (через ловушка ) Нет Да (с 1992 г.) [57] Нет Нет Нет Нет Нет Да Нет Нет
КПК Нет ? Нет Нет ? ? Нет Нет Нет Нет Нет Нет
COMMAND.COM Нет Частичный (только автоматический сбой (через КОМАНДА /F (или /N в некоторых версиях DR-DOS)) Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет
ОС/2 CMD.EXE Нет Нет Нет ? Нет Нет ? Нет Нет Нет Нет Нет
Windows CMD.EXE Да (через ЗВОНИТЕ :лейбл ) Нет Да (через SET % имя_переменной : выражения синтаксис ) Да (через НАБОР /А ) [58] Нет Нет Да (через НАБОР [59] ) Нет Нет Нет Да ( %случайный% ) Нет
4DOS Да Да (через Команда ВКЛ , опционально 4DOS/Ф ) Да (через %@Replace[...] функция) Да (через НАБОР /А ) ? ? Да (через диапазоны, списки включения, @ списки файлов и ЗА команду) Нет Нет Да Да ( %@Random[...] функция) Да (через команда BATCOMP )
4ОС2 ? ? ? ? ? ? ? ? Нет Да Да ( %@Random[...] функция) ?
ТСС (ранее 4NT) Да Да (через ПО и различные ... команды МОНИТОРА) Да (через %@Replace[...] функция) Да (через НАБОР /А ) ? ? Да (через диапазоны, списки включения, @ списки файлов и ЗА команду) ? Нет Да Да ( %@Random[...] функция) Да (через команда BATCOMP )
PowerShell Да Да (попробуй-поймай-наконец-то) Да ( -заменить оператор) Да Да [Математика] класс [60] Да Да Да [61] Да Да Да, автоматический
RC Да Да Нет Да ? ? Да ? Нет Да Нет Нет
БинШелл Да Да ? Да ? ? Да Да Нет Да Да Да
СМС ДКЛ Да Да Нет Да Нет да, для скомпилированных программ Да Нет Нет Нет Нет Нет
рыба Да Да (через ловушка ) Да, через строковая встроенная команда [62] Да Да Да Да Нет Нет Да Да ( случайный ) Нет

Обработка строк и сопоставление имен файлов

[ редактировать ]
Оболочка Обработка строк Чередование ( расширение скобок ) Сопоставление с образцом ( регулярные выражения встроенные ) Сопоставление с образцом ( подстановка имен файлов ) Квалификаторы подстановки (генерация имени файла на основе атрибутов файла) Рекурсивная подстановка (генерация файлов из подкаталогов любого уровня)
Оболочка Борна версии 1977 года ? Нет Нет Да ( * , ? , [...] ) Нет Нет
оболочки Bourne Последняя версия Частичное (удаление префиксов и суффиксов при расширении переменных) Нет Нет Да ( * , ? , [...] ) Нет Нет
POSIX- оболочка Частичное (удаление префиксов и суффиксов при расширении переменных) Нет Нет Да ( * , ? , [...] ) Нет Нет
Баш (v4.0) Частичное (удаление префиксов и суффиксов при расширении переменных) Да Да Да ( * , ? , [...] , {... }) Нет Да ( **/... )
csh Да (:s и другие операторы редактирования) Да Нет Да Нет Нет
ткш Да (:s и другие операторы редактирования) Да Да Да Нет Нет
Оболочка Гамильтона C Да (:s и другие операторы редактирования + substr, strlen, strindex, printf,verse, Upper, Lower, Concat и другие встроенные функции) Да Нет Да Нет Да (через неопределенный каталог "..." подстановочный знак [63] )
Скш ? ? Да Да Нет Нет
кш (кш93т+) Частичное (удаление префикса, суффикса и замена строки в расширении переменной) Да [64] Да Да ( * , ? , [...] ) Нет Да (с set -G , никаких подписок по символическим ссылкам)
например ? Да [64] Нет Да Нет Нет
zsh Да (посредством обработки переменных: например, извлечение подстроки, различные преобразования посредством расширения параметров) Да Да Да ( * , ? , [...] , расширенное подстановка [65] ) Да Да ( **/... или ***/... для перехода по символическим ссылкам)
пепел ? ? Нет Да Нет Нет
КПК Нет Нет Нет Нет Нет Нет
COMMAND.COM Нет Нет Нет Да ( * , ? ) Нет Нет
ОС/2 CMD.EXE Нет Нет Нет Да ( * , ? ) Частичный (только в DIR /A:... команда) Нет
Windows CMD.EXE Частичный (только через ДЛЯ /F и НАБОР /А ) Нет Нет [номер 17] Да ( * , ? ) Частичный (только в DIR /A:... команда) Да (через FOR /R или, если возможно, косвенно через /S опция подкаталога)
4DOS Да (через переменные функции %@...[] , расширенная обработка переменных среды, различные строковые команды и ДЛЯ /F и НАБОР /А ) Нет Нет Да ( * , ? , [...] , расширенные подстановочные знаки , Всплывающая команда ВЫБРАТЬ ) Да (через /A:... атрибут и /I"..." параметры описания и /[S...] размер, /[Т...] время, /[Д...] дата и /[!...] диапазоны исключения файлов) Да (через Команда FOR /R или косвенно через ГЛОБАЛЬНАЯ команда или, если возможно, /S опция подкаталога)
4ОС2 ? Нет Нет ? ? ?
ТСС (ранее 4NT) Да (через переменные функции %@...[] , расширенная обработка переменных среды, различные строковые команды и ДЛЯ /F и НАБОР /А ) Нет Да Да ( * , ? , [...] , расширенные подстановочные знаки , Всплывающая команда ВЫБРАТЬ ) Да (через /A:... атрибут и /I"..." параметры описания и /[S...] размер, /[Т...] время, /[Д...] дата, /[О...] владелец, и /[!...] диапазоны исключения файлов) Да (через Команда FOR /R или косвенно через ГЛОБАЛЬНАЯ команда или, если возможно, /S опция подкаталога)
PowerShell Да (Concat/Substring/Insert/Remove/Replace, ToLower/ToUpper, Trim/TrimStart/TrimEnd, Compare, contains/StartsWith/EndWith, Format, IndexOf/LastIndexOf, Pad/PadLeft/PadRight, Split/Join, функции регулярных выражений и другие строковые функции .NET) Оператор диапазона для чисел [66] Да (полная поддержка регулярных выражений) [номер 18] Да ( * , ? , [...] ) ? ?
RC ? ? Нет Да Нет Нет
БинШелл ? ? Да ? ? ?
СМС ДКЛ Да Нет Нет Да Нет Да (через [СУБДИРТ...] )
рыба Да (встроенная строковая функция) Да да (через встроенный совпадение строк и функции замены строк ) Да ( * , ? , {... }) Нет Да ( **/... )

Межпроцессное взаимодействие

[ редактировать ]
Оболочка Трубы Замена команды Замена процесса Подоболочки TCP / UDP- соединения в виде потоков Укладка нажатий клавиш
Оболочка Борна байты одновременно Да Нет Да Нет Н/Д [номер 19]
POSIX- оболочка байты одновременно Да Нет Да Нет Н/Д [номер 19]
Баш (v4.0) байты одновременно Да Да (если система поддерживает /dev/fd/ ⟨n⟩ или именованные каналы) Да Да (только клиент) Н/Д [номер 19]
csh байты одновременно Да Нет Да Нет Н/Д [номер 19]
ткш байты одновременно Да Нет Да Нет Н/Д [номер 19]
Оболочка Гамильтона C байты одновременно Да Нет Да Нет ?
Скш текст ? ? ? Да Н/Д [номер 19]
кш (кш93т+) байты (могут содержать сериализованные объекты, если print -C используется) одновременно Да ( $(...) и ${<пробел>...; }) Да (если система поддерживает /dev/fd/ ⟨n⟩ ) Да Да (и поддержка SCTP, только клиент) Н/Д [номер 19]
например байты одновременно Да Нет Да Нет Н/Д [номер 19]
zsh байты одновременно Да Да Да Да (клиент и сервер, но только TCP) Н/Д [номер 19]
пепел байты одновременно Да Нет Да Нет Н/Д [номер 19]
КПК Нет Нет Нет Нет Нет Нет
COMMAND.COM текстовые последовательные временные файлы Нет Нет Частичный (только в многозадачном режиме DR-DOS через КОМАНД.КОМ/Т ) Нет Нет
ОС/2 CMD.EXE текст одновременно Нет Нет ? Нет Нет
Windows CMD.EXE текст одновременно Да (через FOR/F Команда ) Нет Да (обратный апостроф: ` в FOR /F использовать обратноq ) Нет Нет
4DOS текстовые последовательные временные файлы Да (через FOR/F Команда ) ? Частично (через %@EXECSTR[] и %@EXEC[] или через НАБОР /М , ESET/M и ОТМЕНА /М и %@ВЛАДЕЛЕЦ[...] ) Нет Да (через КЛАВИАТУРА и КСТАК ) [67]
4ОС2 текст одновременно ? ? ? Нет Да (через КЛАВИАТУРА )
ТСС (ранее 4NT) текст одновременно Да (через FOR/F Команда ) ? Частично (через %@EXECSTR[] и %@EXEC[] ) Да (через ФТП , ТФТП , FTPS , СФТП , HTTP , HTTPS и IFTP , только клиент) Да (через КЛАВИАТУРА )
PowerShell объекты одновременно Да Нет Да Да ?
RC текст одновременно Да Да (через: <{cmd }, если система поддерживает /dev/fd/ ⟨n⟩ ) Да Нет ?
БинШелл не поддерживается ? ? ? Да ?
СМС ДКЛ текст (через команда ТРУБА ) Да Нет Да (спаун) Да (только TCP сервера) Нет
рыба байты одновременно Да ( ... ) Нет (сломанный) [68] Нет Нет Н/Д [номер 19]

Укладка нажатий клавиш

[ редактировать ]

В ожидании того, что данное запущенное приложение может принять в качестве ввода с клавиатуры, пользователь оболочки инструктирует оболочку сгенерировать последовательность имитированных нажатий клавиш, которые приложение будет интерпретировать как ввод с клавиатуры от интерактивного пользователя. Отправляя последовательности нажатий клавиш, пользователь может иметь возможность указать приложению выполнить действия, которые было бы невозможно достичь с помощью перенаправления ввода или которые иным образом потребовали бы интерактивного пользователя. Например, если приложение действует на нажатия клавиш, которые не могут быть перенаправлены, различает обычные и расширенные клавиши, очищает очередь перед принятием нового ввода при запуске или при определенных условиях или потому, что оно вообще не считывает стандартный ввод. Стекирование нажатий клавиш обычно также обеспечивает средства для управления временем отправки имитированных клавиш или задержки новых клавиш до тех пор, пока очередь не будет очищена и т. д. Оно также позволяет имитировать клавиши, которых нет на клавиатуре (поскольку соответствующие клавиши физически не существуют или поскольку используется другая раскладка клавиатуры), и поэтому пользователь не сможет вводить текст.

Функции безопасности

[ редактировать ]
Оболочка Запрос безопасного пароля (пароль) Пароли файлов/каталогов Разрешение на выполнение Ограниченное подмножество оболочки Подмножество безопасных данных
Оболочка Борна с помощью Стти [номер 20] ? Н/Д [номер 21] Да Нет
POSIX- оболочка с помощью Стти [номер 20] ? Н/Д [номер 21] Нет Нет
Баш (v4.0) читать -с ? Н/Д [номер 21] Да Нет
csh с помощью Стти [номер 20] ? Н/Д [номер 21] Да Нет
ткш с помощью Стти [номер 20] ? Н/Д [номер 21] Да Нет
Оболочка Гамильтона C Нет Нет Нет Нет Нет
Скш с помощью Стти [номер 20] ? Н/Д [номер 21] Нет Нет
кш (кш93т+) с помощью Стти [номер 20] ? Н/Д [номер 21] Да Нет
например с помощью Стти [номер 20] ? Н/Д [номер 21] Да Нет
zsh читать -с ? Н/Д [номер 21] [номер 22] Да Нет
пепел с помощью Стти [номер 20] ? Н/Д [номер 21] Да Нет
КПК Нет Нет Нет Нет Нет
COMMAND.COM Частичный (только под DR-DOS, запрашивает пароль, если файл/каталог защищен) Частичный (только под DR-DOS через \dirname;dirpwd\имя_файла; синтаксис filepwd) [номер 23] Частичный (только под DR-DOS, если файлы защищены паролем на чтение и/или выполнение) [номер 24] Нет Нет
ОС/2 CMD.EXE Нет Нет Нет Нет Нет
Windows CMD.EXE Нет Нет Нет Нет Нет
4DOS Да (через ВВОД /P или ИНКИ /П ) [номер 25] Частичный (только под DR-DOS через \имя_каталога;;dirpwd\имя_файла;; синтаксис filepwd) [номер 23] Частичный (только под DR-DOS, если файлы защищены паролем на чтение и/или выполнение) [номер 24] Нет Нет
4ОС2 ? Нет Нет Нет Нет
ТСС (ранее 4NT) Да (через ВВОД /П , ИНКЕЙ /P или ЗАПРОС /P ) [номер 25] Нет Нет Нет Нет
PowerShell Да [номер 26] Нет Нет [номер 27] Да [номер 28] Да [69]
RC с помощью Стти [номер 20] ? Н/Д [номер 21] Да [70] Нет
БинШелл ? ? ? ? ?
СМС ДКЛ Да Нет Да Да Нет
рыба читать -с ? Н/Д [номер 21] [номер 22] Да (через рыба -л ) ?

Безопасная подсказка

[ редактировать ]

Некоторым сценариям оболочки необходимо запрашивать у пользователя конфиденциальную информацию, такую ​​как пароли , личные цифровые ключи, PIN-коды или другую конфиденциальную информацию. Конфиденциальный ввод не должен возвращаться на экран/устройство ввода, где его могут получить неуполномоченные лица. Также следует избегать представления конфиденциальной информации в памяти в виде открытого текста, поскольку это может привести к компрометации информации, например, через файлы подкачки, дампы ядра и т. д. [71]

Оболочки bash, zsh и PowerShell предлагают эту особенность. [72] [73] Оболочки, которые не предлагают это как специальную функцию, все равно могут отключить эхо другими способами. Оболочки, выполняющиеся в операционной системе Unix/Linux, могут использовать stty внешняя команда для включения/выключения отображения вводимых символов. [74] Помимо отсутствия повторного отображения символов, PowerShell -AsSecureString Опция также шифрует вводимый символ посимвольно во время процесса ввода, гарантируя, что строка никогда не будет представлена ​​в памяти в незашифрованном виде, где она может быть скомпрометирована посредством дампов памяти, сканирования, транскрипции и т. д.

Разрешение на выполнение

[ редактировать ]

Некоторые операционные системы определяют разрешение на выполнение , которое может быть предоставлено пользователям/группам для файла, если сама файловая система поддерживает это.

В системах Unix разрешение на выполнение контролирует доступ к вызову файла как программы и применяется как к исполняемым файлам, так и к сценариям.Поскольку разрешение применяется в загрузчике программы , ни от вызывающей программы, ни от вызываемой программы не требуется никаких обязательств по обеспечению разрешения на выполнение – это также относится к оболочкам и другим программам-интерпретаторам.Такое поведение определяется библиотекой POSIX C , которая используется для взаимодействия с ядром. POSIX указывает, что exec семейства функций завершится с ошибкой EACCESS (отказано в разрешении), если файлу отказано в разрешении на выполнение (см. execve – Справочник по системным интерфейсам, Единая спецификация UNIX , версия 4 от The Open Group ).

Разрешение на выполнение применяется только при непосредственном запуске сценария. Если сценарий вызывается в качестве аргумента интерпретирующей оболочки, он будет выполнен независимо от того, имеет ли пользователь разрешение на выполнение этого сценария.

Хотя Windows также указывает разрешение на выполнение , ни одна из специфичных для Windows оболочек не блокирует выполнение сценария, если разрешение не было предоставлено.

Ограниченное подмножество оболочки

[ редактировать ]

Несколько оболочек можно запустить или настроить для запуска в режиме, в котором пользователю доступен только ограниченный набор команд и действий. безопасности Хотя это и не граница (блокируется команда, обращающаяся к ресурсу, а не сам ресурс), тем не менее, это обычно используется для ограничения действий пользователей перед входом в систему.

Ограниченный режим является частью спецификации POSIX для оболочек, и большинство оболочек Linux/Unix поддерживают такой режим, в котором некоторые встроенные команды отключены и могут быть вызваны только внешние команды из определенного каталога. [75] [76]

PowerShell поддерживает ограниченные режимы через файлы конфигурации сеанса или конфигурации сеанса. Файл конфигурации сеанса может определять видимые (доступные) командлеты, псевдонимы, функции, поставщики путей и многое другое. [77]

Подмножество безопасных данных

[ редактировать ]

Сценарии, вызывающие другие сценарии, могут представлять угрозу безопасности, поскольку потенциально могут выполнять внешний код в контексте пользователя, запустившего исходный сценарий. Сценарии обычно разрабатываются таким образом, чтобы включать сценарии исключительно из известных безопасных мест; но в некоторых случаях, например, когда пользователю предлагается настроить среду или загрузить локализованные сообщения, в сценарий может потребоваться включить другие сценарии/файлы. [78] Одним из способов устранения этого риска является предоставление оболочке безопасного подмножества команд, которые могут выполняться включенным сценарием.

PowerShell Разделы данных могут содержать константы и выражения с использованием ограниченного подмножества операторов и команд. [79] Разделы данных PowerShell используются, когда, например, локализованные строки необходимо прочитать из внешнего источника, защищая при этом от нежелательных побочных эффектов.

Примечания

[ редактировать ]
  1. ^ С середины 1990-х гг.
  2. ^ если скомпилировано с -DACCT.
  3. ^ Компонент MS-DOS и Windows – на него распространяется действующая лицензия для MS-DOS или Microsoft Windows.
  4. ^ Компонент OS/2 – на него распространяется действующая лицензия на OS/2.
  5. ^ Расширения команд включены или «CMD / X».
  6. ^ Компонент Windows – на него распространяется действующая лицензия для Microsoft Windows.
  7. ^ Microsoft PowerShell устанавливается по умолчанию в Windows 7 и более поздних версиях. Это дополнительная загрузка для пользователей Windows Vista или Windows XP.
  8. ^ Перейти обратно: а б с текущие версии от Йорга Шиллинга.
  9. ^ Alt-Shift-8 или Alt-* раскроет полный список соответствующих имён файлов.
  10. ^ Доступно через DOSKEY . Дополнение
  11. ^ Доступно в DR-DOS через ИСТОРИЯ .
  12. ^ Альтернативно доступно через DOSKEY . Дополнение
  13. ^ Альтернативно доступно в DR-DOS через ИСТОРИЯ тоже.
  14. ^ TCC имеет специальные функции подсказок для ответов «Да», «Нет», «Отмена», «Закрыть», «Повторить».
  15. ^ Перейти обратно: а б с Обрабатывается rio , GNU readline , editline или vrl .
  16. ^ Рыбья раковина представляет собой интерактивную поверхность ввода/вывода на основе символов.
  17. ^ Недоступно во встроенной оболочке. Внешний Команда FINDSTR /R доступна в большинстве выпусков Windows.
  18. ^ PowerShell использует полный механизм регулярных выражений .NET , который поддерживает именованные захваты, просмотр вперед/назад с нулевой шириной, жадный/нежадный режим, классы символов, подсчет уровней и т. д.
  19. ^ Перейти обратно: а б с д и ж г час я дж к xautomation и xdotool можно использовать для генерации нажатий клавиш в системе X Window ; или программа может быть запущена в псевдотерминале, чтобы иметь возможность управлять ею (как в случае с ожидаем инструмент).
  20. ^ Перейти обратно: а б с д и ж г час я Оболочка может использовать stty — утилита для подавления отображения набранных символов на экране. Для этого требуется несколько шагов: 1. чтение текущего состояния эха, 2. отключение эха, 3. чтение входных данных, 4. переключение состояния эха обратно в исходное состояние.
  21. ^ Перейти обратно: а б с д и ж г час я дж к л Разрешение на выполнение сценария обеспечивается отдельной программой, загрузчиком программы, путем отказа вызывать интерпретатор (возможно, оболочку), указанный в хеш-банге . Интерпретатор не применяет разрешение на выполнение, если он вызывается напрямую, как это сделал бы загрузчик программы, с файлом в качестве аргумента; для этого требуется только разрешение на чтение, а также передача файла в качестве входных данных интерпретатору, и в этом случае интерпретатор не может видеть разрешение на выполнение.
  22. ^ Перейти обратно: а б Оболочки zsh и fish также учитывают разрешение на выполнение для завершения команды.
  23. ^ Перейти обратно: а б В DR-DOS разделителем паролей файлов и каталогов является точка с запятой. Это также поддерживается в 4DOS, пока команда не поддерживает списки включения. В 4DOS разделитель паролей должен быть удвоен для всех команд, поддерживающих списки включения, чтобы отличать пароли от списков включения. Команды, не поддерживающие списки включения, принимают обе формы. DR-DOS 7.02 и выше также дополнительно принимают двойную точку с запятой, так что двойные точки с запятой работают как в COMMAND.COM, так и в 4DOS независимо от выполняемой команды.
  24. ^ Перейти обратно: а б DR-DOS поддерживает пароли файлов для чтения/записи/удаления и, при необходимости, разрешения на выполнение. По умолчанию файлы не защищены, но систему можно настроить так, чтобы для чтения некоторых пакетных сценариев требовался пароль.
  25. ^ Перейти обратно: а б ВВОД /P и INKEY /P возвращает звездочки для каждого введенного символа.
  26. ^ Read-Host -AsSecureString считывает строку символов с устройства ввода в зашифрованную строку, по одному символу за раз, таким образом гарантируя, что в памяти нет образа открытого текста, который можно было бы получить при сканировании памяти или из аварийных дампов памяти. дампы, файлы подкачки, файлы журналов и т.п.
  27. ^ Файлы сценариев PowerShell ( файлы .ps1 ) по умолчанию связаны с редактором «Блокнот», а не с механизмом выполнения PowerShell. Вызов Файл .ps1 запустит Блокнот, а не выполнит скрипт.
  28. ^ Сценарии запуска для каждого компьютера/пользователя могут импортировать модули и предоставлять подмножество команд/функций, доступных в модулях.
  1. ^ , Независимая от платформы версия основанная на историческом исходном исходном коде UNIX V7, доступна у Джеффа Коллайера.
  2. ^ Историческая версия UNIX V7 доступна по лицензии BSD через The Unix Heritage Society и другие.
  3. ^ , Независимая от платформы версия основанная на исходном коде SVr4/Solaris, доступна у Йорга Шиллинга.
  4. ^ Феррелл, Джон, «Глава 2. Оболочка по умолчанию» , Краткое руководство FreeBSD для пользователей Linux , Проект документации FreeBSD , получено 24 июля 2015 г.
  5. ^ "SchilliX-ON / SchilliX-ON Mercurial / [b1d9a2] /usr/src/cmd/sh" . Sourceforge.net . Проверено 2 июля 2015 г.
  6. ^ IEEE и Открытая группа (2008). Стандарт IEEE 1003.1 для информационных технологий — интерфейс переносимой операционной системы (POSIX): оболочка и утилиты, выпуск 7 .
  7. ^ Как часть IEEE Std.1003.2-1992 (POSIX.2); интегрирован в IEEE Std.1003.1 редакции 2001 года.
  8. ^ Фокс, Брайан (7 июня 1989 г.). Тауэр-младший, Леонард Х. (ред.). «Bash находится в бета-версии!» . Группа новостей : gnu.announce . Usenet:   [электронная почта защищена] . Проверено 28 октября 2010 г.
  9. ^ Купер, Мендель, «Глава 37.3.2. Bash, версия 4.2» , Расширенное руководство по написанию сценариев Bash , Проект документации Linux , получено 30 апреля 2015 г. , «Bash теперь поддерживает escape-коды \u и \U Unicode».
  10. ^ Грир, Кен (3 октября 1983 г.). «Оболочка C с распознаванием/дополнением команд и имен файлов» . Группа новостей : net.sources . Проверено 29 декабря 2010 г.
  11. ^ «Краткое руководство FreeBSD для пользователей Linux®» . Портал документации FreeBSD . Проверено 4 февраля 2024 г.
  12. ^ Сассман, Энн (26 декабря 1988 г.). «Hamilton C Shell ускоряет разработку приложений OS/2» (PDF) . Неделя ПК (26 декабря 1988 г. - 02 января 1989 г.): 37 . Проверено 22 ноября 2010 г.
  13. ^ Гомес, Рон (9 июня 1983 г.). «Расписание конференции USENIX в Торонто (предварительное)» . Группа новостей : net.usenix . Проверено 29 декабря 2010 г.
  14. ^ Харрис, Гай (10 октября 1983). «вопрос csh» . Группа новостей : net.flame . Проверено 29 декабря 2010 г.
  15. ^ Перейти обратно: а б ksh93(1) справочная страница
  16. ^ Перейти обратно: а б Оболочкой по умолчанию в OpenBSD является ksh (pdksh).
  17. ^ Редактор командной строки zsh полностью настраиваемый и может обеспечивать поддержку мыши различными способами, например, с помощью Стефана Шазеласа. мышь.зш .
  18. ^ zsh(1) man-страница и подстраницы
  19. ^ zshbuiltins(1) справочная страница
  20. ^ Лефевр, Винсент (11 февраля 2015 г.). «многозначные дескрипторы файлов» . zsh-users (список рассылки) . Проверено 23 декабря 2021 г.
  21. ^ «#782228 — busybox sh не поддерживает многобайтовые символы при обработке строк — журналы отчетов об ошибках Debian» . Багс.debian.org. 09.04.2015 . Проверено 2 июля 2015 г.
  22. ^ «Словарь HP OpenVMS DCL» . Архивировано из оригинала 25 марта 2007 г. Проверено 23 марта 2009 г.
  23. ^ Ларабель, Майкл (23 марта 2021 г.). «Авторские права на Plan 9 переданы Фонду, выпущен лицензионный код MIT» . Фороникс . Проверено 28 марта 2021 г.
  24. ^ Лильенкранц, Аксель (17 мая 2005 г.). «Рыба – Дружелюбная интерактивная ракушка» . Проверено 08 апреля 2013 г.
  25. ^ Соллер, Джереми (15 ноября 2015 г.). "d79c8f511573fb7710abc63b4236a40022914520" . Проверено 3 августа 2019 г.
  26. ^ «Система завершения [Z Shell]» . Zsh.sourceforge.io . Проверено 24 февраля 2015 г.
  27. ^ Это применимо только к зарезервированным словам и другим синтаксическим функциям.
  28. ^ например, через третью сторону, например, zsh-autosuggestions
  29. ^ zsh не поддерживает подсветку синтаксиса, но существует сторонний проект, который предлагает эту возможность в качестве дополнения: zsh-syntax-highlighting
  30. ^ Пол, Матиас Р. (02 октября 1997 г.) [29 сентября 1997 г.]. «Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM — README.TXT и BOOT.TXT — краткое описание загрузки OpenDOS» . Архивировано из оригинала 4 октября 2003 г. Проверено 29 марта 2009 г. [1]
  31. ^ Перейти обратно: а б с д и Ширк, Джейсон (15 февраля 2018 г.). «PSReadLine: реализация строки чтения для PowerShell, вдохновленная bash» — через GitHub.
  32. ^ «Windows PowerShell 5.0» . Архивировано из оригинала 17 сентября 2016 года . Проверено 8 сентября 2016 г.
  33. ^ Перейти обратно: а б с д и ж «Интегрированная среда сценариев Windows PowerShell (ISE)» . Майкрософт Технет . Проверено 12 сентября 2015 г.
  34. ^ «Get-ChildItemColor» . Гитхаб . 18 марта 2022 г.
  35. ^ sdwheeler. «Write-Host (Microsoft.PowerShell.Utility) — PowerShell» . docs.microsoft.com . Проверено 18 января 2022 г.
  36. ^ Push-Location (с псевдонимом pushd) и Pop-Location (с псевдонимом popd несколько типов местоположений (каталоги файловых систем, организационные единицы Active Directory , узлы реестра Windows и т. д.) из стеков местоположений. ) позволяет помещать и извлекать
  37. ^ Функция $host.ui.PromptForChoice позволяет использовать подсказку для выбора в виде меню. Приглашение работает как в фоновых заданиях, так и в удаленных сеансах, отображая приглашение меню на консоли управляющего сеанса.
  38. ^ Командлет Write-Progress записывает индикатор выполнения, который может указывать процент, оставшиеся секунды и т. д. Сообщения индикатора выполнения работают из фоновых заданий или удаленных сеансов в дополнение к интерактивным сценариям, т. е. индикатор выполнения отображается на консоли управляющего сеанса, а не как часть регулярного выпуска.
  39. ^ Командлет Show-Command проверяет определение команды и открывает интерактивные окна с именованным полем ввода для каждого параметра/переключателя.
  40. ^ Перейти обратно: а б «рыба: Документация» . раздела Завершение вкладки . Проверено 10 января 2016 г.
  41. ^ «set_color — установить цвет терминала — документация fish-shell 3.1.2» . fishshell.com . Архивировано из оригинала 17 февраля 2020 г. Проверено 23 февраля 2021 г.
  42. ^ «abbr — управление сокращениями рыб — документация fish-shell 3.1.2» . fishshell.com . Проверено 23 февраля 2021 г.
  43. ^ sdwheeler. «Запуск-Процесс (Microsoft.PowerShell.Management) — PowerShell» . Learn.microsoft.com . Проверено 21 октября 2022 г.
  44. ^ sdwheeler. «Start-Job (Microsoft.PowerShell.Core) — PowerShell» . Learn.microsoft.com . Проверено 21 октября 2022 г.
  45. ^ "zsh: 20. Система завершения" . Zsh.sourceforge.io. 06 марта 2013 г. Проверено 18 августа 2013 г.
  46. ^ «Используйте PowerShell для создания обязательных параметров» . Блоги.technet.com. 22 мая 2011 г. Проверено 24 февраля 2015 г.
  47. ^ sdwheeler. «Что нового в PowerShell 5.0 ISE — PowerShell» . docs.microsoft.com . Проверено 25 июля 2021 г.
  48. ^ «GitHub — marlonrichert/zsh-autocomplete: 🤖 Упреждающее ввод в реальном времени для Zsh. Асинхронное автодополнение по мере ввода» . Гитхаб . Проверено 25 июля 2021 г.
  49. ^ «Интерактивное использование — документация fish-shell 3.3.1» . fishshell.com . Проверено 25 июля 2021 г.
  50. ^ Хан, Харли (2009). Руководство Харли Хана по Unix и Linux . Бостон: Высшее образование Макгроу-Хилла. ISBN  978-0-07-313361-4 . OCLC   184828059 .
  51. ^ Concurrent DOS 386 — Многопользовательская/многозадачная операционная система — Руководство пользователя (PDF) . Цифровые исследования .
  52. ^ «pv(1): отслеживать ход передачи данных по каналу — справочная страница Linux» . Linux.die.net . Проверено 24 февраля 2015 г.
  53. ^ «рыба: Учебник» . fishshell.com . Проверено 21 октября 2022 г.
  54. ^ «zsh-users/zsh-syntax-highlighting: подсветка синтаксиса в стиле рыбной оболочки для Zsh» . Гитхаб . Проверено 18 августа 2013 г.
  55. ^ sdwheeler. «Модуль PSReadLine — PowerShell» . Learn.microsoft.com . Проверено 26 апреля 2023 г.
  56. ^ Представляем «функцию», встроенную Матеусом Гарсией.
  57. ^ «Ясеневые варианты» . Архивировано из оригинала 10 марта 2010 г. Проверено 15 декабря 2014 г.
  58. ^ «Установить — Переменная среды — Windows CMD» . SS64.com . Проверено 24 февраля 2015 г.
  59. ^ «Как перебрать массив в пакетном режиме?» . Переполнение стека . Проверено 24 февраля 2015 г.
  60. ^ Класс .NET System.Math определяет математические функции, которые можно использовать с помощью ярлыка [Математика] , например [Математика]::Sin для функции синуса . [2]
  61. ^ «Получите закрытие с помощью GetNewClosure» . devblogs.microsoft.com . 27 марта 2009 г. Проверено 12 сентября 2022 г.
  62. ^ «строка — манипулирование строками — документация fish-shell 3.1.2» . fishshell.com . Проверено 23 февраля 2021 г.
  63. ^ Справочник по языку оболочки Hamilton C: подстановочные знаки и сопоставление с образцом , Hamilton Laboratories , получено 29 октября 2013 г. , ... Неопределенный каталог: сопоставьте любое количество уровней каталогов – ноль или более – независимо от того, что необходимо для соответствия остальной части шаблона.
  64. ^ Перейти обратно: а б Зеебах, Питер (21 ноября 2008 г.). Начало написания сценариев для переносимой оболочки: от новичка до профессионала . Голос эксперта в открытом доступе. Апресс (опубликовано в 2008 г.). п. 149. ИСБН  9781430210436 . Проверено 17 сентября 2014 г. Расширение скобок доступно в ksh93, pdksh, bash и zsh.
  65. ^ Zsh предлагает множество вариантов подстановки .
  66. ^ sdwheeler. «об операторах — PowerShell» . docs.microsoft.com . Проверено 18 января 2022 г.
  67. ^ Братья Хардин; Роусон, Том ; Конн, Рекс К .; Пол, Матиас Р.; Дай, Чарльз Э.; Георгиев, Лучезар И. (27 февраля 2002 г.). Онлайн-справка по 4DOS 8.00 .
  68. ^ "найдите способ сделать 'psub --fifo' безопасным от тупиковой ситуации · Проблема № 1040 · fish-shell/fish-shell" . Гитхаб .
  69. ^ «О разделах данных» . Technet.microsoft.com . Проверено 24 февраля 2015 г.
  70. ^ «Страница руководства Ubuntu: rc — оболочка» . Manpages.ubuntu.com. 17 июля 2003 г. Проверено 24 февраля 2015 г.
  71. ^ Провос, Нильс. «Шифрование виртуальной памяти» . Центр интеграции информационных технологий Мичиганского университета . Проверено 20 декабря 2012 г.
  72. ^ «bash — GNU Bourne-Again Shell» . прочитайте -s Тихий режим. Если ввод поступает с терминала, символы не отображаются.
  73. ^ «Использование командлета Read-Host» . Добавив параметр -assecurestring, вы можете замаскировать данные, вводимые в командной строке.
  74. ^ «Команда Linux/Unix: stty» . Linux.about.com. Архивировано из оригинала 25 февраля 2015 г. Проверено 24 февраля 2015 г.
  75. ^ «man sh — оболочка, стандартный интерпретатор командного языка /posix» (на французском языке). Pwet.fr. Архивировано из оригинала 21 декабря 2014 г. Проверено 18 августа 2013 г.
  76. ^ «Справочное руководство Bash: Ограниченная оболочка» . Гну.орг. 28 декабря 2010 г. Проверено 18 августа 2013 г.
  77. ^ «Новый-PSSessionConfigurationFile» . Technet.microsoft.com . Проверено 18 августа 2013 г.
  78. ^ Альбинг, Карл; Воссен, JP; Ньюхэм, Кэмерон (2007). Кулинарная книга Баш (1-е изд.). Севастополь, Калифорния, США: O'Reilly Media . ISBN  978-0-596-52678-8 . [...] вряд ли можно назвать пассивным списком настроенных переменных. Он может запускать другие команды (например, cat) и использовать операторы if для изменения своего выбора. Это даже заканчивается повторением сообщения. Будьте осторожны при выборе источника, поскольку это широко открытая дверь в ваш сценарий.
  79. ^ «О разделах данных» . Майкрософт . Проверено 18 декабря 2012 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4f968f34c9715ff0818dda7199758aaf__1717700220
URL1:https://arc.ask3.ru/arc/aa/4f/af/4f968f34c9715ff0818dda7199758aaf.html
Заголовок, (Title) документа по адресу, URL1:
Comparison of command shells - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)