Jämförelse av kommandoskal
Ett kommandoskal är ett kommandoradsgränssnitt för att interagera med och manipulera en dators operativsystem .
Generella egenskaper
Skal | Vanlig miljö | Vanligtvis åberopas | Introducerad | Plattformsoberoende | Standardinloggningsskal in | Standard script skal in | Licens | Tillgänglighet för källkod | Användargränssnitt | Stöd för mus | Unicode- stöd | Stöd för ISO 8601 | Konsolomdirigering | Strömomdirigering _ | Konfigurerbarhet | Start-/avstängningsskript | Batchskript | Skogsavverkning | Tillgänglig som statiskt länkad, oberoende körbar enkelfil |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Thompson skal | UNIX | sh | 1971 | — | UNIX | UNIX | — | Ja | Textbaserad CLI | Nej | Nej | — | Ja | — | — | — | — | — | — |
Bourne shell 1977 version | 7:e upplagan. UNIX | sh | 1977 | Ja | 7:e upplagan. UNIX | 7:e upplagan. UNIX , | Proprietär | Ja | Textbaserad CLI | Nej | Nej | — | Ja | Ja ( godtycklig fds [ citat behövs ] ) | Ja (via variabler och alternativ) | Ja ( .profile ) | Ja (Unix-funktion) | Nej | Ja |
Bourne shell nuvarande version | Olika UNIX | sh | 1977 | Ja | SunOS-5.x, FreeBSD (icke-rootanvändare) | SunOS-5.x | CDDL [ bättre källa behövs ] | Ja | Textbaserad CLI | Nej | Ja [ bättre källa behövs ] | — | Ja | Ja ( godtycklig fds [ citat behövs ] ) | Ja (via variabler och alternativ) | Ja ( .profile ) | Ja (Unix-funktion) | Ja | Ja |
POSIX skal | POSIX | sh | 1992 | — | — | POSIX | — | — | Textbaserad CLI | Nej | Ja, om den används av den konfigurerade lokalen | — | Ja | Ja ( godtycklig fds [ citat behövs ] ) | Ja (via variabler och alternativ) | Ospecificerat ( .profil ges som exempel) | Ja (Unix-funktion) | Ja | — |
bash (v4) | POSIX | bash, sh | 1989 | Ja | GNU , Linux (standard för root), macOS 10.3–10.14 | GNU , Linux , Haiku , macOS 10.3–10.14 | GPL | Ja | Textbaserad CLI | Nej | Ja [ bättre källa behövs ] | Ja ( printf inbyggd) | Ja | Ja ( godtycklig fds [ citat behövs ] ) | Ja (via variabler och alternativ) | Ja ( /etc/profile , .bash_profile , .bash_login , .profile , .bashrc ) | Ja (Unix-funktion) | Ja | Ja |
csh | POSIX | csh | 1978 | Ja | SunOS | ? | BSD | Ja | Textbaserad CLI | Nej | Nej | ? | Ja | Ja ( stdin , stdout , stdout+stderr ) | Ja (via variabler och alternativ) | Ja ( ~/.cshrc , ~/.login , ~/.logout ) | Ja (Unix-funktion) | Ja | Ja |
tcsh | POSIX | tcsh, csh | 1983 | Ja | FreeBSD (standard för root), tidigare Mac OS X | ? | BSD | Ja | Textbaserad CLI | Nej | Ja | ? | Ja | Ja ( stdin , stdout , stdout+stderr ) | Ja (via variabler och alternativ) | Ja ( /etc/csh.cshrc , /etc/csh.login , ~/.tcshrc , ~/.cshrc , ~/.history , ~/.login , ~/.cshdirs ) | Ja (Unix-funktion) | Ja | Ja |
Hamilton C-skal | Win32 , OS/2 | csh | 1988 | Ja (OS/2-versionen underhålls inte längre) | Frivillig | Frivillig | Proprietär | Nej | Textbaserad CLI | Nej | Nej | Ja (-t tidsstämpeloperatör) | Ja | Ja ( stdin , stdout , stdout+stderr ) | Ja (via variabler och alternativ) | Ja (via login.csh, startup.csh och logout.csh) | Ja (kommandoradsalternativ) | Ja | Ja |
Scsh | POSIX | scsh | 1994 | Ja | ? | ? | BSD -stil | Ja | ? | ? | ? | ? | ? | Ja | ? | ? | ? | ? | Ja |
ksh (ksh93t+) | POSIX | ksh | 1983 | Ja | AIX , HP-UX | OpenSolaris | Gemensam offentlig licens | Ja | Textbaserad CLI | Nej | Ja | Ja ( printf inbyggt med %(%F)T ) | Ja | Ja ( fds upp till 9) | Ja (via variabler och alternativ) | Ja (system och användarprofil och kshrc ) | Ja (Unix-funktion) | Ja | Ja |
pdksh | POSIX | ksh, sh | 1989? | Ja | OpenBSD | OpenBSD | Allmängods | Ja | Textbaserad CLI | Nej | Nej | — | Ja | Ja ( godtycklig fds [ citat behövs ] ) | Ja (via variabler och alternativ) | Ja ( /etc/profile , .profile ) | Ja (Unix-funktion) | Ja | Ja |
zsh | POSIX | zsh | 1990 | Ja | Deepin , GoboLinux , Grml , macOS 10.15+, Kali 2020.4+ | Grml , macOS 10.15+ | MIT -stil | Ja | Textbaserad CLI | via tilläggskod | Ja | Ja (olika interna funktioner som involverar datumet, genom att använda %F strftime- formatet och alternativet -i för fc inbyggda) | Ja | Ja ( fds upp till 9) | Ja (via variabler, alternativ, funktioner, stilar, etc.) | Ja (system och användares zshenv , zprofile , zshrc , zlogin , zlogout ) | Ja (Unix-funktion) | Ja | Ja |
aska | POSIX | sh | 1989 | Ja | Minix , BusyBox- baserade system | NetBSD , Minix , BusyBox- baserade system | BSD -stil | Ja | Textbaserad CLI | Nej | Partiell (för BusyBox, stöds i kommandoradsredigering, men inte i stränghantering) | — | Ja | Ja ( godtycklig fds [ citat behövs ] ) | Ja (via variabler och alternativ) | Ja ( /etc/profile , .profile ) | Ja (Unix-funktion) | Ja | Ja |
CCP | CP/M , MP/M | (CCP) | 1976 (1974) | Nej | CP/M (ingen inloggning), MP/M | CP/M , MP/M | Gratisprogram (ursprungligen proprietärt) | Ja (ursprungligen stängd källa) | Textbaserad CLI | Nej | Nej | Nej | Nej | Nej | Nej | Ja (automatiskt via $$$.SUB ) | Partiell (endast via externt SUBMIT -kommando för att uppdatera $$$.SUB ) | Nej | Ja |
COMMAND.COM | DOS | KOMMANDO | 1980 | Nej (tredje parts implementeringar, inte bundna till en specifik DOS-leverantör eller version, tillgänglig) | DOS , Windows 95 , 98 , SE , ME | DOS , Windows 95 , 98 , SE , ME | leverantörsspecifik, t ex MS - EULA eller BSD / GPL (fria kloner) | Nej (förutom OpenDOS, DR-DOS, PTS/DOS och FreeDOS) | Textbaserad CLI | Nej | Nej | Nej (förutom DR-DOS) | Ja (via COMMAND con: eller CTTY con: ) | Ja ( stdin , stdout ) | Ja (via startparametrar och miljövariabler stöder DR-DOS även DIR /C /R användarstandard switchkommando) | Ja (automatisk \AUTOEXEC.BAT för primärt skal, eller explicit via /P , /P:filnamn.bat eller /K startalternativ) | Ja (via CALL -kommandot eller /C och /K startalternativ) | Nej | Ja |
OS/2 CMD.EXE | OS/2 , eComStation , ArcaOS | CMD | 1987 | Nej | OS/2 , eComStation , ArcaOS | OS/2 , eComStation , ArcaOS | IBM - EULA | Nej | Textbaserad CLI | Nej | Nej | Nej | Nej | Ja ( stdin , stdout , stderr ) | ? | Partiell (endast via /K startalternativ) | Ja (via CALL -kommandot eller /C och /K startalternativ) | Nej | Ja |
Windows CMD.EXE | Win32 | CMD | 1993 | Nej | Windows NT, 2000, XP, Server 2003, Vista | Windows NT, 2000, XP, Server 2003, Vista | MS - EULA | Nej | Textbaserad CLI | Nej | Partiell ( CHCP 65001 för UTF-8 , men programargument är fortfarande kodade i lokal teckentabell) | Nej | Nej | Ja | Ja (via register, startparametrar och miljövariabler) | Ja (automatiskt via registret, eller uttryckligen via /K startalternativ) | Ja (via CALL -kommandot eller /C och /K startalternativ) | Nej | Ja |
4DOS , NDOS | DOS , Windows 95 , 98 , SE , ME | 4DOS , NDOS | 1989 (1986) | Nej (ej bunden till en specifik OS-leverantör eller version) | Frivillig | Frivillig | MIT-licens , med begränsningar | Ja | Textbaserad CLI med TUI -tillägg | Ja (popups, hjälpsystem, %_MOUSE intern variabel, INKEY /M kommando) | Nej | Ja | Ja (via CTTY con: , förutom kommandon DRAWBOX , DRAWLINE , DRAWVLINE , LIST , SCREEN , SCRPUT , SELECT , VSCRPUT och fil-/katalogfärg) | Ja ( stdin , stdout , stderr , stdout+stderr ) | Ja (via 4DOS.INI / NDOS.INI -fil, startparametrar, miljövariabler, SETDOS- kommando) | Ja (automatisk \AUTOEXEC.BAT för primärt skal och 4START.BTM / 4START.BAT samt 4EXIT.BTM / 4EXIT.BAT för alla skal, eller explicit via /P , /P:dir\filnamn.ext eller /K- start alternativ) | Ja (via CALL -kommandot eller /C och /K startalternativ) | Ja | Ja |
4OS2 | OS/2 , eComStation , ArcaOS | 4OS2 | 1992 | Nej (ej bundet till specifika OS/2-versioner) | Valfritt (men medföljer ArcaOS) | Frivillig | Gratisprogram | Ja | Textbaserad CLI | Nej | Nej | Nej | Nej | Ja ( stdin , stdout , stderr , stdout+stderr ) | Ja (via 4OS2.INI- fil, startparametrar, miljövariabler, SETDOS- kommando) | Ja (automatiskt via 4START.CMD / 4START.BTM samt 4EXIT.CMD / 4EXIT.BTM -filer, eller uttryckligen via /K startup.cmd- alternativet) | Ja (via CALL -kommandot eller /C och /K startalternativ) | Ja | ? |
TCC (tidigare 4NT) | Win32 | TCC | 1993 | Nej (ej bunden till specifika NT-versioner) | frivillig | frivillig | Shareware | Nej | Textbaserad CLI ( Take Command : GUI ) | Ja (konsolmus, popup-fönster, hjälpsystem, %_XMOUSE , %_YMOUSE interna variabler, INKEY /M- kommando) | Ja | Ja | Nej | Ja ( stdin , stdout , stderr , stdout+stderr ) | Ja (via register, TCMD.INI / 4NT.INI- fil, startparametrar, miljövariabler, SETDOS- kommando) | Ja (automatiskt via registret och TCSTART / 4START samt TCEXIT / 4EXIT , eller uttryckligen via /K startalternativ) | Ja (via CALL -kommandot eller /C och /K startalternativ) | Ja | Nej |
VMS DCL | OpenVMS | Automatiskt för inloggning/interaktiv process | 1977? | Ja | VMS | VMS | Proprietär, paketerad i VMS | endast med särskild licens | Textbaserad CLI | med DECwindows/Motif | Ja | Ja, åtminstone till 1988 års standard | Ja | Ja ( sys$input , sys$output tilldelning) | Ja (via symboler, logiska namn och alternativ) | Ja (SYS$MANAGER:SYLOGIN.COM och användardefinierad LOGIN.COM) | Ja | Ja | Nej |
PowerShell |
.NET , .NET Framework |
PowerShell | 2006 | Ja | Windows 10, 8, Server 2008, 7 | Windows 10, 8, Server 2008, 7 | MIT -stil | Ja | Grafisk CLI | Ja | Ja | Ja | Ja | Ja | Ja (via variabler och alternativ) | Ja (%USERPROFILE%\Documents \WindowsPowerShell\Microsoft.PowerShell_profile.ps1) | Ja (PowerShell-funktion) | Ja | Nej |
rc | Plan 9 , POSIX | rc | 1989 | Ja | Plan 9 , version 10 Unix | Plan 9 , version 10 Unix | MIT-licens | Ja | Textbaserad CLI | ? | Ja | Ja | ? | Ja | Ja (via alternativ) | Ja ( $HOME/.rcrc ) | Ja | ? | Ja |
BeanShell | Java | ? | 2005 | Ja | ? | ? | LGPL | ? | ? | ? | Ja | ? | ? | Ja | ? | ? | ? | ? | Nej |
fisk | POSIX | fisk | 2005 | Ja | GhostBSD | ? | GPL | Ja | Textbaserad CLI | ? | Ja | ? | ? | Ja ( godtycklig fds [ citat behövs ] ) | Ja (genom miljövariabler och via webbgränssnitt via fish_config ) | Ja ( /etc/fish/config.fish och ~/.config/fish/config.fish ) | Ja (Unix-funktion) | Ja ( ~/.config/fish/fish_history* ) | ? |
Jon | Redox , Linux | Jon | 2015 | Ja | Redox | Redox | MIT | Ja | Textbaserad CLI | ? | Ja | Ja | ? | Ja ( godtycklig fds [ citat behövs ] ) | Ja (följer XDG Base Directory-specifikationen) | Ja ( ~/.config/ion/initrc ) | Ja | Ja ( ~/.local/share/ion/history ) | Partiell (inte distribuerad som en fristående körbar, men den kan byggas som en) |
Skal | Vanlig miljö | Vanligtvis åberopas | Introducerad | Plattformsoberoende | Standardinloggningsskal in | Standard script skal in | Licens | Tillgänglighet för källkod | Användargränssnitt | Stöd för mus | Unicode- stöd | Stöd för ISO 8601 | Konsolomdirigering | Strömomdirigering _ | Konfigurerbarhet | Start-/avstängningsskript | Batchskript | Skogsavverkning | Tillgänglig som statiskt länkad, oberoende körbar enkelfil |
Interaktiva funktioner
Skal |
Färdigställande av kommandonamn |
Slutförande av väg |
Kommandoargument slutförande _ |
Slutförande av jokertecken |
Kommandohistorik _ |
Obligatorisk argumentuppmaning _ |
Automatiska förslag |
Färgade katalogförteckningar _ |
Textmarkering _ |
Syntaxmarkering _ |
Kataloghistorik, stack eller liknande funktioner |
Implicit katalogändring _ |
Automatisk korrigering |
Integrerad miljö |
Utdrag |
Värdeuppmaning _ |
Meny/alternativ uppmaning |
Framstegsindikator _ |
Kontextkänslig hjälp _ |
Kommandobyggare _ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Thompson skal | Nej | Nej | Nej | Nej | Nej | Nej | Nej | ? | ? | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej |
Bourne shell 1977 version | Nej | Nej | Nej | Nej | Nej | Nej | Nej | ? | ? | Nej | Nej | Nej | Nej | Nej | Nej | Ja | Nej | Extern | Nej | Nej |
Bourne shell nuvarande version | Nej | Ja | Nej | Nej | Ja | Nej | Nej | Ja | Ja | Nej | Ja (CDPATH, pushd, popd, dirs), CDPATH sedan SVr4 | Nej | Nej | Nej | Nej | Ja | Nej | Extern | Nej | Nej |
POSIX skal | Nej | Nej | Nej | Nej | Ja | Nej | Nej | Ja | Ja | Nej | Ja ( CDPATH ) | Nej | Nej | Nej | Nej | Ja | Nej | Extern | Nej | Nej |
bash (v4.0) | Ja | Ja | när den definieras | Ja | Ja | Nej | Nej | Ja | Ja | Nej | Ja ( CDPATH , pushd , popd ) | frivillig | Nej | Nej | Nej | Ja | Ja | Extern | Nej | Nej |
csh | Ja | Ja | Nej | Nej | Ja | Nej | Nej | Ja | Ja | Nej | Ja ( cdpath , pushd , popd ) | frivillig | Nej | Nej | Nej | Ja | Nej | Extern | Nej | Nej |
tcsh | Ja | Ja | när den definieras | Nej | Ja | Nej | Nej | Ja | Ja | Nej | Ja ( cdpath , pushd , popd ) | frivillig | Ja | Nej | Nej | Ja | Nej | Extern | Nej | Nej |
Hamilton C-skal | Ja | Ja | Nej | Ja | Ja | Nej | Nej | Ja | Ja | Nej | Ja ( cdpath , pushd , popd ) | Nej | Nej | Nej | Nej | Ja | Nej | Extern | Nej | Nej |
Scsh | Nej | Nej | Nej | Nej | Nej | Nej | Nej | ? | ? | Nej | Nej | Nej | Nej | Nej | Nej | Ja | Nej | Extern | Nej | Nej |
ksh (ksh93t+) | Ja (förlängbar) | Ja (förlängbar) | Nej | Nej | Ja | Nej | Nej | Ja | Ja | Nej | Ja ( cdpath inbyggd, pushd , popd implementerad som funktioner) | Nej | Nej | Nej | Nej | Ja | Ja | Extern | Nej | Nej |
pdksh | Ja | Ja | Nej | Nej | Ja | Nej | Nej | Ja | Ja | Nej | Nej | Nej | Nej | Nej | Nej | Ja | Ja | Extern | Nej | Nej |
zsh | Ja | Ja | när den definieras | Ja | Ja | Ja | Ja (via förutsägelse eller användardefinierad) | Ja | Ja | Tillägg från tredje part | Ja | frivillig | Ja | Nej | när de definieras (som ZLE-widgets) | Ja | Ja | Extern | Ja | Nej |
aska | Nej | Nej | Nej | Nej | Ja | Nej | Nej | Ja | Ja | Nej | Nej | Nej | Nej | Nej | Nej | Ja | Ja | Extern | Nej | Nej |
CCP | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej |
COMMAND.COM | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej (endast i DR-DOS till %$ON% , %$OFF% , %$HEADER% , %$FOOTER% ) | Nej | Nej | Nej | Nej | Nej (endast enkelsteg med COMMAND /Y) | Nej | Nej | Nej (endast via externt CHOICE- kommando, i DR-DOS även via SWITCH / DRSWITCH interna kommandon) | Nej | Nej | Nej |
OS/2 CMD.EXE |
Ja | Ja | Nej | Nej | Ja | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej |
Windows CMD.EXE |
partiell | partiell | Nej | Nej | Ja ( F8 ) | Nej | Nej | Nej | Nej | Nej | Ja ( PUSHD , POPD ) | Nej | Nej | Nej | Nej | Ja (via kommandot SET /P ) | Nej | Nej | Nej | Nej |
4DOS | Ja | Ja | Ja | Ja | Ja | Nej | Nej | Ja | Nej | Nej | (via popup, utökade katalogsökningar, CDPATH , PUSHD , POPD , DIRHISTORY , DIRS , CDD , CD - kommandon och %@DIRSTACK[] funktion) | Ja | Nej | Ja | Nej | Ja (via INPUT , INKEY och ESET -kommandon) | Ja (via @SELECT[] -funktionen och indirekt via en kombination av INKEY , INPUT , SWITCH -kommandon) | Nej | Ja | Nej (förutom OPTION -kommandot för INI-fildirektiv) |
4OS2 | ? | ? | ? | ? | Ja | Nej | Nej | Ja | Nej | Nej | Ja | Ja | Nej | ? | Nej | ? | ? | Nej | Ja | Nej |
TCC (tidigare 4NT) | Ja | Ja | Ja | Ja | Ja | Nej | Nej | Ja | Nej | Ja | (via popup, utökade katalogsökningar, CDPATH , PUSHD , POPD , DIRHISTORY , DIRS , CDD , CD - kommandon och %@DIRSTACK[] funktion) | Ja | Nej | Ja | Nej | Ja (via INPUT , INKEY , ESET och SET /P kommandon) | Ja (via @SELECT[] -funktionen och indirekt via en kombination av INKEY , INPUT , SWITCH -kommandon) | Nej | Ja | Nej |
PowerShell | Ja | Ja | Ja | Ja | Ja ( F8 ) | Ja | Ja; via PSReadLine-modul (medföljer i v5.0) eller i ISE | Tillägg från tredje part | Ja | Ja; via PSReadLine-modul (medföljer i v5.0) eller i ISE | Ja (flera stackar; flera platstyper; Push-Location , Pop-Location ) | Ja, i PSReadLine-modulen | Ja, i ISE | Ja, i ISE | Ja | Ja | Ja | Ja, i ISE | pop-up fönster | Ja, i ISE |
rc | Ja | Ja | Nej | Nej | Ja | Nej | Nej | Nej | ? | Nej | Nej | Nej | Nej | Nej | Nej | ? | Nej | Nej | Nej | Nej |
BeanShell | Ja | Ja | Nej | Nej | Nej | Nej | Nej | ? | ? | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej |
VMS DCL | Minsta unika system | Nej | Nej | Nej | Ja | Ja | Nej | ? | ? | Nej | Nej | Nej | Nej | Nej | Nej | Ja | Nej | Nej | Nej | Nej |
fisk | Ja | Ja | när den är definierad eller tolkbar på man-sidor | Ja | Ja | Nej | Ja | Ja | Ja (inbyggd hjälpare tillgänglig) | Ja | Ja | Ja | Ja | Ja | Ja, med kommandot abbr | Ja | (via kommandot fish_config ) | Nej | Nej | Nej |
Skal |
Färdigställande av kommandonamn |
Slutförande av väg |
Kommandoargument slutförande _ |
Slutförande av jokertecken |
Kommandohistorik _ |
Obligatorisk argumentuppmaning _ |
Automatiska förslag |
Färgade katalogförteckningar _ |
Textmarkering _ |
Syntaxmarkering _ |
Kataloghistorik, stack eller liknande funktioner |
Implicit katalogändring _ |
Automatisk korrigering |
Integrerad miljö |
Utdrag |
Värdeuppmaning _ |
Meny/alternativ uppmaning |
Framstegsindikator _ |
Kontextkänslig hjälp _ |
Kommandobyggare _ |
Bakgrundsutförande
Bakgrundsexekvering tillåter ett skal att köra ett kommando utan användarinteraktion i terminalen, vilket frigör kommandoraden för ytterligare arbete med skalet. POSIX-skal och andra Unix-skal tillåter körning i bakgrunden genom att använda & i slutet av kommandot. I PowerShell kan cmdletarna Start -Process
eller Start-Job
användas.
Slutföranden
Kompletteringsfunktioner hjälper användaren att skriva kommandon på kommandoraden genom att leta efter och föreslå matchande ord för ofullständiga. Komplettering begärs vanligtvis genom att trycka på kompletteringstangenten (ofta Tab ↹- tangenten).
Kommandonamnskomplettering är slutförandet av namnet på ett kommando. I de flesta skal kan ett kommando vara ett program i kommandosökvägen (vanligtvis $PATH
), ett inbyggt kommando, en funktion eller alias.
Slutförande av sökväg är slutförandet av sökvägen till en fil, relativ eller absolut.
Jokerteckens komplettering är en generalisering av sökvägskomplettering, där ett uttryck matchar valfritt antal filer, med hjälp av vilken syntax som stöds för filmatchning .
Variabelkomplettering är kompletteringen av namnet på ett variabelnamn ( miljövariabel eller skalvariabel). Bash, zsh och fish har komplettering för alla variabelnamn. PowerShell har kompletteringar för miljövariabelnamn, skalvariabelnamn och - inifrån användardefinierade funktioner - parameternamn.
Kommandoargumentkomplettering är slutförandet av ett specifikt kommandos argument. Det finns två typer av argument, namngivna och positionella: Namngivna argument, ofta kallade alternativ , identifieras med deras namn eller bokstav som föregår ett värde, medan positionsargument endast består av värdet. Vissa skal tillåter komplettering av argumentnamn, men få stöder kompletteringsvärden.
Bash, zsh och fish erbjuder komplettering av parameternamn genom en definition utanför kommandot, distribuerad i en separat kompletteringsdefinitionsfil. För komplettering av kommandoparameternamn/värde antar dessa skal att sökvägen/filnamnet är slutfört om ingen komplettering är definierad för kommandot. Komplettering kan ställas in för att föreslå slutföranden genom att anropa en skalfunktion. Fiskskalet stöder dessutom analys av man-sidor för att extrahera parameterinformation som kan användas för att förbättra kompletteringar/förslag. I PowerShell exponerar alla typer av kommandon (cmdlets, funktioner, skriptfiler) data om namn, typer och giltiga värdeområden/listor för varje argument. Denna metadata används av PowerShell för att automatiskt stödja argumentnamn och värdekomplettering för inbyggda kommandon/funktioner, användardefinierade kommandon/funktioner samt för skriptfiler. Enskilda cmdlets kan också definiera dynamiskt slutförande av argumentvärden där kompletteringsvärdena beräknas dynamiskt på det körande systemet.
Kommandohistorik
Användare av ett skal kan hitta på att skriva något som liknar det de har skrivit tidigare. Stöd för kommandohistorik innebär att en användare kan återkalla ett tidigare kommando i kommandoradsredigeraren och redigera det innan det eventuellt ändrade kommandot utfärdas.
Skal som stöder slutförande kan också direkt slutföra kommandot från kommandohistoriken givet en partiell/initial del av det föregående kommandot.
De flesta moderna skal stöder kommandohistorik. Skal som stöder kommandohistorik i allmänhet stöder också komplettering från historik snarare än att bara återkalla kommandon från historiken. Förutom den vanliga kommandotexten, registrerar PowerShell även start- och sluttid för exekvering och exekveringsstatus i kommandohistoriken.
Obligatorisk argumentuppmaning
Obligatoriska argument/parametrar är argument/parametrar som måste tilldelas ett värde vid anrop av kommandot, funktionen eller skriptfilen. Ett skal som kan avgöra före anropet att det saknas obligatoriska värden, kan hjälpa den interaktiva användaren genom att fråga efter dessa värden istället för att låta kommandot misslyckas. Att ha skalprompten för saknade värden gör det möjligt för författaren av ett skript, kommando eller funktion att markera en parameter som obligatorisk istället för att skapa skriptkod för att antingen fråga efter de saknade värdena (efter att ha fastställt att den körs interaktivt) eller misslyckas med en meddelande.
PowerShell tillåter kommandon, funktioner och skript för att definiera argument/parametrar som obligatoriska . Skalet bestämmer före anropet om det finns några obligatoriska argument/parametrar som inte har bundits, och kommer sedan att fråga användaren om värdet/värdena före faktisk anrop.
Automatiska förslag
Skal med automatiska förslag visar valfria kommandoradskompletteringar när användaren skriver. PowerShell och fiskskal stöder den här funktionen ; genom att trycka på Tab ↹ -tangenten infogas kompletteringen.
Implementering av denna funktion kan skilja sig åt mellan skal; PowerShell och zsh använder till exempel en extern modul för att tillhandahålla kompletteringar, och fish hämtar sina slutföranden från användarens kommandohistorik.
Kataloghistorik, stack eller liknande funktioner
Skal kan registrera en historik över kataloger som användaren har varit i och möjliggöra snabb växling till valfri inspelad plats. Detta kallas för en "katalogstack". Konceptet hade realiserats redan 1978 i releasen av C-skalet (csh).
PowerShell tillåter att flera namngivna stackar används. Platser (kataloger) kan skjutas till/poppas från den aktuella stacken eller en namngiven stack. Vilken stack som helst kan bli den aktuella (standard) stacken. Till skillnad från de flesta andra skal tillåter PowerShells platskoncept platsstackar att hålla filsystemsplatser såväl som andra platstyper som t.ex. Active Directory- organisationsenheter/grupper, SQL Server -databaser/tabeller/objekt, Internet Information Server- applikationer/webbplatser/virtuella kataloger.
Kommandoradstolkarna 4DOS och dess grafiska efterföljare Take Command Console har också en katalogstack.
Implicit katalogändring
Ett katalognamn kan användas direkt som ett kommando som implicit ändrar den aktuella platsen till katalogen.
Detta måste särskiljas från en icke-relaterad laddningsenhetsfunktion som stöds av Concurrent DOS , Multiuser DOS , System Manager och REAL/32 , där enhetsbokstaven L: kommer att uppdateras underförstått för att peka på laddningsvägen för en laddad applikation, vilket gör att applikationer kan referera till filer som finns i deras laddningskatalog under en standardiserad enhetsbeteckning istället för under en absolut sökväg.
Automatisk korrigering
När en kommandorad inte matchar ett kommando eller argument direkt, kan stavningskontroll automatiskt korrigera vanliga skrivfel (som skiftlägeskänslighet , saknade bokstäver). Det finns två synsätt på detta; skalet kan antingen föreslå troliga korrigeringar vid kommandoanrop, eller så kan detta ske tidigare som en del av en komplettering eller autosuggestion.
Tcsh- och zsh - skalen har valfri stavningskontroll/korrigering vid kommandoanrop.
Fish gör autokorrigeringen vid komplettering och autosuggestion. Funktionen är därför inte i vägen när du skriver ut hela kommandot och trycker på enter, medan omfattande användning av tabb- och högerpiltangenterna gör skalet mestadels skiftlägesokänsligt.
PSReadLine PowerShell-modulen (som levereras med version 5.0) ger möjlighet att ange ett CommandValidationHandler ScriptBlock som körs innan kommandot skickas. Detta möjliggör anpassad korrigering av vanliga felskrivna kommandon och verifiering innan kommandot faktiskt körs.
Framstegsindikator
Ett skalskript (eller jobb) kan rapportera framsteg för långvariga uppgifter till den interaktiva användaren.
Unix/Linux-system kan erbjuda andra verktygsstöd med hjälp av framstegsindikatorer från skript eller som fristående kommandon, såsom programmet "pv". Dessa är dock inte integrerade funktioner i skalen.
PowerShell har ett inbyggt kommando och API-funktioner (som ska användas vid författande av kommandon) för att skriva/uppdatera en förloppsindikator. Meddelanden i förloppsindikatorn skickas separat från vanliga kommandoutdata och förloppsindikatorn visas alltid på den ultimata interaktiva användarkonsolen oavsett om förloppsmeddelandena kommer från ett interaktivt skript, från ett bakgrundsjobb eller från en fjärrsession.
Färgade katalogförteckningar
JP Softwares kommandoradsprocessorer tillhandahåller användarkonfigurerbar färgsättning av fil- och katalognamn i kataloglistor baserat på deras filtillägg och/eller attribut genom en valfritt definierad miljövariabel %COLORDIR%.
För Unix/Linux-skalen är detta en funktion för ls -kommandot och terminalen.
Textmarkering
Kommandoradsprocessorerna i DOS Plus , Multiuser DOS , REAL/32 och i alla versioner av DR-DOS stöder ett antal valfria miljövariabler för att definiera escape-sekvenser som gör det möjligt att styra textmarkering, reversion eller färgsättning för visning eller utskrift i kommandon som t.ex. TYP . Alla nämnda kommandoradsprocessorer stöder %$ON% och %$OFF% . Om de definieras kommer dessa sekvenser att sändas före och efter filnamn. En typisk sekvens för %$ON% skulle vara \033[1m i kombination med ANSI.SYS , \033p för en ASCII- terminal eller \016 för en IBM- eller ESC/P- skrivare. På samma sätt skulle typiska sekvenser för %$OFF% vara \033[0m, \033q, \024, respektive. Variablerna %$HEADER% och %$FOOTER% stöds endast av COMMAND.COM i DR-DOS 7.02 och högre för att definiera sekvenser som sänds ut före och efter textblock för att kontrollera textmarkering, sidnumrering eller andra formateringsalternativ.
För Unix/Linux-skalen är detta en funktion i terminalen.
Syntaxmarkering
En definierande egenskap hos fiskskalet är inbyggd syntaxmarkering. När användaren skriver färgas texten för att representera om inmatningen är ett giltigt kommando eller inte (den körbara filen finns och användaren har behörighet att köra den) och en giltig fil vägar är understrukna.
Ett oberoende projekt erbjuder syntaxmarkering som ett tillägg till Z Shell (zsh). Detta är dock inte en del av skalet.
PowerShell tillhandahåller anpassningsbar syntaxmarkering på kommandoraden via PSReadLine-modulen. Den här modulen kan användas med PowerShell v3.0+, och den ingår i v5.0. Dessutom laddas den som standard i kommandoradsvärden "powershell.exe" i v5.0. PowerShell ISE inkluderar också syntaxmarkering på kommandoraden såväl som i skriptfönstret. Take Command Console (TCC) erbjuder syntaxmarkering i den integrerade miljön.
Kontextkänslig hjälp
4DOS, 4OS2, 4NT / Take Command Console och PowerShell (i PowerShell ISE) letar upp sammanhangskänslig hjälpinformation när F1 trycks ned.
Zsh tillhandahåller olika former av konfigurerbar kontextkänslig hjälp som en del av sin run-help- widget, kommandot _complete_help , eller i slutförandet av alternativ för vissa kommandon.
Fiskskalet ger korta beskrivningar av ett kommandos flaggor när flikarna slutförs.
Kommandobyggare
En kommandobyggare är en guidad dialogruta som hjälper användaren att fylla i ett kommando. PowerShell har en kommandobyggare som är tillgänglig i PowerShell ISE eller som kan visas separat via Show-Command- cmdleten.
Programmeringsfunktioner
Skal | Funktioner | Undantagshantering | Sök & ersätt på variabla ersättningar | Aritmetisk | Flytpunkt | Matematisk funktionsbibliotek | Linjära arrayer eller listor | Associativa arrayer | Lambdafunktioner | eval funktion | Generering av pseudoslumptal | Bytekod |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Bourne shell 1977 version | Nej | Ja (via fälla ) | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Ja | Nej | Nej |
Bourne shell nuvarande version | Ja sedan SVR2 | Ja (via fälla ) | Nej | Ja | Nej | Nej | Nej | Nej | Nej | Ja | Nej | Nej |
POSIX skal | Ja | Ja (via fälla ) | Nej | Ja | Nej | Nej | Nej | Nej | Nej | Ja | Nej | Nej |
bash (v4.0) | Ja | Ja (via fälla ) | Ja (via ${// }-syntax) | Ja | Nej | Nej | Ja | Ja | Nej | Ja | Ja ( $RANDOM ) | Nej |
csh | Nej | Nej | Ja (via $var:s/// syntax) | Ja | Nej | Nej | Ja | Nej | Nej | Ja | Nej | Nej |
tcsh | Nej | Nej | Ja (via $var:s/// syntax) | Ja | Nej | Nej | Ja | Nej | Nej | Ja | Nej | Nej |
Hamilton C-skal | Ja | Nej | Ja (via $var:s/// syntax) | Ja | Ja | Ja | Ja | Nej | Nej | Ja | Ja (slumpmässigt verktyg) | Nej |
Scsh | Ja | ? | Ja (via strängfunktioner och reguljära uttryck) | ? | ? | ? | Ja | ? | Ja | Ja | Ja (slumpmässigt heltal, slumpmässigt verkligt) | Ja (kompilatorn är Scheme48 virtuell maskin, via scshvm ) |
ksh (ksh93t+) | Ja | Ja (via fälla ) | Ja (via ${// }-syntax och inbyggda kommandon) | Ja | Ja | Ja | Ja | Ja | Nej | Ja | Ja ( $RANDOM ) | Ja (kompilatorn heter shcomp ) |
pdksh | Ja | Ja (via fälla ) | Nej | Ja | Nej | Nej | Ja | Nej | Nej | Ja | Ja ( $RANDOM ) | Nej |
zsh | Ja | Ja | Ja (via syntaxen ${:s// } och ${// }) | Ja | Ja | Ja ( zsh/mathfunc -modul) | Ja | Ja | Nej | Ja | Ja ( $RANDOM ) | Ja (inbyggt zcompile- kommando) |
aska | Ja | Ja (via fälla ) | Nej | Ja (sedan 1992) | Nej | Nej | Nej | Nej | Nej | Ja | Nej | Nej |
CCP | Nej | ? | Nej | Nej | ? | ? | Nej | Nej | Nej | Nej | Nej | Nej |
COMMAND.COM | Nej | Partiell (endast Auto-fail (via COMMAND /F (eller /N i vissa versioner av DR-DOS)) | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej | Nej |
OS/2 CMD.EXE | Nej | Nej | Nej | ? | Nej | Nej | ? | Nej | Nej | Nej | Nej | Nej |
Windows CMD.EXE | Ja (via CALL :label ) | Nej | Ja (via SET % varname : uttryckssyntax ) | Ja (via SET /A ) | Nej | Nej | Ja (via SET ) | Nej | Nej | Nej | Ja ( %random % ) | Nej |
4DOS | Ja | Ja (via ON- kommando, valfritt Auto-fail via 4DOS /F ) | Ja (via %@Replace[...]- funktionen) | Ja (via SET /A ) | ? | ? | Ja (via intervall, inkludera listor, @ fillistor och FOR -kommandot) | Nej | Nej | Ja | Ja ( %@Random[...] funktion) | Ja (via BATCOMP- kommandot) |
4OS2 | ? | ? | ? | ? | ? | ? | ? | ? | Nej | Ja | Ja ( %@Random[...] funktion) | ? |
TCC (tidigare 4NT) | Ja | Ja (via ON och olika ...MONITOR- kommandon) | Ja (via %@Replace[...]- funktionen) | Ja (via SET /A ) | ? | ? | Ja (via intervall, inkludera listor, @ fillistor och FOR -kommandot) | ? | Nej | Ja | Ja ( %@Random[...] funktion) | Ja (via BATCOMP- kommandot) |
PowerShell | Ja | Ja (Try-Catch-Äntligen) | Ja ( -ersätt operatör) | Ja | Ja | [Matematik klass | Ja | Ja | Ja | Ja | Ja | Ja, automatiskt |
rc | Ja | Ja | Nej | Ja | ? | ? | Ja | ? | Nej | Ja | Nej | Nej |
BeanShell | Ja | Ja | ? | Ja | ? | ? | Ja | Ja | Nej | Ja | Ja | Ja |
VMS DCL | Ja | Ja | Nej | Ja | Nej | ja, för kompilerade program | Ja | Nej | Nej | Nej | Nej | Nej |
fisk | Ja | Ja (via fälla ) | Ja, via inbyggt strängkommando | Ja | Ja | Ja | Ja | Nej | Nej | Ja | Ja ( slumpmässigt ) | Nej |
Strängbearbetning och filnamnsmatchning
Skal | Strängbearbetning | Alternering ( Blackexpansion ) | Mönstermatchning ( inbyggda reguljära uttryck ) | Mönstermatchning (filnamn globbing ) | Globbing-kvalificerare (filnamnsgenerering baserat på filattribut) | Rekursiv globbing (genererar filer från alla nivåer av underkataloger) |
---|---|---|---|---|---|---|
Bourne shell 1977 version | ? | Nej | Nej | Ja ( * , ? , [...] ) | Nej | Nej |
Bourne shell senaste versionen | Partiell (prefix- och suffixstrippning i variabel expansion) | Nej | Nej | Ja ( * , ? , [...] ) | Nej | Nej |
POSIX skal | Partiell (prefix- och suffixstrippning i variabel expansion) | Nej | Nej | Ja ( * , ? , [...] ) | Nej | Nej |
bash (v4.0) | Partiell (prefix- och suffixstrippning i variabel expansion) | Ja | Ja | Ja ( * , ? , [...] , {... }) | Nej | Ja ( **/... ) |
csh | Ja (:s och andra redigeringsoperatorer) | Ja | Nej | Ja | Nej | Nej |
tcsh | Ja (:s och andra redigeringsoperatorer) | Ja | Ja | Ja | Nej | Nej |
Hamilton C-skal | Ja (:s och andra redigeringsoperatorer + substr, strlen, strindex, printf, reverse, övre, nedre, concat och andra inbyggda funktioner) | Ja | Nej | Ja | Nej | Ja (via obestämd katalog "..." jokertecken) |
Scsh | ? | ? | Ja | Ja | Nej | Nej |
ksh (ksh93t+) | Partiell (prefix, suffixstrippning och strängbyte i variabel expansion) | Ja | Ja | Ja ( * , ? , [...] ) | Nej | Ja (med set -G , ingen följning av symboliska länkar) |
pdksh | ? | Ja | Nej | Ja | Nej | Nej |
zsh | Ja (genom variabel bearbetning: t.ex. delsträngsextraktion, olika transformationer via parameterexpansion) | Ja | Ja | Ja ( * , ? , [...] , utökad globbing ) | Ja | Ja ( **/... eller ***/... för att följa symlinks) |
aska | ? | ? | Nej | Ja | Nej | Nej |
CCP | Nej | Nej | Nej | Nej | Nej | Nej |
COMMAND.COM | Nej | Nej | Nej | Ja ( * ,? ) | Nej | Nej |
OS/2 CMD.EXE | Nej | Nej | Nej | Ja ( * ,? ) | Partiell (endast i kommandot DIR /A:... ) | Nej |
Windows CMD.EXE | Partiell (endast genom FOR /F och SET /A ) | Nej | Nej | Ja ( * ,? ) | Partiell (endast i kommandot DIR /A:... ) | Ja (via FOR /R- kommando, eller, om tillgängligt, indirekt via /S- underkatalogalternativ) |
4DOS | Ja (genom variabelfunktionerna %@...[] , utökad miljövariabelbehandling, olika strängkommandon och FOR /F och SET /A ) | Nej | Nej | Ja ( * , ? , [...] , utökade jokertecken , SELECT popup-kommando) | Ja (via /A:... attribut och /I"..." beskrivningsalternativ och /[S...] storlek, /[T...] tid, /[D...] datum och / [!...] filexkluderingsintervall) | Ja (via FOR /R- kommando, eller indirekt via GLOBAL- kommando eller, om tillgängligt, /S subdir-alternativ) |
4OS2 | ? | Nej | Nej | ? | ? | ? |
TCC (tidigare 4NT) | Ja (genom variabelfunktionerna %@...[] , utökad miljövariabelbehandling, olika strängkommandon och FOR /F och SET /A ) | Nej | Ja | Ja ( * , ? , [...] , utökade jokertecken , SELECT popup-kommando) | Ja (via /A:... attribut och /I"..." beskrivningsalternativ och /[S...] storlek, /[T...] tid, /[D...] datum, /[ O...] ägare och /[!...] filexkluderingsintervall) | Ja (via FOR /R- kommando, eller indirekt via GLOBAL- kommando eller, om tillgängligt, /S subdir-alternativ) |
PowerShell | Ja (Concat/Substring/Insert/Remove/Replace, ToLower/ToUpper, Trim/TrimStart/TrimEnd, Compare, Contains/StartsWith/EndWith, Format, IndexOf/LastIndexOf, Pad/PadLeft/PadRight, Split/Join, reguljära uttrycksfunktioner och andra .NET-strängfunktioner) | Områdesoperatör för siffror | Ja (fullständigt stöd för regex) | Ja ( * , ? , [...] ) | ? | ? |
rc | ? | ? | Nej | Ja | Nej | Nej |
BeanShell | ? | ? | Ja | ? | ? | ? |
VMS DCL | Ja | Nej | Nej | Ja | Nej | Ja (via [SUBDIR...] ) |
fisk | Ja (inbyggd strängfunktion) | Ja | ja (via inbyggd strängmatchning och strängersättningsfunktioner ) | Ja ( * , ? , {... }) | Nej | Ja ( **/... ) |
Kommunikation mellan processer
Skal | Rör | Kommandosubstitution | Processsubstitution | Subshells | TCP / UDP -anslutningar som strömmar | Tangenttryckning stapling |
---|---|---|---|---|---|---|
Bourne skal | byte samtidigt | Ja | Nej | Ja | Nej | — |
POSIX skal | byte samtidigt | Ja | Nej | Ja | Nej | — |
bash (v4.0) | byte samtidigt | Ja | Ja (om systemet stöder /dev/fd/ ⟨n⟩ eller namngivna rör) | Ja | Ja (endast klient) | — |
csh | byte samtidigt | Ja | Nej | Ja | Nej | — |
tcsh | byte samtidigt | Ja | Nej | Ja | Nej | — |
Hamilton C-skal | byte samtidigt | Ja | Nej | Ja | Nej | ? |
Scsh | text | ? | ? | ? | Ja | — |
ksh (ksh93t+) | bytes (kan innehålla serialiserade objekt om print -C används) samtidigt | Ja ( $(...) och ${<mellanslag>...; }) | Ja (om systemet stöder /dev/fd/ ⟨n⟩ ) | Ja | Ja (och SCTP-stöd, endast klient) | — |
pdksh | byte samtidigt | Ja | Nej | Ja | Nej | — |
zsh | byte samtidigt | Ja | Ja | Ja | Ja (klient och server, men bara TCP) | — |
aska | byte samtidigt | Ja | Nej | Ja | Nej | — |
CCP | Nej | Nej | Nej | Nej | Nej | Nej |
COMMAND.COM | textsekventiella temporära filer | Nej | Nej | Partiell (endast under DR-DOS multitasker via COMMAND.COM /T ) | Nej | Nej |
OS/2 CMD.EXE | text samtidigt | Nej | Nej | ? | Nej | Nej |
Windows CMD.EXE | text samtidigt | Ja (via FOR /F kommando) | Nej | Ja (Backtick: ` i FOR /F usebackq ) | Nej | Nej |
4DOS | textsekventiella temporära filer | Ja (via FOR /F kommando) | ? | Partiell (via %@EXECSTR[] och %@EXEC[] , eller via SET /M , ESET /M och UNSET /M och %@MASTER[...] ) | Nej | Ja (via KEYSTACK och KSTACK ) |
4OS2 | text samtidigt | ? | ? | ? | Nej | Ja (via KEYSTACK ) |
TCC (tidigare 4NT) | text samtidigt | Ja (via FOR /F kommando) | ? | Partiell (via %@EXECSTR[] och %@EXEC[] ) | Ja (via FTP , TFTP , FTPS , SFTP , HTTP , HTTPS och IFTP , endast klient) | Ja (via KEYSTACK ) |
PowerShell | objekt samtidigt | Ja | Nej | Ja | Ja | ? |
rc | text samtidigt | Ja | Ja (via: <{cmd } om systemet stöder /dev/fd/ ⟨n⟩ ) | Ja | Nej | ? |
BeanShell | stöds inte | ? | ? | ? | Ja | ? |
VMS DCL | text (via PIPE- kommando) | Ja | Nej | Ja (spawn) | Ja (endast server TCP) | Nej |
fisk | byte samtidigt | Ja ( ... ) | Nej (trasig) | Nej | Nej | — |
Tangenttryckning stapling
I väntan på vad en given applikation kan acceptera som tangentbordsinmatning, instruerar användaren av skalet skalet att generera en sekvens av simulerade tangenttryckningar, som applikationen kommer att tolka som en tangentbordsinmatning från en interaktiv användare. Genom att skicka tangenttryckningssekvenser kan användaren styra applikationen att utföra åtgärder som skulle vara omöjliga att uppnå genom omdirigering av inmatning eller annars skulle kräva en interaktiv användare. Till exempel, om en applikation agerar på tangenttryckningar, som inte kan omdirigeras, skiljer mellan normala och utökade tangenter, rensar kön innan den accepterar ny inmatning vid start eller under vissa förhållanden, eller för att den inte läser igenom standardinmatning alls. Tangentslagsstapling ger vanligtvis också medel för att kontrollera timingen för simulerade nycklar som skickas eller för att fördröja nya nycklar tills kön tömdes etc. Det gör det också möjligt att simulera nycklar som inte finns på ett tangentbord (eftersom motsvarande nycklar inte finns fysiskt eller eftersom en annan tangentbordslayout används) och därför skulle vara omöjlig att skriva av en användare.
Säkerhetsfunktioner
Skal | Säker (lösenord) prompt | Krypterade variabler/parametrar | Fil-/kataloglösenord | Utför behörighet | Otillförlitlig skriptblockering | Begränsad skaldelmängd | Säker dataundergrupp |
---|---|---|---|---|---|---|---|
Bourne skal | via stty | Nej | ? | — | Nej | Ja | Nej |
POSIX skal | via stty | Nej | ? | — | Nej | Nej | Nej |
bash (v4.0) | läsa -s | Nej | ? | — | Nej | Ja | Nej |
csh | via stty | Nej | ? | — | Nej | Ja | Nej |
tcsh | via stty | Nej | ? | — | Nej | Ja | Nej |
Hamilton C-skal | Nej | Nej | Nej | Nej | Nej | Nej | Nej |
Scsh | via stty | Nej | ? | — | Nej | Nej | Nej |
ksh (ksh93t+) | via stty | Nej | ? | — | Nej | Ja | Nej |
pdksh | via stty | Nej | ? | — | Nej | Ja | Nej |
zsh | läsa -s | Nej | ? | — | Nej | Ja | Nej |
aska | via stty | Nej | ? | — | Nej | Ja | Nej |
CCP | Nej | Nej | Nej | Nej | Nej | Nej | Nej |
COMMAND.COM | Partiell (endast under DR-DOS, frågar efter lösenord om filen/katalogen är skyddad) | Nej | Partiell (endast under DR-DOS via \dirname;dirpwd\filename;filepwd- syntax) | Partiell (endast under DR-DOS, om filerna är lösenordsskyddade för läsning och/eller exekveringstillstånd) | Nej | Nej | Nej |
OS/2 CMD.EXE | Nej | Nej | Nej | Nej | Nej | Nej | Nej |
Windows CMD.EXE | Nej | Nej | Nej | Nej | Nej | Nej | Nej |
4DOS | Ja (via INPUT /P eller INKEY /P ) | Nej | Partiell (endast under DR-DOS via \dirname;;dirpwd\filename;;filepwd- syntax) | Partiell (endast under DR-DOS, om filerna är lösenordsskyddade för läsning och/eller exekveringstillstånd) | Nej | Nej | Nej |
4OS2 | ? | Nej | Nej | Nej | Nej | Nej | Nej |
TCC (tidigare 4NT) | Ja (via INPUT /P , INKEY /P eller QUERYBOX /P ) | Nej | Nej | Nej | Nej | Nej | Nej |
PowerShell | Ja | Ja | Nej | Nej | Ja | Ja | Ja |
rc | via stty | Nej | ? | — | Nej | Ja | Nej |
BeanShell | ? | ? | ? | ? | ? | ? | ? |
VMS DCL | Ja | Nej | Nej | Ja | Nej | Ja | Nej |
fisk | läsa -s | Nej | ? | — | Nej | Ja (via fisk -l ) | ? |
Säker uppmaning
Vissa skalskript måste fråga användaren efter känslig information som lösenord , privata digitala nycklar, PIN-koder eller annan konfidentiell information. Känslig inmatning ska inte ekas tillbaka till skärmen/inmatningsenheten där den kan hämtas av obehöriga personer. Plaintext minnesrepresentation av känslig information bör också undvikas eftersom det kan göra att informationen äventyras, t.ex. genom swap-filer, kärndumpar etc.
Skalen bash, zsh och PowerShell erbjuder detta som en specifik funktion. Skal som inte erbjuder detta som en specifik funktion kan fortfarande kunna stänga av eko på något annat sätt. Skal som körs på ett Unix/Linux-operativsystem kan använda det stty för att stänga av/aktivera eko av inmatade tecken. Förutom att inte eka tillbaka tecknen, krypterar PowerShells -AsSecureString- alternativ också inmatningen tecken-för-tecken under inmatningsprocessen, vilket säkerställer att strängen aldrig representeras okrypterad i minnet där den kan äventyras genom minnesdumpar, skanning, transkription etc. .
Krypterade variabler/parametrar
Om ett skript läser in ett lösenord i en miljövariabel finns det i minnet i vanlig text, och kan därför nås via en kärndump. Det finns också i processmiljön, som kan vara tillgänglig för andra processer som startas av skriptet.
PowerShell kan arbeta med krypterade strängvariabler/parametrar. Krypterade variabler säkerställer att värden inte avslöjas av misstag genom t.ex. transkript, eko, loggfiler, minnes- eller kraschdumpar eller till och med skadlig minnesskanning. PowerShell stöder även lagring av sådana krypterade strängar i textfiler, skyddade av en nyckel som ägs av den aktuella användaren.
Utför behörighet
Vissa operativsystem definierar en exekveringsbehörighet som kan ges till användare/grupper för en fil.
På Unix-system styr exekveringsbehörigheten åtkomsten till att anropa filen som ett program, och gäller både för körbara filer och skript. Eftersom tillståndet upprätthålls i programladdaren , behövs ingen skyldighet från det anropande programmet, eller det anropade programmet, för att upprätthålla exekveringstillståndet – detta gäller även för skal och andra tolkprogram. Beteendet styrs av POSIX C-biblioteket som används för gränssnitt med kärnan. POSIX anger att exec
-familjen av funktioner ska misslyckas med EACCESS (behörighet nekad) om filen nekar exekveringstillstånd (se – System Interfaces Reference, The Single UNIX Specification , Version 4 från The Open Group ).
Exekveringsbehörigheten gäller endast när skriptet körs direkt . Om ett skript anropas som ett argument till tolkningsskalet, kommer det att exekveras oavsett om användaren har exekveringsbehörigheten för det skriptet.
Även om Windows också anger en exekveringsbehörighet , blockerar inget av de Windows-specifika skalen skriptkörning om behörigheten inte har beviljats.
Otillförlitlig skriptblockering
Vissa skal blockerar skript som bedöms vara opålitliga, eller vägrar att köra skript om de beordras av en systemadministratör.
Begränsning för körning av skriptursprung
PowerShell kan ställas in för att blockera exekvering av skript som har markerats som erhållna från ett okänt/otillförlitligt ursprung (t.ex. Internet). Internetanslutna applikationer som webbläsare, IM-klienter, e-postläsare etc. markerar filer som laddats ner från internet med ursprungszonen i en alternativ dataström som förstås av PowerShell.
Signerad skriptbegränsning
Manus-/kodsigneringspolicyer kan användas för att säkerställa att en driftsavdelning endast kör godkända skript/kod som har granskats och signerats av en betrodd granskare/godkännare. Signeringsregimer skyddar också mot manipulering. Om ett skript skickas från leverantören till en klient kan klienten använda signatur för att säkerställa att skriptet inte har manipulerats under överföringen och att skriptet verkligen kommer från leverantören och inte en angripare som försöker social ingenjör en operatör att köra en attackskript.
PowerShell kan ställas in för att tillåta exekvering av på annat sätt blockerade skript (t.ex. som kommer från en opålitlig zon) om skriptet har signerats digitalt med ett betrodd digitalt certifikat.
Utförandepolicyer på flera nivåer
Ett företag kan vilja upprätthålla utförandebegränsningar globalt inom företaget och/eller vissa delar av företaget. Det kanske vill ställa in en policy för att köra signerade skript men tillåta vissa delar av företaget att ställa in sina egna policyer för zonindelade begränsningar.
PowerShell tillåter att skriptblockeringspolicyer tillämpas på flera nivåer: lokal dator, nuvarande användare etc. En policy på högre nivå åsidosätter en policy på lägre nivå, t.ex. om en policy är definierad för den lokala maskinen är den på plats för alla användare av den lokala maskinen , endast om den lämnas odefinierad på den högre nivån kan den definieras för de lägre nivåerna.
Begränsad skaldelmängd
Flera skal kan startas eller konfigureras för att starta i ett läge där endast en begränsad uppsättning kommandon och åtgärder är tillgängliga för användaren. Även om det inte är en säkerhetsgräns ( kommandot som får åtkomst till en resurs är blockerat snarare än resursen) används detta vanligtvis för att begränsa användarnas handlingar innan de loggar in.
Ett begränsat läge är en del av POSIX- specifikationen för skal, och de flesta av Linux/Unix-skalen stöder ett sådant läge där flera av de inbyggda kommandona är inaktiverade och endast externa kommandon från en viss katalog kan anropas.
PowerShell stöder begränsade lägen genom sessionskonfigurationsfiler eller sessionskonfigurationer. En sessionskonfigurationsfil kan definiera synliga (tillgängliga) cmdlets, alias, funktioner, sökvägsleverantörer och mer.
Säker dataundergrupp
Skript som anropar andra skript kan utgöra en säkerhetsrisk eftersom de potentiellt kan exekvera främmande kod i sammanhanget för användaren som startade det ursprungliga skriptet. Skript kommer vanligtvis att utformas för att uteslutande inkludera skript från kända säkra platser; men i vissa fall, t.ex. när man erbjuder användaren ett sätt att konfigurera miljön eller laddar lokaliserade meddelanden, kan skriptet behöva inkludera andra skript/filer. Ett sätt att hantera denna risk är att skalet erbjuder en säker delmängd av kommandon som kan köras av ett inkluderat skript.
PowerShell- datasektioner kan innehålla konstanter och uttryck med en begränsad delmängd av operatorer och kommandon. PowerShell-datasektioner används när t.ex. lokaliserade strängar behöver läsas från en extern källa samtidigt som det skyddas mot oönskade biverkningar.
Anteckningar
externa länkar
- Nasarek, Marcus (maj 2007). "Artikel" (PDF) . Jämföra Bash med Windows Vista-skalet: Shell Games . Linux Magazine . Arkiverad (PDF) från originalet 2014-10-10.
- "Basspecifikationer - Shell och verktyg" . IEEE 1003.1 Standard for Information Technology – Portable Operating System Interface (POSIX) (2018 utg.). Öppna grupp. 2017.