EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

mksh – Online in der Cloud

Führen Sie mksh im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl mksh, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


mksch, sh — MirBSD Korn-Shell

ZUSAMMENFASSUNG


mksch [-+abCefhiklmnprUuvXx] [-T [!]tty | -] [-+o zu erhalten] [-c Schnur | -s | Datei
[Argument ...]]
eingebauter Name [Argument ...]

BESCHREIBUNG


mksch ist ein Befehlsinterpreter, der sowohl für interaktive als auch für Shell-Skripte gedacht ist. Es ist
Befehlssprache ist eine Obermenge der Shell-Sprache sh(C) und weitgehend kompatibel mit der
Original Korn-Shell. Manchmal kann diese Handbuchseite Ratschläge zur Skripterstellung geben; während es
Berücksichtigt manchmal portables Shell-Scripting oder verschiedene Standards alle
Informationen werden in erster Linie präsentiert mit mksch im Hinterkopf behalten und als solches verstanden werden.

Ich bin die an Android Benutzer, so was ist mksch?
mksch ist ein UNIX-Shell-/Befehlsinterpreter, ähnlich wie COMMAND.COM or CMD.EXE, Was sich
ist seit einiger Zeit im Android Open Source Project enthalten. Im Grunde ist es ein Programm
die in einem Terminal (Konsolenfenster) ausgeführt wird, Benutzereingaben entgegennimmt und Befehle oder Skripte ausführt,
was auch im Hintergrund von anderen Programmen angefordert werden kann. Jedes Privileg
Pop-ups, auf die Sie möglicherweise stoßen, sind es also nicht mksch Probleme, aber Fragen von anderen
Programm, das es verwendet.

Aufruf
Die meisten Builtins können direkt aufgerufen werden, zum Beispiel wenn ein Link von seinem Namen auf das
Hülse; nicht alle sinnvoll, wurden getestet oder funktionieren überhaupt.

Die Optionen sind wie folgt:

-c Schnur mksch führt die Befehle aus, die in enthalten sind Schnur.

-i Interaktive Hülle. Eine Shell, die Befehle von der Standardeingabe liest, ist
„interaktiv“, wenn diese Option verwendet wird oder wenn sowohl Standardeingabe als auch Standardfehler
hängen an a tty(4). Eine interaktive Shell hat die Jobsteuerung aktiviert, ignoriert
die Signale SIGINT, SIGQUIT und SIGTERM und druckt Eingabeaufforderungen, bevor die Eingabe gelesen wird
(siehe Parameter PS1 und PS2). Es verarbeitet auch den ENV-Parameter oder die
mkshrc Datei (siehe unten). Für nicht interaktive Shells ist die Trackall Option ist aktiviert
standardmäßig (siehe kompensieren Befehl unten).

-l Login-Shell. Wenn der Basisname mit dem die Shell aufgerufen wird (dh argv[0]), beginnt mit
'-' oder wenn diese Option verwendet wird, wird angenommen, dass die Shell eine Login-Shell ist; sehen
Startup Dateien unten.

-p Privilegierte Hülle. Eine Shell ist „privilegiert“, wenn die echte Benutzer- oder Gruppen-ID dies tut
stimmt nicht mit der effektiven Benutzer-ID oder Gruppen-ID überein (siehe getuid(2) und getgid(2)).
Das Löschen der privilegierten Option bewirkt, dass die Shell ihre effektive Benutzer-ID festlegt
(Gruppen-ID) auf seine echte Benutzer-ID (Gruppen-ID) um. Weitere Implikationen finden Sie unter Startup
Dateien. Wenn die Shell privilegiert ist und dieses Flag nicht explizit gesetzt ist, wird die
Die Option „privilegiert“ wird nach der Verarbeitung der Startdateien automatisch gelöscht.

-r Eingeschränkte Hülle. Eine Shell ist „eingeschränkt“, wenn diese Option verwendet wird. Folgende
Einschränkungen treten in Kraft, nachdem die Shell ein Profil und ENV . verarbeitet hat
Dateien:

· Das cd (und chdir)-Befehl ist deaktiviert.
· Die Parameter SHELL, ENV und PATH können nicht geändert werden.
· Befehlsnamen können nicht mit absoluten oder relativen Pfaden angegeben werden.
· Das -p Option des eingebauten Befehls Befehl kann nicht verwendet werden.
· Umleitungen, die Dateien erstellen, können nicht verwendet werden (zB '>', '>|', '>>', '<>').

-s Die Shell liest Befehle aus der Standardeingabe; alle Nicht-Optionsargumente sind
positionelle Parameter.

-T Name Laichen mksch auf die tty(4) Gerät gegeben. Die Wege Name, /dev/ttyCname und
/dev/ttyname werden der Reihe nach versucht. Wenn nicht Name beginnt mit einem Ausrufezeichen
('!'), dies geschieht in einer Subshell und kehrt sofort zurück. Wenn Name ist ein Strich
('-'), stattdessen vom steuernden Terminal trennen (Daemonisieren).

Zusätzlich zu den oben genannten Optionen sind die in der kompensieren eingebauter Befehl kann auch verwendet werden
auf der Kommandozeile: beide [-+abCefhkmnuvXx] Und [-+o zu erhalten] kann für einzelne Buchstaben verwendet werden
bzw. Long-Optionen.

Wenn weder die -c noch das -s Option angegeben ist, gibt das erste Argument, das keine Option ist, an
der Name einer Datei, aus der die Shell Befehle liest. Wenn keine Nicht-Option-Argumente vorhanden sind, wird die
Shell liest Befehle aus der Standardeingabe. Der Name der Shell (dh der Inhalt von
$0) wird wie folgt bestimmt: wenn die -c Option verwendet wird und es ein Nicht-Option-Argument gibt,
es wird als Name verwendet; Wenn Befehle aus einer Datei gelesen werden, wird die Datei als
Name; andernfalls wird der Basisname verwendet, mit dem die Shell aufgerufen wurde (dh argv[0]).

Der Exit-Status der Shell ist 127, wenn die in der Befehlszeile angegebene Befehlsdatei
nicht geöffnet werden, oder ungleich Null, wenn bei der Ausführung von a . ein schwerwiegender Syntaxfehler aufgetreten ist
Skript. Wenn keine schwerwiegenden Fehler aufgetreten sind, ist der Exit-Status der des letzten Befehls
ausgeführt, oder Null, wenn kein Befehl ausgeführt wird.

Startup Dateien
Den tatsächlichen Speicherort dieser Dateien finden Sie unter DATEIEN. Eine Login-Shell verarbeitet das System
Profil zuerst. Eine privilegierte Shell verarbeitet dann das suid-Profil. Ein nicht privilegierter Login
Als nächstes verarbeitet die Shell das Benutzerprofil. Eine nicht-privilegierte interaktive Shell prüft den Wert
des ENV-Parameters, nachdem er Parameter, Befehl, Arithmetik und Tilde ('~') unterzogen wurde
Auswechslung; wenn nicht gesetzt oder leer, wird das Profil des Benutzers mkshrc verarbeitet; andernfalls, wenn eine Datei
dessen Name das Ersetzungsergebnis ist existiert, wird es verarbeitet; Nicht-Existenz ist still
ignoriert. Eine privilegierte Shell lässt dann die Privilegien fallen, wenn dies auch nicht der Fall war -p Option auf der
Befehlszeile noch während der Ausführung der Startdateien gesetzt.

Befehl Syntax
Die Shell beginnt mit dem Parsen ihrer Eingabe, indem sie alle Backslash-Newline-Kombinationen entfernt
breche es auf Worte. Wörter (die Zeichenfolgen sind) werden durch nicht in Anführungszeichen gesetzte begrenzt
Leerzeichen (Leerzeichen, Tabulator und Zeilenumbruch) oder Metazeichen ('<', '>', '|', ';', '(',
')', und '&'). Abgesehen vom Trennen von Wörtern werden Leerzeichen und Tabulatoren ignoriert, während Zeilenumbrüche
normalerweise Befehle abgrenzen. Die Metazeichen werden beim Erstellen des Folgenden verwendet Token:
'<', '<&', '<<', '<<<', '>', '>&', '>>', '&>' usw. werden verwendet, um Umleitungen anzugeben (siehe
Eingabe / Ausgabe- Umleitung unter); '|' wird verwendet, um Pipelines zu erstellen; '|&' wird verwendet, um Co-
Prozesse (siehe Co-Prozesse unter); ';' wird verwendet, um Befehle zu trennen; '&' wird verwendet, um . zu erstellen
asynchrone Pipelines; '&&' und '||' werden verwendet, um die bedingte Ausführung anzugeben; ';;', ';&'
und ';|' werden verwendet in Häuser Aussagen; '(( .. ))' wird in arithmetischen Ausdrücken verwendet; und
schließlich wird '( .. )' verwendet, um Subshells zu erstellen.

Leerzeichen und Metazeichen können einzeln mit einem Backslash ('\') oder in . zitiert werden
Gruppen mit doppelten ('"') oder einfachen ("'") Anführungszeichen. Beachten Sie, dass die folgenden Zeichen
auch von der Shell besonders behandelt und müssen zitiert werden, wenn sie sich selbst vertreten sollen:
'\', '"', ''', '#', '$', '`', '~', '{', '}', '*', '?' und '[' die ersten drei davon
sind die oben genannten Anführungszeichen (siehe Zitieren unter); '#', falls verwendet am
Wortanfang, leitet einen Kommentar ein – alles nach dem '#' bis zum nächsten
Zeilenumbruch wird ignoriert; '$' wird verwendet, um Parameter, Befehle und Arithmetik einzuführen
Ersetzungen (siehe Substitution unter); '`' führt eine Befehlsersetzung im alten Stil ein
(sehen Substitution unter); '~' beginnt eine Verzeichniserweiterung (siehe Tilde Expansion unter); '{'
und '}' begrenzen csh(1)-Stil-Änderungen (siehe Klammer Expansion unter); und schlussendlich, '*',
'?' und '[' werden bei der Dateinamengenerierung verwendet (siehe Reichen Sie das Name Muster unten).

Beim Parsen von Wörtern und Token erstellt die Shell Befehle, von denen es zwei grundlegende gibt
Typen: einfache-befehle, typischerweise Programme, die ausgeführt werden, und zusammengesetzte Befehle, eine solche
as für und if -Anweisungen, Gruppierungskonstrukte und Funktionsdefinitionen.

Ein einfacher Befehl besteht aus einer Kombination von Parameterzuweisungen (siehe Parameter
unten), Ein-/Ausgabe-Umleitungen (siehe Eingabe / Ausgabe- Umleitungen unten) und Befehlswörter;
die einzige Einschränkung besteht darin, dass Parameterzuweisungen vor allen Befehlswörtern stehen. Die
Befehlswörter definieren, falls vorhanden, den auszuführenden Befehl und seine Argumente. Die
Der Befehl kann ein in die Shell integrierter Befehl, eine Funktion oder ein externer Befehl sein (dh ein separater
ausführbare Datei, die mit dem Parameter PATH gefunden wird; sehen Befehl Ausführung unten).
Beachten Sie, dass alle Befehlskonstrukte einen Exit-Status haben: Bei externen Befehlen ist dies verwandt
in den von . zurückgegebenen Status warten(2) (wenn der Befehl nicht gefunden werden konnte, ist der Exit-Status
127; wenn es nicht ausgeführt werden konnte, ist der Exit-Status 126); der Exit-Status eines anderen Befehls
Konstrukte (eingebaute Befehle, Funktionen, zusammengesetzte Befehle, Pipelines, Listen usw.) sind alle
gut definiert und werden dort beschrieben, wo das Konstrukt beschrieben wird. Der Austrittsstatus von a
Befehl, der nur aus Parameterzuweisungen besteht, ist der der letzten Befehlsersetzung
während der Parametrierung durchgeführt oder 0, wenn keine Befehlsersetzungen vorgenommen wurden.

Befehle können mit dem '|' aneinandergekettet werden. Token, um Pipelines zu bilden, in denen die
Standardausgabe jedes Befehls, aber der letzte wird weitergeleitet (siehe Rohr(2)) auf die Standardeingabe von
der folgende Befehl. Der Exit-Status einer Pipeline ist der des letzten Befehls, es sei denn
Rohrfehler Option gesetzt ist (siehe dort). Alle Befehle einer Pipeline werden separat ausgeführt
Unterschalen; dies ist von POSIX erlaubt, unterscheidet sich aber von beiden Varianten von AT&T UNIX ksh, Wobei
alle außer dem letzten Befehl wurden in Subshells ausgeführt; siehe die lesen Einbaubeschreibung für
Auswirkungen und Problemumgehungen. Einer Pipeline kann das '!' vorangestellt werden. reserviertes Wort, das
bewirkt, dass der Austrittsstatus der Pipeline logisch ergänzt wird: wenn der ursprüngliche Status
0 war, ist der ergänzte Status 1; wenn der ursprüngliche Status nicht 0 war, wird das komplementierte
Status wird 0 sein.

Listen von Befehlen können erstellt werden, indem Pipelines durch eines der folgenden Token getrennt werden:
'&&', '||', '&', '|&' und ';'. Die ersten beiden sind für die bedingte Ausführung: „cmd1 && cmd2"
wird ausgeführt cmd2 nur wenn der Exit-Status von cmd1 ist null; '||' ist das Gegenteil – cmd2 is
wird nur ausgeführt, wenn der Exit-Status von cmd1 ist nicht Null. '&&' und '||' haben gleichen Vorrang
die höher ist als die von '&', '|&' und ';', die ebenfalls den gleichen Vorrang haben. Notiz
dass die '&&' und '||' Operatoren sind "linksassoziativ". Beides zum Beispiel
Befehle drucken nur "bar":

$ false && echo foo || Echoleiste
$ wahr || echo foo && echo bar

Das Token '&' bewirkt, dass der vorhergehende Befehl asynchron ausgeführt wird; das heißt, die Schale
startet den Befehl, wartet aber nicht, bis er abgeschlossen ist (die Shell verfolgt die
Status asynchroner Befehle; sehen Job Smartgeräte App unter). Wenn ein asynchroner Befehl
gestartet, wenn die Jobsteuerung deaktiviert ist (dh in den meisten Skripten), wird der Befehl gestartet mit
Signale SIGINT und SIGQUIT ignoriert und mit Eingabe umgeleitet von / dev / null (jedoch,
im asynchronen Befehl angegebene Umleitungen haben Vorrang). Der '|&'-Operator
startet einen Co-Prozess, der eine spezielle Art von asynchronem Prozess ist (siehe Co-Prozesse
unter). Beachten Sie, dass ein Befehl dem '&&' und '||' folgen muss. Betreiber, obwohl es nicht notwendig ist
folgen Sie '&', '|&' oder ';'. Der Exit-Status einer Liste ist der des zuletzt ausgeführten Befehls,
mit Ausnahme von asynchronen Listen, für die der Exit-Status 0 ist.

Zusammengesetzte Befehle werden mit den folgenden reservierten Wörtern erstellt. Diese Worte sind nur
erkannt, wenn sie nicht in Anführungszeichen stehen und als erstes Wort eines Befehls verwendet werden (dh
ihnen dürfen keine Parameterzuweisungen oder Umleitungen vorangestellt werden):

Fall sonst Funktion dann ! (
esac wenn Zeit [[ ((
fertig bis {
elif für select while }

In den folgenden zusammengesetzten Befehlsbeschreibungen, Befehlslisten (bezeichnet als Liste) das sind
gefolgt von reservierten Wörtern müssen mit einem Semikolon, einem Zeilenumbruch oder einem (syntaktisch
richtig) reserviertes Wort. Zum Beispiel sind die folgenden alle gültig:

$ { echo foo; Echoleiste; }
$ { echo foo; Echoleiste }
$ { { echo foo; Echobalken; } }

Dies gilt nicht:

$ { echo foo; Echoleiste }

(Liste)
Ausführen Liste in einer Unterschale. Es gibt keine implizite Möglichkeit, Umgebungsänderungen von
eine Unterschale zurück zu ihrem Elternteil.

{ Liste;; }}
Verbundkonstrukt; Liste wird ausgeführt, aber nicht in einer Subshell. Beachten Sie, dass '{' und '}'
sind reservierte Wörter, keine Metazeichen.

Häuser Wort In [[(] Anleitungen [| Anleitungen] ...) Liste Terminator] ... esac
Das Häuser Aussage versucht zu entsprechen Wort gegen eine angegebene Anleitungen; das Liste
mit dem ersten erfolgreich übereinstimmenden Muster verknüpft ist, wird ausgeführt. Muster verwendet in
Häuser Anweisungen sind die gleichen wie für Dateinamenmuster verwendet, außer dass die
Einschränkungen bezüglich '.' und '/' werden weggelassen. Beachten Sie, dass jedes nicht in Anführungszeichen gesetzte Leerzeichen vor
und nachdem ein Muster abgezogen wurde; Leerzeichen innerhalb eines Musters müssen in Anführungszeichen gesetzt werden. Beide
Wort und die Muster unterliegen Parameter-, Befehls- und arithmetischen Ersetzungen,
sowie Tilde-Ersetzung.

Aus historischen Gründen können offene und geschlossene Klammern anstelle von verwendet werden in und esac z.B
Häuser $ foo { *) Echo Bar ;; }.

Die Liste Terminators sind:

';;' Beenden Sie nach der Liste.

';&' Springt in die nächste Liste durch.

';|' Werten Sie die verbleibenden Musterlistentupel aus.

Der Austrittsstatus von a Häuser Anweisung ist die des ausgeführten Liste; wenn nein Liste is
ausgeführt, ist der Exit-Status Null.

für Name [im Wort ...]; tun Liste; getan
Für jeden Wort in der angegebenen Wortliste der Parameter Name ist auf das Wort gesetzt und
Liste ausgeführt wird. Wenn in wird nicht verwendet, um eine Wortliste anzugeben, die Positionsparameter
($1, $2 usw.) werden stattdessen verwendet. Aus historischen Gründen können offene und geschlossene Klammern sein
verwendet anstelle von do und erledigt z.B für i; { Echo $ich; }. Der Austrittsstatus von a für
Anweisung ist der letzte Exit-Status von Liste; ob Liste wird nie ausgeführt, der Exit-Status
ist null.

if Liste;; dann Liste; [elif Liste;; dann Liste;] ... [anders Liste;] fi
Wenn der Ausgangsstatus des ersten Liste ist null, die zweite Liste wird ausgeführt; Andernfalls,
Liste nach dem elif, falls vorhanden, wird mit ähnlichen Konsequenzen ausgeführt. Ich falle
die Listen nach dem if und elifs fehlschlagen (dh mit einem Status ungleich Null beenden), die Liste
nach dem sonst ausgeführt wird. Der Austrittsstatus von an if Aussage ist die von nicht-
bedingt Liste das ausgeführt wird; wenn nicht bedingungslos Liste ausgeführt wird, der Ausgang
zustand ist null.

wählen Name [im Wort ...]; tun Liste; getan
Das wählen -Anweisung bietet eine automatische Methode, dem Benutzer ein Menü zu präsentieren
und daraus auswählen. Eine aufgezählte Liste der angegebenen Wort(s) ist aufgedruckt
Standardfehler, gefolgt von einer Eingabeaufforderung (PS3: normalerweise '#?'). Eine Zahl, die entspricht
eines der aufgezählten Wörter wird dann von der Standardeingabe gelesen, Name wird auf die eingestellte
ausgewähltes Wort (oder nicht gesetzt, wenn die Auswahl nicht gültig ist), wird REPLY auf das Gelesene gesetzt
(Vorder-/Nachlaufraum wird gestrippt) und Liste ausgeführt wird. Wenn eine Leerzeile (dh
null oder mehr IFS-Oktette) eingegeben wird, wird das Menü ohne Ausführung erneut gedruckt Liste.

Wann Liste abgeschlossen ist, wird die Aufzählungsliste gedruckt, wenn REPLY NULL ist, ist die Eingabeaufforderung
gedruckt usw. Dieser Vorgang wird fortgesetzt, bis ein Dateiende gelesen wird, ein Interrupt
empfangen wird, oder a brechen -Anweisung wird innerhalb der Schleife ausgeführt. Wenn "im Wort ..." ist
weggelassen, werden die Positionsparameter verwendet (zB $1, $2 usw.). Für historische
Aus Gründen können offene und geschlossene Klammern anstelle von verwendet werden do und erledigt z.B wählen i; {
Echo $ich; }. Der Austrittsstatus von a wählen Anweisung ist null, wenn a brechen Aussage ist
verwendet, um die Schleife zu verlassen, andernfalls ungleich Null.

bis Liste; tun Liste; getan
Das funktioniert wie während, außer dass der Rumpf nur ausgeführt wird, während der Exit-Status von
Der Erste Liste ist nicht Null.

während Liste; tun Liste; getan
A während ist eine vorgeprüfte Schleife. Sein Body wird so oft ausgeführt wie der Exit-Status von
Der Erste Liste ist null. Der Austrittsstatus von a während Anweisung ist der letzte Exit-Status
dauert ebenfalls 3 Jahre. Das erste Jahr ist das sog. Liste im Körper der Schleife; Wenn der Körper nicht ausgeführt wird, ist der Exit-Status
Null.

Funktion Name { Liste;; }}
Definiert die Funktion Name (sehen Funktionen unter). Beachten Sie, dass Weiterleitungen angegeben sind
nach einer Funktionsdefinition ausgeführt werden, wenn die Funktion ausgeführt wird, nicht wenn
die Funktionsdefinition wird ausgeführt.

Name() Befehl
Meist das gleiche wie Funktion (sehen Funktionen unter). Leerzeichen (Leerzeichen oder Tabulator) nach
Name wird die meiste Zeit ignoriert.

Funktion Name() { Liste;; }}
Das Gleiche wie Name() (bashismus). Die Funktion Schlüsselwort wird ignoriert.

Zeit [-p] [Pipeline]
Das Befehl Ausführung Abschnitt beschreibt die Zeit reserviertes Wort.

(( Ausdruck ))
Der arithmetische Ausdruck Ausdruck wird ausgewertet; Äquivalent zu „Let-Ausdruck“ (siehe
Arithmetik Ausdrücke und dem lassen Befehl, unten) in einem zusammengesetzten Konstrukt.

[[ Ausdruck ]]
Ähnlich wie bei der Test und [ ... ] Befehle (später beschrieben), mit den folgenden
Ausnahmen:

· Feldaufteilung und Dateinamengenerierung werden für Argumente nicht durchgeführt.

· Das -a (Und und -o (OR)-Operatoren werden durch '&&' bzw. '||' ersetzt.

· Operatoren (zB '-f', '=', '!') müssen nicht in Anführungszeichen gesetzt werden.

· Parameter-, Befehls- und arithmetische Ersetzungen werden als Ausdrücke ausgeführt:
ausgewertet und verzögerte Ausdrucksauswertung wird für '&&' und '||' Betreiber.
Dies bedeutet, dass in der folgenden Aussage $( wird genau dann ausgewertet, wenn
die Datei foo existiert und ist lesbar:

$ [[ -r foo && $(

· Der zweite Operand der '!='- und '='-Ausdrücke ist eine Teilmenge von Mustern (zB
der Vergleich [[ foobar = NS ]] gelingt es). Das funktioniert sogar indirekt:

$ bar=foobar; baz='f*r'
$ [[ $bar = $baz ]]; Echo $?
$ [[ $bar = "$baz" ]]; echo $?

Überraschenderweise gelingt der erste Vergleich, der zweite nicht.
Dies gilt derzeit nicht für alle extglob-Metazeichen.

Zitieren
Anführungszeichen werden verwendet, um zu verhindern, dass die Shell Zeichen oder Wörter speziell behandelt. Es gibt
drei Zitiermethoden. Zuerst zitiert '\' das folgende Zeichen, es sei denn, es steht am
Ende einer Zeile, in diesem Fall werden sowohl das '\' als auch der Zeilenumbruch entfernt. Zweitens eine Single
quote ("'") zitiert alles bis zum nächsten einfachen Anführungszeichen (dies kann sich über Zeilen erstrecken). Drittens, a
doppeltes Anführungszeichen ('"') setzt alle Zeichen außer '$', '`' und '\' in Anführungszeichen bis zum nächsten ohne Escapezeichen
doppeltes Zitat. '$' und '`' in doppelten Anführungszeichen haben ihre übliche Bedeutung (dh Parameter,
Arithmetik oder Befehlsersetzung), außer dass bei den Ergebnissen keine Feldaufteilung durchgeführt wird
von Ersetzungen in doppelten Anführungszeichen, und die alte Form der Befehlsersetzung hat
Backslash-Quoting für doppelte Anführungszeichen aktiviert. Wenn ein '\' in einer Zeichenfolge in doppelten Anführungszeichen ist
gefolgt von '\', '$', '`' oder '"', wird es durch das zweite Zeichen ersetzt; wenn es folgt
durch einen Zeilenumbruch werden sowohl das '\' als auch der Zeilenumbruch entfernt; andernfalls werden sowohl das '\' als auch das
Zeichenfolgen bleiben unverändert.

Wenn einer Zeichenfolge in einfachen Anführungszeichen ein '$' ohne Anführungszeichen vorangestellt ist, wird eine umgekehrte Schrägstrich-Erweiterung im C-Stil (siehe
unten) angewendet wird (sogar einzelne Anführungszeichen darin können mit Escapezeichen versehen werden und werden nicht beendet
die Zeichenfolge dann); das erweiterte Ergebnis wird wie jede andere Zeichenfolge in einfachen Anführungszeichen behandelt. Wenn eine
Strings in doppelten Anführungszeichen wird ein '$' ohne Anführungszeichen vorangestellt, das '$' wird einfach ignoriert.

Backslash Expansion
An Stellen, an denen Backslashs erweitert werden, können bestimmte C- und AT&T-UNIX ksh oder GNU bash Stil
Fluchten werden übersetzt. Dazu gehören '\a', '\b', '\f', '\n', '\r', '\t', '\U########',
'\u####' und '\v'. Für '\U########' und '\u####' bedeutet „#“ eine hexadezimale Ziffer, von der
es kann bis zu vier oder acht keine geben; diese Escapes übersetzen einen Unicode-Codepoint in UTF-8.
Außerdem werden '\E' und '\e' zum Escape-Zeichen erweitert.

Im drucken eingebauter Modus, '\'', '\'' und '\?' sind ausdrücklich ausgeschlossen; Oktalfolgen
muss keine bis zu drei oktalen Ziffern "#" mit der Ziffer Null ('\0###') haben;
hexadezimale Folgen '\x##' sind auf keine bis zu zwei hexadezimale Ziffern „#“ beschränkt; beide
oktale und hexadezimale Sequenzen werden in rohe Oktette umgewandelt; '\#', wobei # keines der oben genannten ist,
übersetzt in \# (Backslashes werden beibehalten).

Die Backslash-Erweiterung im C-Stil-Modus unterscheidet sich geringfügig: Oktalsequenzen '\###' müssen haben
keine Ziffer Null vor der eins bis drei oktale Ziffern „#“ und ergeben rohe Oktette;
hexadezimale Folgen '\x#*' fressen gierig so viele hexadezimale Ziffern '#' auf, wie sie können und
mit der ersten nicht-hexadezimalen Ziffer beenden; diese übersetzen einen Unicode-Codepoint in
UTF-8. Die Sequenz '\c#', wobei „#“ ein beliebiges Oktett ist, wird in Strg-# übersetzt (was im Grunde
bedeutet, '\c?' wird DEL, alles andere wird bitweise UND-verknüpft mit 0x1F). Schließlich '\#', wobei
# ist keines der oben genannten, übersetzt in # (hat den Backslash getrimmt), auch wenn es a . ist
Neue Zeile.

Aliases
Es gibt zwei Arten von Aliasnamen: normale Befehlsaliasnamen und verfolgte Aliase. Befehls-Aliasnamen
werden normalerweise als kurze Hand für einen langen oder oft verwendeten Befehl verwendet. Die Schale dehnt sich aus
Befehlsaliase (dh ersetzt den Aliasnamen für seinen Wert), wenn es das erste Wort liest
eines Befehls. Ein erweiterter Alias ​​wird erneut verarbeitet, um nach weiteren Aliasen zu suchen. Wenn ein Befehl
Alias ​​endet mit einem Leerzeichen oder Tab, das folgende Wort wird ebenfalls auf Aliaserweiterung geprüft. Die
Alias-Erweiterungsprozess stoppt, wenn ein Wort gefunden wird, das kein Alias ​​ist, wenn ein Wort in Anführungszeichen
gefunden wird oder wenn ein Aliaswort gefunden wird, das gerade erweitert wird. Aliasse sind
speziell eine interaktive Funktion: Während sie zufällig in Skripten und auf dem
Befehlszeile in einigen Fällen werden Aliase während des Lexings erweitert, daher muss ihre Verwendung in a
Befehlsbaum von ihrer Definition trennen; Andernfalls wird der Alias ​​nicht gefunden.
Auffällig sind Befehlslisten (getrennt durch Semikolon, bei Befehlsersetzungen auch durch Zeilenumbrüche)
kann ein und derselbe Parse-Baum sein.

Die folgenden Befehlsaliasnamen werden automatisch von der Shell definiert:

autoload='\typeset -fu'
Funktionen='\typeset -f'
hash='\eingebauter Alias ​​-t'
history='\eingebauter fc -l'
integer='\typeset -i'
local='\typeset'
login='\exec login'
nameref='\typeset -n'
nohup='nohup'
r='\eingebauter fc -e -'
type='\eingebaut woher -v'

Nachverfolgte Aliase ermöglichen es der Shell, sich daran zu erinnern, wo sie einen bestimmten Befehl gefunden hat. Der erste
Wenn die Shell eine Pfadsuche für einen Befehl durchführt, der als verfolgter Alias ​​markiert ist, wird gespeichert
den vollständigen Pfad des Befehls. Bei der nächsten Ausführung des Befehls überprüft die Shell die
gespeicherter Pfad, um zu sehen, ob er noch gültig ist, und vermeidet in diesem Fall eine Wiederholung der Pfadsuche.
Nachverfolgte Aliase können aufgelistet und erstellt werden mit alias -t. Beachten Sie, dass das Ändern des PATH
Parameter löscht die gespeicherten Pfade für alle verfolgten Aliase. Wenn die Trackall Option ist eingestellt
(dh kompensieren -o Trackall or kompensieren -h) verfolgt die Shell alle Befehle. Diese Option ist eingestellt
automatisch für nicht interaktive Shells. Für interaktive Shells nur die folgenden
Befehle werden automatisch verfolgt: Katze(1) cc(1) chmod(1) cp(1) Datum(1) ed(1)
Emacs(1) grep(1) ls(1) um(1) mv(1) pr(1) rm(1) Durst(1) sh(1) vi(1) und die(1).

Substitution
Der erste Schritt, den die Shell bei der Ausführung eines einfachen Befehls unternimmt, besteht darin, Ersetzungen an . durchzuführen
die Worte des Befehls. Es gibt drei Arten von Substitutionen: Parameter, Befehl und
Arithmetik. Parameterersetzungen, die im nächsten Abschnitt ausführlich beschrieben werden,
nimm das Formular $Name oder ${...}; Befehlsersetzungen haben die Form $(Befehloder
(veraltet) `Befehl` oder (wird in der aktuellen Umgebung ausgeführt) ${ Befehl;} und streifen
nachgestellte Zeilenumbrüche; und arithmetische Substitutionen haben die Form $((Ausdruck)). Analysieren der
Die Befehlsersetzung in der aktuellen Umgebung erfordert ein Leerzeichen, einen Tabulator oder eine neue Zeile nach dem Öffnen
geschweifte Klammer und dass die schließende geschweifte Klammer als Schlüsselwort erkannt wird (dh es wird ein Zeilenumbruch vorangestellt)
oder Semikolon). Sie werden auch Funsubs (Funktionsersetzungen) genannt und verhalten sich wie
Funktionen darin aus einer regionalen und Rückkehr arbeiten, und darin wunsch beendet die Eltern-Shell; Hülse
Optionen werden geteilt.

Eine weitere Variante der Substitution sind die valsubs (Wertsubstitutionen) ${|Befehl;} welche sind
wird auch in der aktuellen Umgebung ausgeführt, wie funsubs, aber teilen ihre E/A mit dem Elternteil;
stattdessen werten sie aus, was auch immer die anfänglich leere ausdruckslokale Variable REPLY ist
auf innerhalb der . eingestellt Befehls.

Wenn eine Ersetzung außerhalb von doppelten Anführungszeichen erscheint, sind die Ergebnisse der Ersetzung
generell abhängig vom aktuellen Wert des IFS
Parameter. Der Parameter IFS gibt eine Liste von Oktetten an, die verwendet werden, um einen String aufzuteilen
in mehrere Wörter; alle Oktette aus dem eingestellten Leerzeichen, Tabulator und Zeilenumbruch, die im IFS erscheinen
Oktette werden als „IFS-Whitespace“ bezeichnet. Sequenzen von einem oder mehreren IFS-Whitespace-Oktetten, in
Kombination mit null oder einem Nicht-IFS-Whitespace-Oktett, begrenzen Sie ein Feld. Als Sonderfall,
führender und nachgestellter IFS-Leerraum wird entfernt (dh kein führendes oder nachfolgendes leeres Feld ist
dadurch geschaffen); führende oder nachfolgende Nicht-IFS-Leerzeichen erzeugen ein leeres Feld.

Beispiel: Wenn IFS auf „ :“, und VAR ist auf eingestellt
“ EIN : B::D“, ergibt die Ersetzung von $VAR vier Felder: 'A',
'B', '' (ein leeres Feld) und 'D'. Beachten Sie, dass wenn der IFS-Parameter auf leer gesetzt ist
string, es erfolgt keine Feldaufteilung; wenn es nicht gesetzt ist, der Standardwert von Leerzeichen, Tabulator und
Zeilenumbruch verwendet wird.

Beachten Sie außerdem, dass die Feldaufteilung nur für das unmittelbare Ergebnis der gilt
Auswechslung. Unter Verwendung des vorherigen Beispiels führt die Ersetzung von $VAR:E zu dem
Felder: 'A', 'B', '' und 'D:E', nicht 'A', 'B', '', 'D' und 'E'. Dieses Verhalten ist POSIX
kompatibel, aber inkompatibel mit einigen anderen Shell-Implementierungen, die Feldaufteilung durchführen
auf dem Wort, das die Ersetzung enthält, oder verwenden Sie IFS als allgemeines Leerzeichen-Trennzeichen.

Die Ergebnisse der Substitution unterliegen, sofern nicht anders angegeben, auch der Strebendehnung
und Dateinamenerweiterung (siehe die entsprechenden Abschnitte unten).

Eine Befehlsersetzung wird durch die Ausgabe ersetzt, die durch den angegebenen Befehl erzeugt wird, der
in einer Unterschale laufen. Für $(Befehl) und ${|Befehl;} und ${ Befehl;} Ersetzungen, normal
Zitationsregeln werden verwendet, wenn Befehl wird geparst; jedoch für die veralteten `Befehl`form, a
'\' gefolgt von '$', '`' oder '\' wird entfernt (wie auch '"', wenn die Ersetzung Teil ist
einer Zeichenfolge in doppelten Anführungszeichen); ein umgekehrter Schrägstrich '\' gefolgt von einem anderen Zeichen bleibt unverändert.
Als Sonderfall bei Befehlsersetzungen ist ein Befehl der FormDatei wird interpretiert zu
bedeuten, ersetzen Sie den Inhalt von Datei. Beachten Sie, dass $( hat den gleichen Effekt wie $(Katze foo).

Beachten Sie, dass einige Shells keinen rekursiven Parser für Befehlsersetzungen verwenden, was zu
Versagen bei bestimmten Konstrukten; um portabel zu sein, verwenden Sie als Workaround 'x=$(cat) <<"EOF"' (oder die
Newline-Bewahrung der Erweiterung 'x=<<"EOF"'), anstatt nur den String zu schlürfen. IEEE Std 1003.1
(„POSIX.1“) empfiehlt die Verwendung von case-Anweisungen der Form 'x=$(case $foo in (bar) echo $bar
;; (*) echo $baz ;; esac)', was funktionieren würde, aber nicht als Beispiel dafür dienen würde
Portabilitätsproblem.

x=$(Fall $foo in bar) echo $bar ;; *) echo $baz ;; esac)
# oben kann bei alten Shells nicht parsen; unten ist die Problemumgehung
x=$(eval $(cat)) <<"EOF"
case $foo in bar) echo $bar ;; *) echo $baz ;; esac
EOF

Arithmetische Ersetzungen werden durch den Wert des angegebenen Ausdrucks ersetzt. Zum
Beispiel, der Befehl drucken $((2+3*4)) zeigt 14. Siehe Arithmetik Ausdrücke für eine
Beschreibung eines Ausdrucks.

Parameter
Parameter sind Shell-Variablen; ihnen können Werte zugewiesen und auf ihre Werte zugegriffen werden
unter Verwendung einer Parametersubstitution. Ein Parametername ist entweder einer der speziellen Single
Parameter für Satzzeichen oder Ziffernzeichen, wie unten beschrieben, oder ein Buchstabe gefolgt von einer Null oder
mehr Buchstaben oder Ziffern ('_' zählt als Buchstabe). Letztere Form kann als Arrays behandelt werden
durch Anhängen eines Array-Index der Form [ausdr] wo ausdr ist ein arithmetischer Ausdruck.
Array-Indizes in mksch sind auf den Bereich 0 bis einschließlich 4294967295 beschränkt. Das ist,
sie sind eine 32-Bit-Ganzzahl ohne Vorzeichen.

Parameterersetzungen haben die Form $Name, ${Name} oder ${Name[ausdr]} wo Name ist eine
Parametername. Ersetzen aller Array-Elemente durch ${Name[*]} und ${Name[@]} funktioniert
entspricht $* und $@ für Positionsparameter. Wenn die Substitution an a . durchgeführt wird
Parameter (oder ein Array-Parameterelement), der nicht gesetzt ist, wird durch einen Null-String ersetzt
es sei denn, die Substantiv Option (kompensieren -o Substantiv or kompensieren -u) gesetzt, in welchem ​​Fall ein Fehler auftritt.

Parametern können auf verschiedene Weise Werte zugewiesen werden. Zuerst setzt die Shell implizit
einige Parameter wie '#', 'PWD' und '$'; nur so ist das besondere Einzelzeichen
Parameter eingestellt sind. Zweitens werden Parameter aus der Shell-Umgebung importiert bei
Anlaufen. Drittens können Parametern in der Kommandozeile Werte zugewiesen werden: zum Beispiel: FOO=bar
setzt den Parameter „FOO“ auf „bar“; mehrere Parametrierungen können auf einem einzigen . vorgenommen werden
Befehlszeile und sie können von einem einfachen Befehl gefolgt werden, in diesem Fall sind die Zuweisungen
nur für die Dauer des Kommandos wirksam (solche Zuweisungen werden auch exportiert; siehe
weiter unten zu den Auswirkungen). Beachten Sie, dass sowohl der Parametername als auch das '=' sein müssen
unquoted, damit die Shell eine Parameterzuweisung erkennt. Das Konstrukt FOO+=baz ist auch
anerkannt; die alten und neuen Werte werden sofort verkettet. Die vierte Art der Einstellung
ein Parameter ist mit dem exportieren, globale , schreibgeschützt und setzen Befehle; sieh ihre
Beschreibungen in der Befehl Ausführung Sektion. Fünfte, für und wählen Schleifen setzen Parameter
sowie Getopte, lesen und kompensieren -A Befehle. Zuletzt können Parameter zugewiesen werden
Werte mit Zuweisungsoperatoren in arithmetischen Ausdrücken (siehe Arithmetik Ausdrücke
unten) oder mit ${Name=Wert} Form der Parameterersetzung (siehe unten).

Parameter mit dem Exportattribut (eingestellt mit dem exportieren or setzen -x Befehle, oder durch
Parametrierung gefolgt von einfachen Befehlen) werden in die Umgebung gestellt (siehe
Umwelt(7)) der von der Shell ausgeführten Befehle als Name=Wert Paare. Die Reihenfolge, in der Parameter
in der Umgebung eines Befehls erscheinen, ist nicht spezifiziert. Wenn die Shell startet, ist es
extrahiert Parameter und deren Werte aus seiner Umgebung und setzt automatisch den Export
Attribut für diese Parameter.

Modifikatoren können auf das ${ angewendet werden.Name} Form der Parameterersetzung:

${Name:-Wort}
If Name gesetzt und nicht NULL ist, wird es ersetzt; Andernfalls, Wort ersetzt wird.

${Name:+Wort}
If Name ist gesetzt und nicht NULL, Wort substituiert ist; andernfalls wird nichts ersetzt.

${Name:=Wort}
If Name gesetzt und nicht NULL ist, wird es ersetzt; andernfalls wird es zugewiesen Wort und
der resultierende Wert von Name ersetzt wird.

${Name:?Wort}
If Name gesetzt und nicht NULL ist, wird es ersetzt; Andernfalls, Wort ist auf gedruckt
Standardfehler (mit vorangestelltem Name:) und ein Fehler tritt auf (führt normalerweise zum Abbruch
eines Shell-Skripts, einer Shell-Funktion oder eines Skripts, das mit dem '.' eingebaut). Wenn Wort is
weggelassen, wird stattdessen die Zeichenfolge „parameter null or not set“ verwendet. Derzeit ein Fehler,
if Wort ist eine Variable, die zum Null-String erweitert wird, die Fehlermeldung lautet auch
gedruckt.

Beachten Sie, dass für alle oben genannten Wort wird tatsächlich als zitiert angesehen, und spezielles Parsen
Regeln gelten. Die Parsing-Regeln unterscheiden sich auch darin, ob der Ausdruck in doppelten Anführungszeichen steht: Wort
verwendet dann Regeln für doppelte Anführungszeichen, mit Ausnahme des doppelten Anführungszeichens selbst ('"') und des Schließens
geschweifte Klammer, die, wenn ein umgekehrter Schrägstrich maskiert ist, die Entfernung von Anführungszeichen angewendet wird.

In den obigen Modifikatoren kann das ':' weggelassen werden, in diesem Fall hängen die Bedingungen nur von
Name gesetzt werden (im Gegensatz zu set und nicht NULL). Wenn Wort wird benötigt, Parameter, Befehl,
Arithmetik und Tilde-Ersetzung werden darauf ausgeführt; wenn Wort wird nicht benötigt, ist es nicht
bewertet.

Die folgenden Formen der Parametersubstitution können auch verwendet werden (wenn Name ist ein Array, das
Element mit dem Schlüssel „0“ wird im skalaren Kontext ersetzt):

${#Name}
Die Anzahl der Positionsparameter if Name ist '*', '@' oder nicht angegeben; Andernfalls
die Länge (in Zeichen) des Stringwerts von Parameter Name.

${#Name[*]}
${#Name[@]}
Die Anzahl der Elemente im Array Name.

${%Name}
Die Breite (in Bildschirmspalten) des Zeichenfolgenwerts von Parameter Name, oder -1 wenn
${Name} enthält ein Steuerzeichen.

${!Name}
Der Name der Variablen, auf die sich bezieht Name. Das wird sein Name ausser wenn Name is
eine Namensreferenz (gebundene Variable), erstellt von der Namensnennung Befehl (das ist ein Alias
für setzen -n).

${!Name[*]}
${!Name[@]}
Die Namen der Indizes (Schlüssel) im Array Name.

${Name#Anleitungen}
${Name##Anleitungen}
If Anleitungen entspricht dem Anfang des Wertes von Parameter Name, der übereinstimmende Text ist
aus dem Substitutionsergebnis gelöscht. Ein einzelnes '#' ergibt die kürzeste
Match, und zwei davon ergeben das längste Match. Kann nicht auf einen Vektor angewendet werden
(${*} oder ${@} oder ${array[*]} oder ${array[@]}).

${Name%Anleitungen}
${Name%%Anleitungen}
Wie die Ersetzung ${..#..}, aber sie löscht am Ende des Werts. Kann nicht sein
auf einen Vektor angewendet.

${Name/Muster/String}
${Name/#Muster/String}
${Name/%Muster/String}
${Name//Muster/String}
Das längste Spiel von Anleitungen im Wert des Parameters Name wird ersetzt durch Schnur
(gelöscht, wenn Schnur ist leer; der abschließende Schrägstrich ('/') kann in diesem Fall weggelassen werden).
Ein führender Schrägstrich gefolgt von '#' oder '%' bewirkt, dass das Muster am verankert wird
Anfang bzw. Ende des Wertes; leer unverankert Anleitungens Ursache nein
Ersatz; ein einzelner führender Schrägstrich oder die Verwendung von a Anleitungen das passt zum leeren
string bewirkt, dass die Ersetzung nur einmal erfolgt; zwei führende Schrägstriche verursachen alles
Vorkommen von Übereinstimmungen im zu ersetzenden Wert. Kann nicht auf einen Vektor angewendet werden.
Ineffizient implementiert, kann langsam sein.

${Name:Post:len}
Der Erste len Zeichen von Name, beginnend bei Position Post, ersetzt werden. Beide
Post und:len sind optional. Wenn Post negativ ist, beginnt die Zählung am Ende des
Schnur; wenn es weggelassen wird, wird es standardmäßig auf 0 gesetzt. Wenn len weggelassen oder größer als die
Länge der verbleibenden Zeichenfolge, alles wird ersetzt. Beide Post und len sind
als arithmetische Ausdrücke ausgewertet. Zur Zeit, Post muss mit einem Leerzeichen beginnen,
öffnende Klammer oder Ziffer zu erkennen. Kann nicht auf einen Vektor angewendet werden.

${Name@#}
Der Hash (unter Verwendung des BAFH-Algorithmus) der Entwicklung von Name. Das wird auch verwendet
intern für die Hashtables der Shell.

${Name@Q}
Ein für die erneute Eingabe sicherer Ausdruck in Anführungszeichen, dessen Wert der Wert des ist Name
Parameter, ersetzt.

Beachten Sie, dass Anleitungen möglicherweise ein erweitertes Globbing-Muster (@(...)), einfach ('...') oder doppelt erforderlich
("...") Anführungszeichen, es sei denn -o sh wird gesetzt.

Die folgenden speziellen Parameter werden implizit von der Shell gesetzt und können nicht direkt gesetzt werden
Verwendung von Aufgaben:

! Prozess-ID des zuletzt gestarteten Hintergrundprozesses. Wenn keine Hintergrundprozesse haben
gestartet wurde, ist der Parameter nicht gesetzt.

# Die Anzahl der Positionsparameter ($1, $2 usw.).

$ Die PID der Shell oder die PID der ursprünglichen Shell, wenn es sich um eine Subshell handelt. Tun NICHT
Verwenden Sie diesen Mechanismus zum Generieren temporärer Dateinamen; sehen mktemp(1) statt.

- Die Verkettung der aktuellen Einzelbuchstabenoptionen (siehe kompensieren Befehl unten
für eine Liste der Optionen).

? Der Exit-Status des letzten ausgeführten nicht-asynchronen Befehls. Wenn der letzte Befehl
wurde durch ein Signal getötet, $? ist auf 128 plus Signalnummer, jedoch höchstens 255, eingestellt.

0 Der Name der Shell, bestimmt wie folgt: das erste Argument zu mksch wenn es war
aufgerufen mit dem -c Option und Argumente wurden angegeben; ansonsten der Datei Argument, wenn
es wurde geliefert; oder der Basisname, mit dem die Shell aufgerufen wurde (zB argv[0]). $0
wird auch auf den Namen des aktuellen Skripts oder den Namen der aktuellen Funktion gesetzt,
wenn es mit dem . definiert wurde Funktion Schlüsselwort (dh eine Funktion im Korn-Shell-Stil).

1 .. 9 Die ersten neun Positionsparameter, die an die Shell, Funktion oder . geliefert wurden
Skript, das mit dem '.' eingebaut. Weitere Positionsparameter können sein
Zugriff über ${Anzahl}.

* Alle Positionsparameter (außer 0), dh $1, $2, $3, ...
Wenn Parameter außerhalb von doppelten Anführungszeichen verwendet werden, sind dies separate Wörter (die
zur Worttrennung); Bei Verwendung in doppelten Anführungszeichen werden Parameter durch das getrennt
erstes Zeichen des IFS-Parameters (oder die leere Zeichenfolge, wenn IFS NULL ist).

@ Gleich wie $*, es sei denn, es wird in doppelten Anführungszeichen verwendet, in diesem Fall ist ein separates Wort
für jeden Positionsparameter generiert. Wenn keine Positionsparameter vorhanden sind, nein
Wort entsteht. $@ kann verwendet werden, um wortwörtlich auf Argumente zuzugreifen, ohne zu verlieren
NULL-Argumente oder Splitting-Argumente mit Leerzeichen.

Die folgenden Parameter werden von der Shell eingestellt und/oder verwendet:

_ (Unterstrich) Wenn ein externer Befehl von der Shell ausgeführt wird, wird dieser Parameter
wird in der Umgebung des neuen Prozesses auf den Pfad des ausgeführten
Befehl. Im interaktiven Einsatz wird dieser Parameter auch in der Eltern-Shell auf . gesetzt
das letzte Wort des vorherigen Befehls.

BASHPID Die PID der Shell oder Subshell.

CDPATH Wie PATH, wird jedoch verwendet, um das Argument in das aufzulösen cd eingebauter Befehl. Notiz
dass, wenn CDPATH gesetzt ist und kein '.' enthält. oder ein leeres String-Element, das
das aktuelle Verzeichnis wird nicht durchsucht. Auch der cd eingebauter Befehl wird angezeigt
das resultierende Verzeichnis, wenn eine Übereinstimmung in einem anderen Suchpfad als dem gefunden wird
leerer Weg.

COLUMNS Stellen Sie die Anzahl der Spalten auf dem Terminal oder Fenster ein. Immer eingestellt, Standardeinstellungen
bis 80, es sei denn, der Wert wird von stty(1) ist ungleich null und vernünftig genug
(Minimum ist 12x3); ähnlich für LINIEN. Dieser Parameter wird von der
interaktive Linienbearbeitungsmodi und durch die wählen, kompensieren -o und töten -l Befehle
um Informationsspalten zu formatieren. Importieren aus der Umgebung oder Entschärfen
dieser Parameter entfernt die Bindung an die tatsächliche Terminalgröße zugunsten des
bereitgestellten Wert.

ENV Wenn sich herausstellt, dass dieser Parameter nach der Ausführung von Profildateien gesetzt ist, wird die
Der erweiterte Wert wird als Shell-Startdatei verwendet. Es enthält normalerweise Funktion
und Alias-Definitionen.

ERRNO Ganzzahliger Wert der Shell Fehler Variable. Es zeigt den Grund an, der letzte
Systemaufruf fehlgeschlagen. Noch nicht implementiert.

EXECSHELL Wenn gesetzt, wird davon ausgegangen, dass dieser Parameter die Shell enthält, die verwendet werden soll
Befehle ausführen, die ausführen(2) nicht ausgeführt werden kann und nicht mit a . beginnt
„#!Schale" Reihenfolge.

FCEDIT Der Editor, der von der fc Befehl (siehe unten).

FPATH Wie PATH, wird jedoch verwendet, wenn eine undefinierte Funktion ausgeführt wird, um die Datei zu lokalisieren
die Funktion definieren. Es wird auch durchsucht, wenn ein Befehl mit nicht gefunden werden kann
WEG. Sehen Funktionen unten für weitere Informationen.

HISTFILE Der Name der Datei, die zum Speichern des Befehlsverlaufs verwendet wird. Wenn zugewiesen oder deaktiviert,
die Datei wird geöffnet, der Verlauf wird abgeschnitten und dann aus der Datei geladen; anschließend
neue Befehle (ggf. aus mehreren Zeilen bestehen) werden angehängt, sobald sie
erfolgreich kompiliert. Außerdem werden mehrere Aufrufe der Shell geteilt
history, wenn ihre HISTFILE-Parameter alle auf dieselbe Datei verweisen.

Note: Wenn HISTFILE nicht gesetzt oder leer ist, wird keine Verlaufsdatei verwendet. Das ist
anders als AT&T UNIX ksh.

HISTSIZE Die Anzahl der Befehle, die normalerweise für den Verlauf gespeichert werden. Der Standardwert ist 2047
Setzen Sie diesen Wert nicht auf wahnsinnig hohe Werte wie 1000000000, weil mksch kann
weist dann nicht genügend Speicher für die Historie zu und startet nicht.

HOME Das Standardverzeichnis für die cd Befehl und der Wert ersetzt an
unqualifiziert ~ (sehen Tilde Expansion unten).

IFS Interner Feldtrenner, der bei der Substitution und vom . verwendet wird lesen Befehl, zu
Werte in verschiedene Argumente aufteilen; normalerweise auf Leerzeichen, Tabulator und Zeilenumbruch gesetzt.
See Substitution oben für Details.

Note: Dieser Parameter wird nicht aus der Umgebung importiert, wenn die Shell
gestartet.

KSHEGID Die effektive Gruppen-ID der Shell.

KSHGID Die echte Gruppen-ID der Shell.

KSHUID Die echte Benutzer-ID der Shell.

KSH_VERSION Name und Version der Shell (schreibgeschützt). Siehe auch die Versionsbefehle
in Emacs Bearbeitung Modus und Vi Bearbeitung Modus Abschnitte, unten.

LINENO Die Zeilennummer der Funktion oder des Shell-Skripts, die gerade ausgeführt wird
hingerichtet.

LINES Stellen Sie die Anzahl der Zeilen auf dem Terminal oder Fenster ein. Immer eingestellt, standardmäßig auf
24. Siehe SPALTEN.

EPOCHREALZEIT
Zeit seit der Epoche, wie zurückgegeben von Gettimeofday(2), als Dezimalformat formatiert
tv_sec gefolgt von einem Punkt ('.') und tv_usec auf genau sechs Dezimalstellen aufgefüllt
Ziffern.

OLDPWD Das vorherige Arbeitsverzeichnis. Deaktivieren, wenn cd hat sich nicht erfolgreich geändert
Verzeichnisse seit dem Start der Shell, oder wenn die Shell nicht weiß, wo sie sich befindet.

OPTARG Bei Verwendung von Getopte, enthält es das Argument für eine geparste Option, wenn es
erfordert einen.

OPTIND Der Index des nächsten zu verarbeitenden Arguments bei Verwendung von Getopte. 1 . zuweisen
zu diesem Parameter verursacht Getopte Argumente von Anfang an verarbeiten
beim nächsten Aufruf.

PATH Eine durch einen Doppelpunkt (Semikolon auf OS/2) getrennte Liste von Verzeichnissen, die durchsucht werden
wenn Sie nach Befehlen und Dateien suchen, die mit dem '.' Befehl (siehe unten).
Eine leere Zeichenfolge, die sich aus einem führenden oder abschließenden Doppelpunkt ergibt, oder zwei benachbarte
Doppelpunkte, wird als '.' behandelt. (das aktuelle Verzeichnis).

PGRP Die Prozess-ID des Prozessgruppenleiters der Shell.

PIPESTATUS Ein Array mit den Fehlercodes (Ausgangsstatus) nacheinander der letzten
Rohrleitungsverlauf im Vordergrund.

PPID Die Prozess-ID des übergeordneten Shells.

PS1 Die primäre Eingabeaufforderung für interaktive Shells. Parameter, Befehl und Arithmetik
Ersetzungen werden ausgeführt und '!' wird durch den aktuellen Befehl ersetzt
Nummer (siehe fc Befehl unten). Ein wörtliches '!' kann in die Eingabeaufforderung eingefügt werden von
Platzieren von '!!' im PS1.

Die Standardeingabeaufforderung ist '$ ' für Nicht-Root-Benutzer, '#' für Root. Wenn mksch is
von root aufgerufen und PS1 enthält kein '#'-Zeichen, der Standardwert
wird verwendet, auch wenn PS1 bereits in der Umgebung vorhanden ist.

Das mksch Verteilung kommt mit einer Probe dot.mkshrc mit einem ausgeklügelten
Beispiel, aber Sie könnten das folgende mögen (beachten Sie, dass
${HOSTNAME:=$(hostname)} und die root-vs-user-Unterscheidungsklausel sind (in
dieses Beispiel) zur PS1-Zuweisungszeit ausgeführt, während $USER und $PWD
maskiert und wird daher jedes Mal ausgewertet, wenn eine Eingabeaufforderung angezeigt wird):

PS1='${USER:=$(id -un)}'"@${HOSTNAME:=$(Hostname)}:\$PWD $(
if (( USER_ID )); dann drucke \$; sonst drucke \#; f)"

Beachten Sie, dass die Befehlszeileneditoren versuchen herauszufinden, wie lange die Eingabeaufforderung
ist (damit sie wissen, wie weit es bis zum Bildschirmrand ist), Escape-Codes im
Prompt neigen dazu, die Dinge durcheinander zu bringen. Sie können der Muschel sagen, dass sie nicht sicher zählen soll
Sequenzen (wie Escape-Codes), indem Sie Ihrer Eingabeaufforderung ein Zeichen voranstellen
(z. B. Strg-A), gefolgt von einem Wagenrücklauf und dann die Begrenzung des Escape-Zeichens
Codes mit diesem Zeichen. Alle Vorkommen dieses Zeichens in der Eingabeaufforderung sind
nicht gedruckt. Übrigens, gib mir nicht die Schuld für diesen Hack; es ist abgeleitet von der
Original ksh88(1), die das Trennzeichen gedruckt hat, damit Sie keine Zeit haben
Glück, wenn Sie keine nicht druckbaren Zeichen haben.

Da Backslashes und andere Sonderzeichen von der Shell interpretiert werden können,
Um PS1 zu setzen, maskieren Sie entweder den Backslash selbst oder verwenden doppelte Anführungszeichen. Die
Letzteres ist praktischer. Dies ist ein komplexeres Beispiel, bei dem es vermieden wird, direkt
Sonderzeichen eingeben (zum Beispiel mit ^V im emacs-Bearbeitungsmodus), die
bettet das aktuelle Arbeitsverzeichnis in umgekehrter Reihenfolge ein (Farbe würde funktionieren,
auch), in der Eingabeaufforderungszeichenfolge:

x=$(drucke \\001)
PS1="$x$(print \\r)$x$(tset so)$x\$PWD$x$(tset se)$x> "

Aufgrund eines starken Vorschlags von David G. Korn, mksch unterstützt jetzt auch die
folgendes Formular:

PS1=$'\1\r\1\e[7m\1$PWD\1\e[0m\1> '

PS2 Sekundäre Eingabeaufforderungszeichenfolge, standardmäßig '> ', wird verwendet, wenn mehr Eingaben erforderlich sind, um
einen Befehl vervollständigen.

PS3-Eingabeaufforderung verwendet von der wählen Anweisung beim Lesen einer Menüauswahl. Der Standard
ist '#? '.

PS4 Wird verwendet, um Befehle voranzustellen, die während der Ausführungsverfolgung gedruckt werden (siehe kompensieren
-x Befehl unten). Parameter-, Befehls- und arithmetische Ersetzungen sind
durchgeführt, bevor es gedruckt wird. Der Standardwert ist '+'. Vielleicht möchten Sie es einstellen
zu '[$EPOCHREALTIME] ', um Zeitstempel einzuschließen.

PWD Das aktuelle Arbeitsverzeichnis. Kann nicht gesetzt oder NULL sein, wenn die Shell es nicht weiß
wo ist es.

RANDOM Jedes Mal, wenn auf RANDOM verwiesen wird, wird ihm eine Zahl zwischen 0 und 32767 . zugewiesen
aus einem linear kongruenten PRNG zuerst.

ANTWORTEN Standardparameter für die lesen Befehl, wenn keine Namen angegeben sind. Auch verwendet in
wählen Schleifen, um den Wert zu speichern, der von der Standardeingabe gelesen wird.

SECONDS Die Anzahl der Sekunden seit dem Start der Shell oder, wenn der Parameter
einen ganzzahligen Wert zugewiesen bekommen, die Anzahl der Sekunden seit der Zuweisung plus die
Wert, der zugewiesen wurde.

TMOUT Wenn es in einer interaktiven Shell auf eine positive ganze Zahl gesetzt ist, gibt es das Maximum an
Anzahl der Sekunden, die die Shell nach dem Drucken der Primärdatei auf Eingaben wartet
Aufforderung (PS1). Wird die Zeit überschritten, wird die Shell beendet.

TMPDIR Das Verzeichnis, in dem temporäre Shell-Dateien erstellt werden. Ist dieser Parameter nicht
gesetzt oder enthält nicht den absoluten Pfad eines beschreibbaren Verzeichnisses, temporär
Dateien werden erstellt in / Tmp.

USER_ID Die effektive Benutzer-ID der Shell.

Tilde Expansion
Die Tilde-Expansion, die parallel zur Parametersubstitution durchgeführt wird, wird auf Wörtern durchgeführt
beginnend mit einem nicht in Anführungszeichen gesetzten '~'. Die Zeichen nach der Tilde bis zum ersten '/', wenn
any, werden als Anmeldename angenommen. Wenn der Anmeldename leer ist, '+' oder '-', wird der Wert von
der Parameter HOME, PWD oder OLDPWD wird jeweils ersetzt. Ansonsten das Passwort
Datei wird nach dem Login-Namen durchsucht, und der Tilde-Ausdruck wird durch den des Benutzers ersetzt
Home-Verzeichnis. Wenn der Login-Name nicht in der Passwortdatei gefunden wird oder wenn Zitate oder
Die Parameterersetzung erfolgt im Login-Namen, es wird keine Ersetzung durchgeführt.

Bei Parameterzuweisungen (wie denen, die einem einfachen Befehl vorausgehen oder in der
Argumente von alias, exportieren, globale , schreibgeschützt und setzen), Tilde-Erweiterung erfolgt nach
jede Zuweisung (dh nach dem Gleichheitszeichen) oder nach einem nicht in Anführungszeichen gesetzten Doppelpunkt (':'); Login-Namen
werden ebenfalls durch Doppelpunkte abgegrenzt.

Das Home-Verzeichnis von zuvor erweiterten Login-Namen wird zwischengespeichert und wiederverwendet. Die alias -d
Befehl kann verwendet werden, um diesen Cache aufzulisten, zu ändern und zu ergänzen (zB alias -d
fac=/usr/local/facilities; cd ~fac/bin).

Klammer Expansion (Wechsel)
Klammerausdrücke haben die folgende Form:

Präfix{str1, ...,strN}Suffix

Die Ausdrücke werden erweitert zu N Wörter, von denen jedes die Verkettung von . ist Präfix, stri,
und Suffix (zB „a{c,b{X,Y},d}e“ wird zu vier Wörtern erweitert: „ace“, „abXe“, „abYe“ und „ade“).
Wie im Beispiel erwähnt, können Klammerausdrücke verschachtelt werden und die resultierenden Wörter sind nicht
sortiert. Klammerausdrücke müssen ein Komma (',') ohne Anführungszeichen enthalten, damit die Erweiterung erfolgen kann (z. B.
{} und {foo} werden nicht erweitert). Klammerexpansion wird nach Parametersubstitution durchgeführt
und vor der Dateinamengenerierung.

Reichen Sie das Name Muster
Ein Dateinamenmuster ist ein Wort, das ein oder mehrere nicht in Anführungszeichen gesetzte '?', '*', '+', '@' oder '!'
Zeichen oder „[..]“-Sequenzen. Nach erfolgter Strebenexpansion ersetzt die Schale
Dateinamenmuster mit den sortierten Namen aller Dateien, die dem Muster entsprechen (wenn nein
Dateien übereinstimmen, das Wort bleibt unverändert). Die Musterelemente haben folgende Bedeutung:

? Entspricht jedem einzelnen Zeichen.

* Entspricht einer beliebigen Oktettsequenz.

[..] Entspricht einem der Oktette innerhalb der Klammern. Oktettbereiche können angegeben werden durch
Trennen von zwei Oktetten durch ein '-' (zB "[a0-9]" entspricht dem Buchstaben 'a' oder einer beliebigen Ziffer).
Um sich selbst darzustellen, muss ein '-' entweder zitiert werden oder das erste oder letzte Oktett
in der Oktettliste. Ebenso muss ein ']' in Anführungszeichen gesetzt werden oder das erste Oktett in der Liste
wenn es sich selbst anstelle des Endes der Liste darstellen soll. Auch eine '!' erscheinen
am Anfang der Liste hat eine besondere Bedeutung (siehe unten), also um sich selbst darzustellen
müssen zitiert werden oder später in der Liste erscheinen.

[!..] Wie [..], außer dass es auf jedes Oktett außerhalb der Klammern passt.

*(Anleitungen|...|Anleitungen)
Entspricht einer beliebigen Zeichenfolge von Oktetts, die mit null oder mehr Vorkommen des angegebenen übereinstimmt
Muster. Beispiel: Das Muster *(fo|Bar) entspricht den Zeichenfolgen „“, „foo“, „bar“,
„foobarfoo“ usw.

+(Anleitungen|...|Anleitungen)
Entspricht einer beliebigen Zeichenfolge von Oktetts, die mit einem oder mehreren Vorkommen des angegebenen übereinstimmt
Muster. Beispiel: Das Muster +(fooo|Bar) entspricht den Zeichenfolgen „foo“, „bar“,
„Fußleiste“ usw.

?(Anleitungen|...|Anleitungen)
Entspricht der leeren Zeichenfolge oder einer Zeichenfolge, die einem der angegebenen Muster entspricht.
Beispiel: Das Muster ? (Foo|Bar) stimmt nur mit den Zeichenfolgen „“, „foo“ und „bar“ überein.

@(Anleitungen|...|Anleitungen)
Entspricht einer Zeichenfolge, die einem der angegebenen Muster entspricht. Beispiel: Das Muster
@(fo|Bar) stimmt nur mit den Strings „foo“ und „bar“ überein.

!(Anleitungen|...|Anleitungen)
Entspricht jeder Zeichenfolge, die keinem der angegebenen Muster entspricht. Beispiele: Die
Anleitungen !(fooo|Bar) stimmt mit allen Zeichenfolgen außer „foo“ und „bar“ überein; das Muster !(*)
stimmt mit keiner Zeichenkette überein; das Muster !(?)* stimmt mit allen Strings überein (denken Sie darüber nach).

Beachten Sie, dass kompliziertes Globbing, insbesondere bei Alternativen, langsam ist; mit separatem
Vergleiche können (oder auch nicht) schneller sein.

Beachten Sie, dass mksch (und zum Beispiel) stimmt nie mit '.' überein. und '..', aber AT&T UNIX ksh, Bourne sh, und GNU
bash zu tun.

Beachten Sie, dass keines der obigen Musterelemente mit einem Punkt ('.') am Anfang von a . übereinstimmt
Dateiname oder ein Schrägstrich ('/'), auch wenn sie explizit in einer [..]-Sequenz verwendet werden; auch der
Namen '.' und '..' werden nie abgeglichen, auch nicht durch das Muster '.*'.

Besitzt das markdir Option gesetzt ist, werden alle Verzeichnisse, die sich aus der Dateinamengenerierung ergeben,
mit einem nachgestellten '/' gekennzeichnet.

Eingabe / Ausgabe- Umleitung
Wenn ein Befehl ausgeführt wird, werden seine Standardeingabe, Standardausgabe und Standardfehler (Datei
Deskriptoren 0, 1 bzw. 2) werden normalerweise von der Shell geerbt. Drei
Ausnahmen hiervon sind Befehle in Pipelines, für die Standardeingabe und/oder Standard
Ausgabe sind diejenigen, die von der Pipeline eingerichtet werden, asynchrone Befehle, die erstellt werden, wenn die Jobsteuerung
deaktiviert, für die die Standardeingabe anfänglich auf von . eingestellt ist / dev / null, und Befehle für
für die eine der folgenden Weiterleitungen angegeben wurde:

>Datei Standardausgabe wird umgeleitet an Datei. Wenn Datei existiert nicht, es wird geschaffen;
Wenn es existiert, handelt es sich um eine reguläre Datei, und die noclobber Option ist gesetzt, ein Fehler
tritt ein; andernfalls wird die Datei abgeschnitten. Beachten Sie, dass dies den Befehl bedeutet cmd
<foo >foo wird Öffnen foo zum Lesen und kürzen Sie es dann, wenn es geöffnet wird für
schreiben, vorher cmd bekommt die Chance, wirklich zu lesen foo.

>|Datei Das gleiche wie >, außer dass die Datei abgeschnitten wird, auch wenn die noclobber Option ist gesetzt.

>>Datei Das gleiche wie >, außer wenn Datei existiert, wird es angehängt statt abgeschnitten.
Außerdem wird die Datei im Append-Modus geöffnet, so dass Schreibvorgänge immer an das Ende des
Datei (siehe XNUMXh geöffnet(2)).

<Datei Standardeingaben werden umgeleitet von Datei, die zum Lesen geöffnet wird.

<>Datei Das gleiche wie <, außer dass die Datei zum Lesen und Schreiben geöffnet wird.

<<Marker Nachdem Sie die Befehlszeile gelesen haben, die diese Art der Umleitung enthält (genannt a
„here document“), kopiert die Shell Zeilen aus der Befehlsquelle in a
temporäre Datei, bis eine Zeile übereinstimmt Marker ist gelesen. Wenn der Befehl lautet
ausgeführt, wird die Standardeingabe aus der temporären Datei umgeleitet. Wenn Marker
keine Anführungszeichen enthält, wird der Inhalt der temporären Datei verarbeitet
als ob es bei jeder Ausführung des Befehls in doppelte Anführungszeichen eingeschlossen wäre, also Parameter,
Befehl und arithmetische Ersetzungen werden zusammen mit Backslash ('\')
Escapes für '$', '`', '\' und '\newline', aber nicht für '"'. Falls hier mehrere
Dokumente werden in derselben Befehlszeile verwendet, sie werden der Reihe nach gespeichert.

Wenn nein Marker gegeben ist, endet das Here-Dokument am nächsten << und Ersatz
wird aufgeführt. Wenn Marker ist nur ein Satz von entweder einfach "''" oder doppelten """'
Anführungszeichen ohne dazwischen, das Here-Dokument endet in der nächsten leeren Zeile
und Ersatz wird nicht durchgeführt.

<<-Marker Das gleiche wie <<, außer dass führende Tabulatoren aus den Zeilen im Here-Dokument entfernt werden.

<<Wort Das gleiche wie <<, außer das Wort is das hier Dokument. Das nennt man hier
String.

<&fd Die Standardeingabe wird aus dem Dateideskriptor dupliziert fd. fd kann eine Zahl sein,
Angeben der Nummer eines existierenden Dateideskriptors; der Buchstabe 'p', der anzeigt
den Dateideskriptor, der der Ausgabe des aktuellen Co-Prozesses zugeordnet ist; oder der
Zeichen '-', das angibt, dass die Standardeingabe geschlossen werden soll. Beachten Sie, dass fd is
in den meisten Shell-Implementierungen auf eine einzelne Ziffer beschränkt.

>&fd Das gleiche wie <&, außer dass die Operation auf der Standardausgabe ausgeführt wird.

&>Datei Das gleiche wie >Datei 2> & 1. Dies ist ein veraltetes (altes) GNU bash Erweiterung unterstützt
by mksch die auch die vorangehende explizite fd-Nummer unterstützt, zum Beispiel,
3&>Datei ist die gleiche wie 3>Datei 2> & 3 in mksch aber ein Syntaxfehler in GNU bash.

&>|Datei, &>>Datei, &>&fd
Das gleiche wie >|Datei, >>Datei, oder >&fd, Gefolgt von 2> & 1, wie oben. Diese sind mksch
Erweiterungen.

Bei jeder der oben genannten Umleitungen wird der umgeleitete Dateideskriptor (dh Standard
Eingabe oder Standardausgabe) kann explizit angegeben werden, indem der Umleitung eine Zahl vorangestellt wird
(tragbar, nur eine einzige Ziffer). Parameter-, Befehls- und arithmetische Ersetzungen, Tilde
Ersetzungen und (wenn die Shell interaktiv ist) die Generierung von Dateinamen werden alle ausgeführt auf
Datei, Marker und fd Argumente für Umleitungen. Beachten Sie jedoch, dass die Ergebnisse jeder
Dateinamengenerierung wird nur verwendet, wenn eine einzelne Datei übereinstimmt; Wenn mehrere Dateien übereinstimmen, wird die
Wort mit den erweiterten Zeichen für die Dateinamengenerierung verwendet. Beachten Sie, dass in eingeschränktem
Shells können Umleitungen, die Dateien erstellen können, nicht verwendet werden.

Bei einfachen Befehlen können Umleitungen überall im Befehl erscheinen; für zusammengesetzte Befehle
(if Anweisungen usw.), müssen alle Umleitungen am Ende stehen. Weiterleitungen werden bearbeitet
Nachdem die Pipelines erstellt wurden und in der Reihenfolge, in der sie angegeben wurden, wird Folgendes ausgegeben:
Fehler mit vorangestellter Zeilennummer:

$ cat /foo/bar 2>&1 >/dev/null | pr -n -t

Durch E/A-Umleitungen erstellte Dateideskriptoren sind für die Shell privat.

Arithmetik Ausdrücke
Ganzzahlige arithmetische Ausdrücke können mit dem verwendet werden lassen Befehl, innerhalb von $((..)) Ausdrücken,
innerhalb von Array-Referenzen (zB Name[ausdr]), als numerische Argumente für die Test Befehl, und als
der Wert einer Zuweisung zu einem Integer-Parameter. Warnung: Dies betrifft auch implizite
Umwandlung in Integer, zum Beispiel durch die lassen Befehl. Nie ungeprüften Benutzer verwenden
Input, zB aus der Umgebung, in die Arithmetik!

Ausdrücke werden mit Vorzeichenarithmetik berechnet und die mksh_ari_t Typ (ein 32-Bit-Zeichen mit Vorzeichen)
integer), es sei denn, sie beginnen mit einem einzigen '#'-Zeichen, in diesem Fall verwenden sie mksh_uari_t (a
32-Bit-Ganzzahl ohne Vorzeichen).

Ausdrücke können alphanumerische Parameterbezeichner, Arrayreferenzen und ganze Zahlen enthalten
Konstanten und können mit den folgenden C-Operatoren kombiniert werden (aufgelistet und gruppiert in
aufsteigende Rangfolge):

Unäre Operatoren:

+ - ! ~ ++ --

Binäroperatoren:

,
= += -= *= /= %= <<<= >>>= <<= >>= &= ^= |=
||
&&
|
^
&
==! =
<< = >>> =
<<< >>> << >>
+ -
* /%

Ternäre Operatoren:

?: (Vorrang ist unmittelbar höher als Zuweisung)

Gruppierungsoperatoren:

()

Integer-Konstanten und -Ausdrücke werden mit einem genau 32 Bit breiten, vorzeichenbehafteten oder berechnet
unsigned, geben Sie bei Integer-Überlauf mit stillem Umbruch ein. Ganzzahlige Konstanten können sein
angegeben mit beliebigen Basen unter Verwendung der Notation Base#Anzahl, Wobei Base ist eine Dezimalstelle
ganze Zahl, die die Basis angibt, und Anzahl ist eine Zahl in der angegebenen Basis. Zusätzlich,
Basis-16-Ganzzahlen können angegeben werden, indem ihnen in allen ein '0x' vorangestellt wird (Groß-/Kleinschreibung wird nicht beachtet)
Formen arithmetischer Ausdrücke, außer als numerische Argumente für die Test eingebauter Befehl.
Das Voranstellen von Zahlen mit einer einzigen Ziffer Null ('0') führt nicht zu einer Interpretation als Oktal, da
das ist unsicher.

Als besonderes mksch Erweiterung werden Zahlen zur Basis von Eins als entweder (8-Bit
transparent) ASCII- oder Unicode-Codepoints, je nach Shell utf8-Modus Flagge (aktuell
Einstellung). Das AT&T-UNIX ksh93 Syntax von „'x'“ anstelle von „1#x“ wird ebenfalls unterstützt. Notiz
dass NUL-Bytes (Integralwert von Null) nicht verwendet werden können. Ein nicht gesetzter oder leerer Parameter
wird im Integer-Kontext zu 0 ausgewertet. Im Unicode-Modus werden rohe Oktette in den Bereich abgebildet
EF80..EFFF wie in OPTU-8, das sich in der PUA befindet und von CSUR für diese Verwendung zugewiesen wurde. Wenn
mehr als ein Oktett im ASCII-Modus oder eine Folge von mehr als einem Oktett bildet kein gültiges
und minimale CESU-8-Sequenz übergeben wird, ist das Verhalten undefiniert (normalerweise bricht die Shell ab
mit einem Parse-Fehler, aber selten gelingt es, zB auf der Sequenz C2 20). Deshalb bist du
sollte immer den ASCII-Modus verwenden, es sei denn, Sie wissen, dass die Eingabe in UTF-8 wohlgeformt ist
Bereich von 0000..FFFD, wenn Sie diese Funktion verwenden, im Gegensatz zu lesen -a.

Die Operatoren werden wie folgt bewertet:

einfarbig +
Ergebnis ist das Argument (der Vollständigkeit halber enthalten).

einstellig -
Negation.

! Logisches NICHT; das Ergebnis ist 1, wenn das Argument null ist, 0, wenn nicht.

~ Arithmetik (bitweise) NICHT.

++ Erhöhung; muss auf einen Parameter (kein Literal oder einen anderen Ausdruck) angewendet werden.
Der Parameter wird um 1 erhöht. Bei Verwendung als Präfixoperator ist das Ergebnis
ist der inkrementierte Wert des Parameters; bei Verwendung als Postfix-Operator,
Das Ergebnis ist der ursprüngliche Wert des Parameters.

-- Ähnlich zu ++, außer dass der Parameter um 1 dekrementiert wird.

, Trennt zwei arithmetische Ausdrücke; die linke Seite wird zuerst ausgewertet,
dann rechts. Das Ergebnis ist der Wert des Ausdrucks auf der rechten Seite
Seite.

= Zuordnung; die linke Variable wird auf den rechten Wert gesetzt.

+= -= *= /= %= <<<= >>>= <<= >>= &= ^= |=
Zuweisungsoperatoren.jung><op>=ausdr> ist das gleiche wiejung>=jung><op><ausdr>,
mit beliebiger Operator-Priorität inausdr> bewahrt. Beispiel: „var1 *= 5 +
3“ entspricht der Angabe von „var1 = var1 * (5 + 3)“.

|| Logisches ODER; das Ergebnis ist 1, wenn eines der Argumente nicht Null ist, wenn nicht 0. Die
rechtes Argument wird nur ausgewertet, wenn das linke Argument null ist.

&& Logisches UND; das Ergebnis ist 1, wenn beide Argumente ungleich Null sind, 0, wenn nicht. Die
rechtes Argument wird nur ausgewertet, wenn das linke Argument ungleich Null ist.

| Arithmetik (bitweise) ODER.

^ Arithmetische (bitweise) XOR (Exklusiv-ODER).

& Arithmetik (bitweise) UND.

== gleich; das Ergebnis ist 1, wenn beide Argumente gleich sind, wenn nicht 0.

!= Ungleich; das Ergebnis ist 0, wenn beide Argumente gleich sind, 1, wenn nicht.

< Weniger als; das Ergebnis ist 1, wenn das linke Argument kleiner als das rechte ist, 0, wenn
nicht.

<= > >=
Kleiner oder gleich, größer als, größer oder gleich. Sehen <.

<<< >>>
Nach links drehen (rechts); das Ergebnis ist ähnlich wie bei shift (siehe <<) außer dass die
an einem Ende herausgeschobene Bits werden am anderen Ende eingeschoben, statt Null
oder Vorzeichenbits.

<< >> Nach links (rechts) verschieben; das Ergebnis ist das linke Argument mit seinen nach links verschobenen Bits
(rechts) um den im richtigen Argument angegebenen Betrag.

+ - * /
Addition, Subtraktion, Multiplikation und Division.

% Rest; das Ergebnis ist der symmetrische Rest der Division der linken
Argument von rechts. Um den mathematischen Modul von „a mod b“, verwenden Sie die
Formel „(a % b + b) % b“.

<Arg1>?Arg2>:Arg3>
WennArg1> ungleich Null ist, ist das ErgebnisArg2>; ansonsten ist das ergebnisArg3>.
Das Nicht-Ergebnis-Argument wird nicht ausgewertet.

Co-Prozesse
Ein Co-Prozess (bei dem es sich um eine Pipeline handelt, die mit dem Operator '|&' erstellt wurde) ist ein asynchroner Prozess
in die die Shell sowohl schreiben kann (mit drucken -p) und auslesen (mit lesen -p). Die Eingabe
und Ausgabe des Co-Prozesses können auch mit . manipuliert werden >&p und <&p Umleitungen,
bzw. Nachdem ein Co-Prozess gestartet wurde, kann ein weiterer nicht gestartet werden, bis die Co-
Prozess beendet, oder bis die Eingabe des Co-Prozesses mit einem umgeleitet wurde exec n>&p
Umleitung. Wenn die Eingabe eines Co-Prozesses auf diese Weise umgeleitet wird, wird der nächste Co-Prozess
gestartet wird die Ausgabe mit dem ersten Co-Prozess teilen, es sei denn, die Ausgabe des initialen
Co-Prozess wurde mit einem umgeleitet exec n<&p Umleitung.

Einige Hinweise zu Co-Prozessen:

· Die einzige Möglichkeit, die Eingabe des Co-Prozesses zu schließen (damit der Co-Prozess ein Dateiende liest), ist
um die Eingabe an einen nummerierten Dateideskriptor umzuleiten und dann diesen Dateideskriptor zu schließen:
exec 3>&p; exec 3>&-

· Damit Co-Prozesse eine gemeinsame Ausgabe haben, muss die Shell das Schreiben behalten
Teil des Ausgangsrohrs offen. Das bedeutet, dass das Dateiende erst erkannt wird, wenn
alle Co-Prozesse, die sich die Ausgabe des Co-Prozesses teilen, sind beendet (wenn sie alle beenden, wird die
Shell schließt seine Kopie der Pipe). Dies kann vermieden werden, indem die Ausgabe an a . umgeleitet wird
nummerierter Dateideskriptor (da dies auch dazu führt, dass die Shell ihre Kopie schließt). Beachten Sie, dass
Dieses Verhalten unterscheidet sich geringfügig von der ursprünglichen Korn-Shell, die ihre Kopie schließt
des Schreibanteils der Co-Prozessausgabe, wenn der zuletzt gestartete Co-Prozess
(anstatt wenn alle gemeinsamen Co-Prozesse) beendet wird.

· drucken -p ignoriert SIGPIPE-Signale während des Schreibens, wenn das Signal nicht abgefangen wird oder
ignoriert; Das gleiche gilt, wenn die Co-Process-Eingabe in eine andere Datei dupliziert wurde
Deskriptor und drucken -un wird eingesetzt.

Funktionen
Funktionen werden entweder mit der Korn-Shell Funktion Funktionsname Syntax oder die
Bourne/POSIX-Shell Funktionsname() Syntax (siehe unten für den Unterschied zwischen den beiden
Formen). Funktionen sind in dieser Hinsicht wie .‐Skripte (dh Skripte, die mithilfe der '.'-Integration bezogen wurden)
sie werden in der aktuellen Umgebung ausgeführt. Im Gegensatz zu .‐Skripten, Shellargumenten
(dh Positionsparameter $1, $2 usw.) sind darin nie sichtbar. Wenn die Schale ist
Bestimmen der Position eines Befehls, Funktionen werden nach speziellen eingebauten . gesucht
Befehle, bevor Builtins und der PATH durchsucht werden.

Eine bestehende Funktion kann mit . gelöscht werden ungesetzt -f Funktionsname. Eine Liste von Funktionen kann
erhalten werden mit setzen +f und die Funktionsdefinitionen können aufgelistet werden mit setzen -f.
Das Autoload Befehl (das ist ein Alias ​​für setzen -fu) kann verwendet werden, um undefined . zu erstellen
Funktionen: Wenn eine undefinierte Funktion ausgeführt wird, sucht die Shell den in angegebenen Pfad
der FPATH-Parameter für eine Datei mit demselben Namen wie die Funktion, die, falls gefunden, gelesen wird
und ausgeführt. Wenn nach dem Ausführen der Datei festgestellt wird, dass die genannte Funktion definiert ist, wird die
Funktion wird ausgeführt; andernfalls wird die normale Befehlssuche fortgesetzt (dh die Shell
durchsucht die reguläre eingebaute Befehlstabelle und PATH). Beachten Sie, dass, wenn ein Befehl nicht gefunden wird
Mit PATH wird versucht, eine Funktion mit FPATH automatisch zu laden (dies ist eine undokumentierte
Funktion der ursprünglichen Korn-Shell).

Funktionen können zwei Attribute haben, „trace“ und „export“, die mit eingestellt werden können setzen -ft
und setzen -fx, bzw. Wenn eine verfolgte Funktion ausgeführt wird, wird die Shell Xtrace
Option ist für die Dauer der Funktion eingeschaltet. Das „Export“-Attribut von Funktionen ist
derzeit nicht verwendet. In der ursprünglichen Korn-Shell sind exportierte Funktionen für die Shell sichtbar
Skripte, die ausgeführt werden.

Da Funktionen in der aktuellen Shell-Umgebung ausgeführt werden, werden Parameterzuweisungen vorgenommen
Inside-Funktionen sind sichtbar, nachdem die Funktion abgeschlossen ist. Wenn dies nicht gewünscht ist
Wirkung, die setzen Der Befehl kann innerhalb einer Funktion verwendet werden, um einen lokalen Parameter zu erstellen. Notiz
dass AT&T UNIX ksh93 verwendet statischen Bereich (ein globaler Bereich, ein lokaler Bereich pro Funktion)
und erlaubt lokale Variablen nur für Funktionen im Korn-Stil, während mksch verwendet dynamisches Scoping
(verschachtelte Bereiche unterschiedlicher Lokalität). Beachten Sie, dass spezielle Parameter (zB $$, $!) kann nicht sein
auf diese Weise eingegrenzt.

Der Exit-Status einer Funktion ist der des letzten in der Funktion ausgeführten Befehls. EIN
Funktion kann mit der Taste sofort beendet werden Rückkehr Befehl; das darf auch verwendet werden
um den Exit-Status explizit anzugeben.

Mit dem . definierte Funktionen Funktion reservierte Wörter werden im Folgenden anders behandelt
Wege von Funktionen definiert mit dem () Notation:

· Der Parameter $0 wird auf den Namen der Funktion gesetzt (Funktionen im Bourne-Stil verlassen $0
unberührt).

· Parameterzuweisungen vor Funktionsaufrufen werden nicht in der Shell-Umgebung gehalten
(Bei der Ausführung von Funktionen im Bourne-Stil bleiben die Zuweisungen erhalten).

· OPTIND wird beim Betreten und Verlassen der Funktion gespeichert/zurückgesetzt und wiederhergestellt, so Getopte kann sein
sowohl innerhalb als auch außerhalb der Funktion richtig verwendet werden (Funktionen im Bourne-Stil verlassen OPTIND
unberührt, also mit Getopte innerhalb einer Funktion stört die Verwendung Getopte außerhalb
Funktion).

· Shell-Optionen (kompensieren -o) haben einen lokalen Geltungsbereich, dh Änderungen innerhalb einer Funktion werden zurückgesetzt, wenn
seinen Ausgang.

Zukünftig können noch folgende Unterschiede hinzukommen:

· Während der Ausführung von Funktionen wird eine separate Trap-/Signalumgebung verwendet. Dies
bedeutet, dass Traps, die innerhalb einer Funktion gesetzt werden, die Traps und Signale der Shell nicht beeinflussen
die in der Shell nicht ignoriert werden (aber möglicherweise gefangen werden) haben ihren Standardeffekt in
eine Funktion.

· Der EXIT-Trap wird, wenn er in einer Funktion gesetzt ist, nach der Rückkehr der Funktion ausgeführt.

Befehl Ausführung
Nach der Auswertung von Befehlszeilenargumenten, Umleitungen und Parameterzuweisungen wird der
Art des Befehls wird bestimmt: ein spezieller eingebauter Befehl, eine Funktion, ein normaler eingebauter oder
der Name einer auszuführenden Datei, die mit dem Parameter PATH gefunden wurde. Die Kontrollen erfolgen im
obige Bestellung. Spezielle eingebaute Befehle unterscheiden sich von anderen Befehlen dadurch, dass die PATH
Parameter nicht verwendet wird, um sie zu finden, kann ein Fehler während ihrer Ausführung zu einem
interaktive Shell zum Beenden und Parameterzuweisungen, die vor dem Befehl angegeben werden
werden nach Abschluss des Befehls beibehalten. Reguläre eingebaute Befehle unterscheiden sich nur darin
der Parameter PATH wird nicht verwendet, um sie zu finden.

Das Original ksh und POSIX unterscheiden sich etwas darin, welche Befehle als speziell angesehen werden oder
regelmäßig.

Spezielle integrierte POSIX-Dienstprogramme:

., :, brechen, fortsetzen, eval, exec, wunsch, exportieren, schreibgeschützt, Rückkehr, kompensieren, verschieben, mal, Falle,
ungesetzt

Zusätzliche mksch Befehle zum Halten von Zuweisungen:

builtin, globale , Quelle, setzen, warten

Builtins, die nicht speziell sind:

[, alias, bg, binden, Katze, cd, Befehl, Echo, falsch, fc, fg, Getopte, Jobs & Karriere, töten, lassen, drucken,
pwd, lesen, realpath, umbenennen, schlafen, aussetzen, Test, was immer dies auch sein sollte., unlimit, umask, Unalias, woher

Nachdem der Befehlstyp bestimmt wurde, sind alle Befehlszeilenparameterzuweisungen
ausgeführt und für die Dauer des Befehls exportiert.

Im Folgenden werden die speziellen und regulären eingebauten Befehle und die eingebauten reservierten Befehle beschrieben
Wörter:

. Datei [arg ...]
Dies wird als „Punkt“-Befehl bezeichnet. Führen Sie die Befehle in aus Datei in der Strömung
Umgebung. Die Datei wird in den Verzeichnissen von PATH gesucht. Wenn Argumente sind
gegeben, können die Positionsparameter verwendet werden, um darauf zuzugreifen, während Datei ist das Sein
hingerichtet. Wenn keine Argumente angegeben werden, sind die Positionsparameter die der
Umgebung, in der der Befehl verwendet wird.

: [...]
Der null-Befehl. Der Exit-Status wird auf Null gesetzt.

[ Ausdruck ]
See Test.

alias [-d | -t [-r] | +-x] [-p] [+] [Name [=Wert] ...]
Ohne Argumente, alias listet alle Aliasnamen auf. Für jeden Namen ohne Wert wird der
vorhandener Alias ​​wird aufgelistet. Jeder Name mit einem Wert definiert einen Alias ​​(siehe Aliases
über).

Beim Auflisten von Aliasen wird eines von zwei Formaten verwendet. Normalerweise werden Aliasse aufgelistet als
Name=Wert, Wobei Wert zitiert wird. Wenn den Optionen ein '+' vorangestellt wurde, oder ein einzelnes '+'
wird nur auf der Kommandozeile angegeben Name gedruckt ist.

Das -d Option bewirkt, dass Verzeichnis-Aliasnamen aufgelistet werden, die in der Tilde-Erweiterung verwendet werden
oder einstellen (siehe Tilde Expansion über).

Besitzt das -p verwendet wird, wird jedem Alias ​​die Zeichenfolge „alias“ vorangestellt.

Das -t Option gibt an, dass nachverfolgte Aliase aufgelistet/gesetzt werden sollen (Werte angegeben
in der Befehlszeile werden bei verfolgten Aliasen ignoriert). Der -r Option zeigt an, dass
alle verfolgten Aliasnamen sollen zurückgesetzt werden.

Das -x Optionssätze (+x löscht) das Exportattribut eines Alias, oder, wenn keine Namen vorhanden sind
angegeben, listet die Aliase mit dem Exportattribut auf (das Exportieren eines Alias ​​hat keine
bewirken).

bg [Job ...]
Setzen Sie den/die angegebenen gestoppten Job(s) im Hintergrund fort. Wenn keine Jobs angegeben sind, %+
wird angenommen. Sehen Job Smartgeräte App unten für weitere Informationen.

binden [-l]
Die aktuellen Bindungen werden aufgelistet. Wenn die -l Flagge ist gegeben, binden listet stattdessen die auf
Namen der Funktionen, an die Tasten gebunden werden können. Sehen Emacs Bearbeitung Modus Für weitere
Informationen.

binden [-m] Schnur=[Ersatz] ...
binden Schnur=[Editier-Befehl] ...
Der angegebene Editierbefehl ist an das angegebene . gebunden Schnur, die aus a . bestehen sollte
Steuerzeichen optional vorangestellt mit einem der beiden Präfixzeichen und
optional gefolgt von einer Tilde. Zukünftige Eingabe der Schnur wird das dazu führen,
Editierbefehl, der sofort aufgerufen wird. Wenn die -m Flag ist gegeben, das angegebene
Eingabe Schnur wird danach sofort durch die gegebene ersetzt Ersatz Schnur
die Bearbeitungsbefehle enthalten kann, aber keine anderen Makros. Wenn ein Tilde-Postfix ist
gegeben, eine Tilde nach den ein oder zwei Präfizien und das Steuerzeichen wird ignoriert,
jedes andere nachgestellte Zeichen wird anschließend verarbeitet.

Steuerzeichen können in Caret-Notation geschrieben werden, dh ^X steht für Strg-X.
Beachten Sie, dass zwar nur zwei Präfixzeichen (normalerweise ESC und ^X) unterstützt werden,
einige Sequenzen mit mehreren Zeichen können unterstützt werden.

Die folgenden Standardbindungen zeigen, wie die Pfeiltasten, die Home-, End- und Delete-Taste
auf einem BSD wsvt25, xterm-xfree86 oder GNU Screen Terminal gebunden sind (natürlich einige
Escape-Sequenzen werden nicht ganz so gut funktionieren):

bind '^X'=Präfix-2
binden '^[['=Präfix-2
bind '^XA'=Up-Historie
bind '^XB'=Down-History
bind '^XC'=forward-char
bind '^XD'=backward-char
bind '^X1~'=Zeilenanfang
bind '^X7~'=Zeilenanfang
bind '^XH'=Zeilenanfang
bind '^X4~'=Zeilenende
bind '^X8~'=Zeilenende
bind '^XF'=Zeilenende
bind '^X3~'=delete-char-forward

brechen [Grad des ]
Verlasse die Grad des innerstes für, wählen, bis, oder während Schleife. Grad des standardmäßig auf 1.

builtin [--] Befehl [arg ...]
Führen Sie den integrierten Befehl aus Befehl.

Katze [-u] [Datei ...]
Lesen Sie Dateien sequentiell in Befehlszeilenreihenfolge und schreiben Sie sie in die Standardausgabe.
Sollten Sie jetzt aufgefordert werden, ein Datei ist ein einzelner Bindestrich ('-') oder fehlt, gelesen von der Standardeingabe. Für direktes
eingebaute Aufrufe, die POSIX -u Option wird als No-Op unterstützt. Für Aufrufe von der Shell, wenn
alle Optionen sind gegeben, ein externes Katze(1) Utility wird dem Builtin vorgezogen.

cd [-L] [dir]
cd -P [-e] [dir]
chdir [-eLP] [dir]
Setzen Sie das Arbeitsverzeichnis auf dir. Wenn der Parameter CDPATH gesetzt ist, listet er die
Suchpfad für das Verzeichnis, das . enthält dir. Ein NULL-Pfad bedeutet den aktuellen
Verzeichnis. Wenn dir in einer anderen Komponente des CDPATH-Suchpfads gefunden wird als der
NULL-Pfad, der Name des neuen Arbeitsverzeichnisses wird in die Standardausgabe geschrieben.
If dir fehlt, wird das Home-Verzeichnis HOME verwendet. Wenn dir ist '-', der vorherige
Arbeitsverzeichnis verwendet wird (siehe Parameter OLDPWD).

Besitzt das -L Option (logischer Pfad) verwendet wird oder wenn die physikalisch Option ist nicht gesetzt (siehe
kompensieren Befehl unten), Verweise auf '..' in dir sind relativ zum Pfad, der verwendet wird, um zu gelangen
das Verzeichnis. Wenn die -P Option (physischer Pfad) verwendet wird oder wenn die physikalisch Option ist
set, '..' ist relativ zum Verzeichnisbaum des Dateisystems. Die PWD und OLDPWD
Parameter werden aktualisiert, um das aktuelle und alte Arbeitsverzeichnis widerzuspiegeln,
bzw. Wenn die -e Option für das Durchqueren des physischen Dateisystems gesetzt ist und PWD
konnte nicht gesetzt werden, der Exit-Code ist 1; größer als 1, wenn ein Fehler aufgetreten ist, 0
Andernfalls.

cd [-eLP] alt neu
chdir [-eLP] alt neu
Die Zeichenfolge neu ersetzt alt im aktuellen Verzeichnis und die Shell
versucht, in das neue Verzeichnis zu wechseln.

Befehl [-pVv] cmd [arg ...]
Wenn weder die -v noch -V Option ist gegeben, cmd wird genau so ausgeführt, als ob Befehl hätten
nicht angegeben, mit zwei Ausnahmen: erstens, cmd kann keine Shell-Funktion sein; und
zweitens verlieren spezielle eingebaute Befehle ihre Besonderheit (dh Umleitung und
Utility-Fehler führen nicht zum Beenden der Shell und Befehlszuweisungen nicht
dauerhaft).

Besitzt das -p Option angegeben, wird anstelle des aktuellen Werts ein Standardsuchpfad verwendet
von PATH, dessen tatsächlicher Wert systemabhängig ist.

Besitzt das -v Option ist gegeben, anstatt auszuführen cmd, Informationen darüber, was wäre
ausgeführt wird (und dasselbe wird für arg ...). Für Einbauten, Funktionen und
Schlüsselwörter, ihre Namen werden einfach gedruckt; für Aliase ist ein Befehl, der sie definiert,
gedruckt; für Dienstprogramme, die durch die Suche nach dem Parameter PATH gefunden wurden, den vollständigen Pfad der
Befehl wird gedruckt. Wenn kein Befehl gefunden wird (dh die Pfadsuche schlägt fehl), ist nichts
gedruckt und Befehl wird mit einem Status ungleich Null beendet. Der -V Option ist wie die -v
Option, außer dass es ausführlicher ist.

fortsetzen [Grad des ]
Springt an den Anfang des Grad des innerstes für, wählen, bis, oder während Schleife.
Grad des standardmäßig auf 1.

Echo [-EIN] [arg ...]
Warnung: dieses Dienstprogramm ist nicht portabel; Verwenden Sie die eingebaute Korn-Shell drucken stattdessen.

Gibt seine Argumente (durch Leerzeichen getrennt) gefolgt von einem Zeilenumbruch aus, gemäß dem Standard
Ausgang. Der Zeilenumbruch wird unterdrückt, wenn eines der Argumente den umgekehrten Schrägstrich enthält
Folge '\c'. Siehe die drucken Befehl unten für eine Liste anderer Backslash-Sequenzen
die anerkannt werden.

Die Optionen werden aus Gründen der Kompatibilität mit BSD-Shell-Skripten bereitgestellt. Der -n zu erhalten
unterdrückt den abschließenden Zeilenumbruch, -e ermöglicht eine umgekehrte Schrägstrich-Interpretation (ein No-Op, da
dies wird normalerweise gemacht) und -E unterdrückt die umgekehrte Schrägstrich-Interpretation.

Besitzt das POSIX or sh Option gesetzt ist oder dies ein direkter eingebauter Aufruf ist, nur der erste
Argument wird als Option behandelt, und nur wenn es genau „-n“. Backslash
Interpretation ist deaktiviert.

eval Befehl ...
Die Argumente werden verkettet (mit Leerzeichen dazwischen), um eine einzelne Zeichenfolge zu bilden
die die Shell dann analysiert und in der aktuellen Umgebung ausführt.

exec [-a argv0] [-c] [Befehl [arg ...]]
Der Befehl wird ohne Forking ausgeführt und ersetzt den Shell-Prozess. Das ist
derzeit absolut, dh exec kehrt nie zurück, auch wenn die Befehl wurde nicht gefunden. Die
-a Option ermöglicht das Einstellen eines anderen argv[0]-Werts, und -c reinigt die Umwelt
bevor der untergeordnete Prozess ausgeführt wird, mit Ausnahme der Variablen _ und der direkten Zuweisungen.

Wenn außer der E/A-Umleitung kein Befehl gegeben wird, ist die E/A-Umleitung permanent
und die Schale wird nicht ersetzt. Alle Dateideskriptoren größer als 2, die geöffnet werden
or dup(2) werden auf diese Weise anderen ausgeführten Befehlen nicht zur Verfügung gestellt (dh
Befehle, die nicht in die Shell integriert sind). Beachten Sie, dass sich die Bourne-Shell unterscheidet
Hier; es gibt diese Dateideskriptoren weiter.

wunsch [Status]
Die Shell wird mit dem angegebenen Exit-Status beendet. Wenn Status ist nicht angegeben, der Ausgang
status ist der aktuelle Wert des $? Parameters.

exportieren [-p] [Parameter[=Wert]]
Setzt das Exportattribut der benannten Parameter. Exportierte Parameter werden übergeben
die Umgebung auf ausgeführte Befehle. Wenn Werte angegeben werden, werden die benannten Parameter
werden ebenfalls vergeben.

Wenn keine Parameter angegeben werden, sind alle Parameter mit dem Exportattributsatz
gedruckt eine pro Zeile; entweder ihre Namen oder, wenn ein '-' ohne Optionsbuchstaben ist
angegeben, Name=Wert-Paare, oder mit -p, exportieren Befehle, die für die Wiedereingabe geeignet sind.

falsch Ein Befehl, der mit einem Status ungleich Null beendet wird.

fc [-e Herausgeber | -l [-n]] [-r] [zuerst [letzte]]
zuerst und letzte Befehle aus dem Verlauf auswählen. Befehle können nach Verlauf ausgewählt werden
Zahl (negative Zahlen gehen von der aktuellen, neuesten Zeile rückwärts) oder a
Zeichenfolge, die den neuesten Befehl angibt, der mit dieser Zeichenfolge beginnt. Der -l zu erhalten
listet den Befehl auf der Standardausgabe auf, und -n sperrt die Standardbefehlsnummern.
Das -r Option kehrt die Reihenfolge der Liste um. Ohne -l, die ausgewählten Befehle sind
bearbeitet von dem mit dem angegebenen Herausgeber -e Option, oder wenn nein -e angegeben ist, die
Editor, der durch den Parameter FCEDIT angegeben wird (wenn dieser Parameter nicht gesetzt ist, /bin/ed is
verwendet) und dann von der Shell ausgeführt.

fc -e - | -s [-g] [alt=neu] [Präfix]
Führen Sie den ausgewählten Befehl (standardmäßig den vorherigen Befehl) erneut aus, nachdem Sie ihn ausgeführt haben
die optionale Ersetzung von alt mit neu. Wenn -g angegeben ist, werden alle Vorkommen von
alt werden ersetzt durch neu. Die Bedeutung von -e - und -s ist identisch: Führen Sie die erneut aus
ausgewählten Befehl, ohne einen Editor aufzurufen. Auf diesen Befehl wird normalerweise mit zugegriffen
das Vordefinierte: alias r='fc -e -'

fg [Job ...]
Setzen Sie den/die angegebenen Job(s) im Vordergrund fort. Wenn keine Jobs angegeben sind, %+ is
vermutet. Sehen Job Smartgeräte App unten für weitere Informationen.

Getopte optstring Name [arg ...]
Wird von Shell-Prozeduren verwendet, um die angegebenen Argumente (oder Positionsparameter,
wenn keine Argumente angegeben werden) und nach rechtlichen Möglichkeiten zu suchen. optstring enthält das
Optionsbuchstaben, die Getopte ist zu erkennen. Wenn auf einen Buchstaben ein Doppelpunkt folgt, wird der
Option wird erwartet, ein Argument zu haben. Optionen, die keine Argumente akzeptieren, können sein:
in einem einzigen Argument zusammengefasst. Wenn eine Option ein Argument braucht und die Option
Zeichen ist nicht das letzte Zeichen des Arguments, in dem es gefunden wird, der Rest von
das Argument wird als Argument der Option angesehen; andernfalls ist das nächste Argument
das Argument der Option.

Jedes Mal Getopte aufgerufen wird, platziert es die nächste Option im Shell-Parameter Name
und der Index des Arguments, das beim nächsten Aufruf von verarbeitet werden soll Getopte der
Shell-Parameter OPTIND. Wenn die Option mit einem '+' eingeleitet wurde, wurde die Option platziert
in Name ist ein '+' vorangestellt. Wenn eine Option ein Argument erfordert, Getopte und möchte Schachspielern ein Zuhause geben.
es im Shell-Parameter OPTARG.

Wenn eine ungültige Option oder ein fehlendes Optionsargument gefunden wird, wird ein Fragezeichen
oder ein Doppelpunkt wird eingefügt Name (was auf eine ungültige Option oder ein fehlendes Argument hinweist,
bzw.) und OPTARG wird auf das Optionszeichen gesetzt, das das Problem verursacht hat.
Wenn darüber hinaus optstring beginnt nicht mit einem Doppelpunkt, ein Fragezeichen wird in gesetzt
Name, OPTARG wird nicht gesetzt und eine Fehlermeldung wird als Standardfehler ausgegeben.

Wenn das Ende der Optionen erreicht ist, Getopte Exits mit einem Exit ungleich Null
Status. Optionen enden mit dem ersten Argument (kein Optionsargument), das nicht beginnt
mit einem '-', oder wenn ein '--'-Argument angetroffen wird.

Optionsparsing kann zurückgesetzt werden, indem OPTIND auf 1 gesetzt wird (dies geschieht automatisch
wenn die Shell oder eine Shell-Prozedur aufgerufen wird).

Warnung: Ändern des Wertes des Shell-Parameters OPTIND auf einen anderen Wert als 1 oder
das Parsen verschiedener Argumentsätze ohne Zurücksetzen von OPTIND, kann zu unerwarteten
Ergebnisse angezeigt

globale ...
See setzen.

Hash- [-r] [Name ...]
Ohne Argumente werden alle gehashten ausführbaren Befehlspfadnamen aufgelistet. Der -r zu erhalten
bewirkt, dass alle Hash-Befehle aus der Hash-Tabelle entfernt werden. Jeder Name wird gesucht
als wäre es ein Befehlsname und wird der Hash-Tabelle hinzugefügt, wenn es sich um eine ausführbare Datei handelt
Befehl.

Jobs & Karriere [-lnp] [Job ...]
Informationen zu den angegebenen Jobs anzeigen; wenn keine Jobs angegeben sind, alle Jobs
sind angezeigt. Der -n Option bewirkt, dass Informationen nur für Jobs angezeigt werden, die
seit der letzten Benachrichtigung den Status geändert haben. Wenn die -l Option verwendet wird, die
Die Prozess-ID jedes Prozesses in einem Job wird ebenfalls aufgelistet. Der -p Option bewirkt nur die
Prozessgruppe jedes zu druckenden Jobs. Sehen Job Smartgeräte App unten für das Format von Job
und den angezeigten Job.

töten [-s Zeichenname | - -Schild | - -Zeichenname] { Job | pid | pgrp } ...
Senden Sie das angegebene Signal an die angegebenen Jobs, Prozess-IDs oder Prozessgruppen. Wenn
kein Signal angegeben ist, wird das TERM-Signal gesendet. Wenn ein Job angegeben ist, wird das Signal
wird an die Prozessgruppe des Jobs gesendet. Sehen Job Smartgeräte App unten für das Format von Job.

töten -l [Exit-Status ...]
Drucken Sie den Signalnamen entsprechend Exit-Status. Wenn keine Argumente angegeben sind, a
Liste aller Signale, deren Nummern und eine kurze Beschreibung werden gedruckt.

lassen [Ausdruck ...]
Jeder Ausdruck wird ausgewertet (siehe Arithmetik Ausdrücke Oben). Wenn alle Ausdrücke
erfolgreich ausgewertet wurden, ist der Exit-Status 0 (1), wenn der letzte Ausdruck ausgewertet wurde
auf ungleich null (null). Tritt ein Fehler beim Parsen oder Auswerten eines
Ausdruck, der Exit-Status ist größer als 1. Da Ausdrücke möglicherweise
zitiert, (( ausdr )) ist syntaktischer Zucker für { let 'ausdr'; }.

Lassen] Intern verwendeter Alias ​​für lassen.

mknod [-m Modus] Name b|c Dur Moll
mknod [-m Modus] Name p
Erstellen Sie eine spezielle Gerätedatei. Der Dateityp kann sein b (Blockgerät), c
(Zeichengerät) oder p (Named Pipe, FIFO). Die erstellte Datei kann geändert werden
nach seiner Modus (Über die -m Möglichkeit), Dur (Hauptgerätenummer) und Moll
(kleine Gerätenummer). Dies ist normalerweise nicht Teil von mksch; Händler können jedoch
habe dies als eingebauten Speed-Hack hinzugefügt.

drucken [-nprsu[n] | -R [-en]] [Argument ...]
drucken gibt seine Argumente auf der Standardausgabe aus, durch Leerzeichen getrennt und abgeschlossen
mit einem Zeilenumbruch. Der -n Option unterdrückt den Zeilenumbruch. Standardmäßig sind bestimmte C-Escapes
übersetzt werden. Dazu gehören die in . genannten Backslash Expansion oben auch
als '\c', was der Verwendung von entspricht -n Möglichkeit. Backslash-Erweiterung kann sein
gehemmt mit dem -r Option. Die -s Option druckt in die Verlaufsdatei anstelle von
Standardausgabe; das -u Option druckt zum Dateideskriptor n (n standardmäßig auf 1 wenn
weggelassen); und das -p Option druckt in den Co-Prozess (siehe Co-Prozesse über).

Das -R Option wird verwendet, um bis zu einem gewissen Grad die BSD . zu emulieren Echo(1) Befehl, der
'\'-Sequenzen nicht verarbeiten, es sei denn, die -e Option gegeben ist. Wie oben, die -n zu erhalten
unterdrückt den abschließenden Zeilenumbruch.

printf Format [Argumente ...]
Formatierte Ausgabe. Ungefähr das gleiche wie die printf(1), Dienstprogramm, außer es verwendet
gleiche Figure Backslash Expansion und E/A-Code und verarbeitet Gleitkomma nicht als
Rest von mksch. Ein externes Dienstprogramm wird dem eingebauten vorgezogen. Das ist nicht
normalerweise ein Teil von mksch; Händler haben dies jedoch möglicherweise als integriert hinzugefügt
Geschwindigkeit hacken. Nicht in neuem Code verwenden.

pwd [-LP]
Drucken Sie das aktuelle Arbeitsverzeichnis aus. Wenn die -L Option verwendet wird oder wenn die physikalisch
Option ist nicht gesetzt (siehe kompensieren Befehl unten), wird der logische Pfad ausgegeben (dh der
Pfad verwendet zu cd in das aktuelle Verzeichnis). Wenn die -P Option (physikalischer Pfad) wird verwendet
oder wenn die physikalisch Option gesetzt ist, wird der Pfad aus dem Dateisystem ermittelt (von
folgenden '..'-Verzeichnissen zum Stammverzeichnis) wird gedruckt.

lesen [-A | -a] [-d x] [-N z | -n z] [-p | -u[n]] [-t n] [-rs] [p ...]
Liest eine Eingabezeile, trennt die Eingabe mit dem IFS-Parameter in Felder (siehe
Substitution oben) und weist jedes Feld den angegebenen Parametern zu p. Wenn nein
Parameter angegeben sind, wird der Parameter REPLY verwendet, um das Ergebnis zu speichern. Mit dem
-A und -a Optionen wird nur kein oder nur ein Parameter akzeptiert. Wenn es mehr gibt
Parameter als Felder, die zusätzlichen Parameter werden auf die leere Zeichenfolge oder 0 gesetzt; wenn
es gibt mehr Felder als Parameter, dem letzten Parameter werden die restlichen zugewiesen
Felder (einschließlich der Worttrennzeichen).

Die Optionen sind wie folgt:

-A Speichern Sie das Ergebnis in den Parameter p (oder ANTWORT) als Array von Wörtern.

-a Speichern Sie das Ergebnis ohne Wortaufspaltung in den Parameter p (oder ANTWORTEN) als
Zeichenarray (breite Zeichen, wenn die utf8-Modus Option ausgeführt wird,
Oktette sonst); die Codepunkte werden standardmäßig als Dezimalzahlen codiert.

-d x Verwenden Sie das erste Byte von x, NUL wenn leer, anstelle des ASCII-Neuzeilenzeichens
als Trennzeichen für die Eingabezeile.

-N z Anstatt bis zum Ende der Zeile zu lesen, lesen Sie genau z Bytes. Wenn EOF oder a
Timeout auftritt, wird ein partieller Lesevorgang mit dem Exit-Status 1 zurückgegeben.

-n z Anstatt bis zum Zeilenende zu lesen, lesen Sie bis z Bytes, aber zurück, sobald
beliebige Bytes werden gelesen, zB von einem langsamen Endgerät, oder wenn EOF oder ein Timeout
tritt ein.

-p Aus dem aktuell aktiven Co-Prozess lesen, siehe Co-Prozesse oben für Details
auf diesem.

-u[n] Aus dem Dateideskriptor lesen n (standardmäßig 0, dh Standardeingabe). Der
-Argument muss unmittelbar auf das Optionszeichen folgen.

-t n Lesen unterbrechen nach n Sekunden (angegeben als positiver Dezimalwert mit an
optionaler Bruchteil). Der Austrittsstatus von lesen ist 1, wenn die Zeitüberschreitung
aufgetreten, aber teilweise Lesevorgänge können immer noch zurückgegeben werden.

-r Normalerweise umgeht das ASCII-Backslash-Zeichen die besondere Bedeutung des
folgendes Zeichen und wird aus der Eingabe entfernt; lesen hört nicht auf wenn
auf eine Backslash-Newline-Sequenz stößt und diese Newline nicht in speichert
das Ergebnis. Diese Option aktiviert den Raw-Modus, in dem Backslashes nicht verwendet werden
verarbeitet.

-s Die Eingabezeile wird in der Historie gespeichert.

Wenn der Eingang ein Terminal ist, werden beide -N und -n Optionen setzen es in den Rohmodus; Sie
eine ganze Datei lesen, wenn -1 als übergeben wird z Argument.

Der erste Parameter kann ein Fragezeichen und eine daran angehängte Zeichenfolge haben, in der
Falls die Zeichenfolge als Eingabeaufforderung verwendet wird (wird als Standardfehler ausgegeben, bevor eine Eingabe erfolgt)
read) wenn die Eingabe a . ist tty(4) (zB lesen nfoo?'Nummer of Foos: ').

Wenn kein Eingang gelesen wird oder ein Timeout aufgetreten ist, lesen wird mit einem Status ungleich Null beendet.

Ein weiterer praktischer Trick: Wenn lesen wird in einer Schleife ausgeführt, wie z während lesen foo; do ...;
erledigt dann werden führende Leerzeichen entfernt (IFS) und umgekehrte Schrägstriche verarbeitet. Sie
Vielleicht möchten Sie verwenden während IFS= lesen -r foo; do ...; erledigt für makellose I/O. Ähnlich,
bei Verwendung der -a Option, Nutzung der -r Option könnte umsichtig sein; das gleiche gilt
für:

finden . -type f -print0 |& \
while IFS= read -d '' -pr Dateiname; tun
print -r -- "gefunden <${filename#./}>"
erledigt

Die innere Schleife wird in einer Subshell ausgeführt und Variablenänderungen können nicht durchgeführt werden
propagiert, wenn in einer Pipeline ausgeführt:

Bar | baz | beim Lesen foo; tun ...; fertig

Verwenden Sie stattdessen Co-Prozesse:

Bar | baz |&
während gelesen -p foo; tun ...; fertig
exec 3>&p; ausf. 3>&-

schreibgeschützt [-p] [Parameter [=Wert] ...]
Legt das schreibgeschützte Attribut der benannten Parameter fest. Wenn Werte angegeben sind,
Parameter werden auf sie gesetzt, bevor das Attribut gesetzt wird. Sobald ein Parameter erstellt wurde
schreibgeschützt, kann nicht zurückgesetzt werden und sein Wert kann nicht geändert werden.

Wenn keine Parameter angegeben sind, werden die Namen aller Parameter mit dem schreibgeschützten
Attribut werden pro Zeile ausgegeben, es sei denn, die -p Option verwendet wird, in welchem ​​Fall
schreibgeschützt Befehle, die alle schreibgeschützten Parameter einschließlich ihrer Werte definieren, sind
gedruckt.

realpath [--] Name
Gibt den aufgelösten absoluten Pfadnamen aus, der entspricht Name. Wenn Name endet mit einem
Schrägstrich ('/'), es wird auch auf Existenz geprüft und ob es sich um ein Verzeichnis handelt;
Andernfalls, realpath gibt 0 zurück, wenn der Pfadname entweder existiert oder erstellt werden kann
sofort, dh alle bis auf die letzte Komponente existieren und sind Verzeichnisse.

umbenennen [--] für zu
Benennt die Datei um für zu zu. Beide müssen vollständige Pfadnamen sein und sich auf demselben Gerät befinden.
Dieser Einbau ist für Notsituationen gedacht, in denen /bin/mv unbrauchbar wird und
ruft direkt an umbenennen(2).

Rückkehr [Status]
Gibt von einer Funktion zurück oder . Skript, mit Exit-Status Status. Wenn nein Status gegeben ist,
der Exit-Status des zuletzt ausgeführten Befehls wird verwendet. Bei Verwendung außerhalb einer Funktion
or . Skript, es hat den gleichen Effekt wie wunsch. Beachten Sie, dass mksch behandelt sowohl Profil als auch
ENV-Dateien als . Skripte, während die ursprüngliche Korn-Shell Profile nur als .
Skripte.

kompensieren [+-abCefhiklmnprsUuvXx] [+-o zu erhalten] [+-A Name] [--] [arg ...]
Das kompensieren Befehl kann verwendet werden, um (-) oder klar (+) Shell-Optionen, legen Sie die Position fest
Parameter, oder legen Sie einen Array-Parameter fest. Optionen können mit der geändert werden +-o zu erhalten
Syntax, wo zu erhalten ist der lange Name einer Option, oder mit dem +-Brief Syntax,
woher Brief ist der einzelne Buchstabe der Option (nicht alle Optionen haben einen einzelnen Buchstaben
Name). In der folgenden Tabelle sind sowohl Optionsbuchstaben (sofern vorhanden) als auch lange Namen aufgeführt
zusammen mit einer Beschreibung der Funktion der Option:

-A Name
Setzt die Elemente des Array-Parameters Name zu arg ... If -A Wird verwendet
Array wird zuerst zurückgesetzt (dh geleert); wenn +A verwendet wird, sind die ersten N Elemente gesetzt
(wobei N die Anzahl der Argumente ist); der Rest bleibt unberührt.

Eine alternative Syntax für den Befehl kompensieren -A foo -- a b c was ist kompatibel zu
GNU bash und auch von AT&T UNIX unterstützt ksh93 ist: foo=(a b C); foo+=(d e)

-a | -o Allexport
Alle neuen Parameter werden mit dem Exportattribut erstellt.

-b | -o benachrichtigen
Jobbenachrichtigungsnachrichten asynchron drucken, anstatt kurz vor dem
prompt. Wird nur verwendet, wenn die Jobsteuerung aktiviert ist (-m).

-C | -o noclobber
Verhindern, dass > Umleitung vorhandene Dateien überschreibt. Stattdessen >| muss benutzt werden
um ein Überschreiben zu erzwingen. Beachten Sie, dass die Verwendung für die Erstellung von nicht sicher ist
temporäre Dateien oder Sperrdateien aufgrund eines TOCTOU in einer Überprüfung, die eine Umleitung ermöglicht
Ausgabe an / dev / null oder andere Gerätedateien auch in noclobber Modus arbeiten können.

-e | -o Fehler
Beenden (nach Ausführung des ERR-Trap) sobald ein Fehler oder ein Befehl auftritt
schlägt fehl (dh beendet mit einem Status ungleich Null). Dies gilt nicht für Befehle
deren Exit-Status explizit durch ein Shell-Konstrukt wie getestet wird if, bis,
während, oder ! Aussagen. Für && oder ||, nur der Status des letzten Befehls ist
geprüft.

-f | -o noglob
Erweitern Sie die Dateinamenmuster nicht.

-h | -o Trackall
Erstellen Sie nachverfolgte Aliase für alle ausgeführten Befehle (siehe Aliases Oben). Ermöglicht
standardmäßig für nicht interaktive Shells.

-i | -o interaktive
Die Shell ist eine interaktive Shell. Diese Option kann nur verwendet werden, wenn die Shell
aufgerufen wird. Siehe oben für eine Beschreibung, was dies bedeutet.

-k | -o Stichwort
Parametrierungen werden überall in einem Befehl erkannt.

-l | -o login
Die Shell ist eine Login-Shell. Diese Option kann nur verwendet werden, wenn die Shell
aufgerufen. Siehe oben für eine Beschreibung, was dies bedeutet.

-m | -o Monitor
Jobsteuerung aktivieren (Standard für interaktive Shells).

-n | -o noexec
Führen Sie keine Befehle aus. Nützlich, um die Syntax von Skripten zu überprüfen (ignoriert
falls interaktiv).

-p | -o privilegiert
Die Shell ist eine privilegierte Shell. Es wird automatisch gesetzt, wenn die Shell
startet, stimmt die tatsächliche UID oder GID nicht mit der effektiven UID (EUID) oder GID überein
(EGID) bzw. Siehe oben für eine Beschreibung, was dies bedeutet.

-r | -o eingeschränkt
Die Shell ist eine eingeschränkte Shell. Diese Option kann nur verwendet werden, wenn die Shell
aufgerufen. Siehe oben für eine Beschreibung, was dies bedeutet.

-s | -o Standard
Bei Verwendung beim Aufruf der Shell werden Befehle von der Standardeingabe gelesen. Satz
automatisch, wenn die Shell ohne Argumente aufgerufen wird.

Wann -s wird mit dem verwendet kompensieren Befehl bewirkt, dass die angegebenen Argumente
sortiert, bevor sie den Positionsparametern (oder dem Array) zugewiesen werden NameWenn
-A wird genutzt).

-U | -o utf8-Modus
Aktivieren Sie die UTF-8-Unterstützung im Emacs Bearbeitung Modus und internes String-Handling
Funktionen. Dieses Flag ist standardmäßig deaktiviert, kann aber durch Setzen aktiviert werden
auf der Shell-Befehlszeile; wird automatisch für interaktive Shells aktiviert, wenn
zur Kompilierzeit angefordert, unterstützt Ihr System setlocale(LC_CTYPE, "") und
optional nl_langinfo(CODESATZ) oder die LC_ALL-, LC_CTYPE- oder LANG-Umgebung
Variablen, und mindestens eine davon gibt etwas zurück, das mit „UTF-8“ übereinstimmt oder
„utf8“ ohne Berücksichtigung der Groß-/Kleinschreibung; für direkte eingebaute Anrufe je nach
oben erwähnte Umgebungsvariablen; oder für stdin oder scripts, wenn die Eingabe
beginnt mit einer UTF-8 Byte Order Mark.

In naher Zukunft wird Locale-Tracking implementiert, was bedeutet, dass kompensieren -+U is
wird immer dann geändert, wenn sich eine der POSIX-Gebietsschema-bezogenen Umgebungsvariablen ändert.

-u | -o Substantiv
Die Referenzierung eines nicht gesetzten Parameters, außer „$@“ oder „$*“, wird als ein . behandelt
Fehler, es sei denn, einer der Modifikatoren '-', '+' oder '=' wird verwendet.

-v | -o ausführlich
Schreibe die Shell-Eingabe in den Standardfehler, während sie gelesen wird.

-X | -o markdir
Markieren Sie Verzeichnisse mit einem nachgestellten '/' während der Dateinamengenerierung.

-x | -o Xtrace
Befehlsbäume drucken, wenn sie ausgeführt werden, mit vorangestelltem Wert von PS4.

-o schön
Hintergrundjobs werden mit niedrigerer Priorität ausgeführt.

-o klammerexpand
Aktivieren Sie die Klammererweiterung (auch bekannt als Alternation). Dies ist standardmäßig aktiviert. Wenn
deaktiviert, die Tilde-Erweiterung nach einem Gleichheitszeichen wird als Nebeneffekt deaktiviert.

-o Emacs
Aktivieren Sie die BRL-emacs-ähnliche Befehlszeilenbearbeitung (nur interaktive Shells); sehen Emacs
Bearbeitung Modus.

-o gmacs
Aktivieren Sie die gmacs-ähnliche Befehlszeilenbearbeitung (nur interaktive Shells). Zur Zeit
identisch mit der Emacs-Bearbeitung, außer dass transpose-chars (^T) etwas wirkt
anders.

-o ignorieren
Die Shell wird nicht (leicht) beendet, wenn das Dateiende gelesen wird; wunsch muss benutzt werden.
Um Endlosschleifen zu vermeiden, wird die Shell beendet, wenn EOF 13 Mal hintereinander gelesen wird.

-o inherit-xtrace
Nicht zurücksetzen -o Xtrace beim Eingeben von Funktionen. Dies ist standardmäßig aktiviert.

-o Nohup
Beenden Sie keine laufenden Jobs mit einem SIGHUP-Signal, wenn eine Login-Shell beendet wird.
Derzeit standardmäßig eingestellt, aber dies kann sich in Zukunft ändern, um kompatibel zu sein
mit AT&T UNIX ksh, das diese Option nicht hat, aber das SIGHUP sendet
Signal.

-o nolog
Kein Effekt. In der ursprünglichen Korn-Shell verhindert dies, dass Funktionsdefinitionen
in der Verlaufsdatei gespeichert werden.

-o physikalisch
Verursacht die cd und pwd Befehle zur Verwendung von „physischen“ (dh des Dateisystems) '..'
Verzeichnisse statt „logischer“ Verzeichnisse (dh die Shell verarbeitet '..', was
erlaubt dem Benutzer, symbolische Links zu Verzeichnissen nicht wahrzunehmen). Löschen um
Ursprünglich. Beachten Sie, dass die Einstellung dieser Option den aktuellen Wert des nicht beeinflusst
PWD-Parameter; nur der cd Befehl ändert PWD. Siehe die cd und pwd Befehle
oben für weitere Details.

-o Rohrfehler
Machen Sie den Exit-Status einer Pipeline (vor der logischen Ergänzung) zum
ganz rechts ungleich null errorlevel oder null, wenn alle Befehle mit null beendet wurden.

-o POSIX
Verhalten Sie sich näher an den Standards (siehe POSIX Modus für Details). Automatisch
aktiviert, wenn der Basisname des Shell-Aufrufs mit „sh“ beginnt und dies
Autodetection-Funktion ist einkompiliert (nicht in MirBSD). Als Nebeneffekt, Einstellung
diese Flagge erlischt klammerexpand Modus, der manuell wieder eingeschaltet werden kann, und
sh Modus (es sei denn, beide sind gleichzeitig aktiviert).

-o sh
Ermöglichen / Bin / sh (Kludge)-Modus (siehe SH Modus). Automatisch aktiviert, wenn die
Der Basisname des Shell-Aufrufs beginnt mit „sh“ und diese automatische Erkennungsfunktion
ist einkompiliert (nicht in MirBSD). Als Nebeneffekt wird das Setzen dieses Flags deaktiviert
klammerexpand Modus, der manuell wieder eingeschaltet werden kann, und POSIX Modus (es sei denn
beide sind gleichzeitig aktiviert).

-o vi
Ermöglichen vi(1)-ähnliche Befehlszeilenbearbeitung (nur interaktive Shells). Sehen Vi
Bearbeitung Modus für Dokumentation und Einschränkungen.

-o vi-escvollständig
Führen Sie in der vi-Befehlszeilenbearbeitung die Vervollständigung des Befehls- und Dateinamens beim Escape durch (^[)
wird im Befehlsmodus eingegeben.

-o vi-Tabcomplete
Führen Sie in der vi-Befehlszeilenbearbeitung die Vervollständigung von Befehls- und Dateinamen durch, wenn die Registerkarte (^I) . ist
im Einfügemodus eingegeben. Dies ist die Standardeinstellung.

-o Viraw
Kein Effekt. In der ursprünglichen Korn-Shell, es sei denn Viraw gesetzt wurde, der vi-Befehl-
Line-Modus würde den tty(4) Fahrer machen die Arbeit, bis ESC (^[) eingegeben wurde.
mksch ist immer im viraw-Modus.

Diese Optionen können auch beim Aufruf der Shell verwendet werden. Der aktuelle Satz von
Optionen (mit Einzelbuchstabennamen) finden Sie im Parameter '$-'. kompensieren -o mit
kein Optionsname listet alle Optionen auf und ob jede Option ein- oder ausgeschaltet ist; kompensieren +o werden wir
Drucken Sie die langen Namen aller Optionen, die derzeit aktiviert sind. In einer zukünftigen Version kompensieren
+o verhält sich POSIX-kompatibel und druckt Befehle, um die aktuellen Optionen wiederherzustellen
stattdessen.

Die verbleibenden Argumente, falls vorhanden, sind Positionsparameter und werden der Reihe nach zugewiesen
die Positionsparameter (dh $1, $2 usw.). Wenn Optionen mit '--' enden und dort
keine verbleibenden Argumente sind, werden alle Positionsparameter gelöscht. Wenn keine Optionen oder
Argumente werden angegeben, die Werte aller Namen werden ausgegeben. Für unbekannte historische
Gründen wird eine einzelne '-'-Option besonders behandelt – sie löscht beide -v und -x
Optionen.

verschieben [Anzahl]
Die Positionsparameter Anzahl+ 1, Anzahl+2 usw. werden in '1', '2' usw. umbenannt.
Anzahl standardmäßig auf 1.

schlafen Sekunden
Unterbricht die Ausführung für mindestens die Sekunden als positiver Dezimalwert angegeben
mit einem optionalen Bruchteil. Die Signallieferung kann die Ausführung früher fortsetzen.

Quelle Datei [arg ...]
Like . („Punkt“), außer dass das aktuelle Arbeitsverzeichnis an die Suche angehängt wird
Pfad (GNU bash Erweiterung).

aussetzen
Stoppt die Shell, als hätte sie das Suspend-Zeichen vom Terminal erhalten. es ist
Es ist nicht möglich, eine Login-Shell zu unterbrechen, es sei denn, der übergeordnete Prozess ist Mitglied des
dieselbe Terminalsitzung, ist aber Mitglied einer anderen Prozessgruppe. Als General
Regel, wenn die Shell von einer anderen Shell gestartet wurde oder über su(1), kann es ausgesetzt werden.

Test Ausdruck
[ Ausdruck ]
Test bewertet die Ausdruck und gibt null Status zurück, wenn wahr, 1 wenn falsch oder größer
als 1, wenn ein Fehler aufgetreten ist. Es wird normalerweise als Bedingungsbefehl von verwendet if und
während Aussagen. Symbolischen Links wird für alle gefolgt Datei Ausdrücke außer -h und
-L.

Folgende Grundausdrücke stehen zur Verfügung:

-a Datei Datei besteht.

-b Datei Datei ist ein Block-Spezialgerät.

-c Datei Datei ist ein spezielles Zeichengerät.

-d Datei Datei ist ein Verzeichnis.

-e Datei Datei besteht.

-f Datei Datei ist eine normale Datei.

-G Datei Datei's group ist die effektive Gruppen-ID der Shell.

-g Datei DateiIm Modus von ist das setgid-Bit gesetzt.

-H Datei Datei ist ein kontextabhängiges Verzeichnis (nur bei HP-UX nützlich).

-h Datei Datei ist ein symbolischer Link.

-k Datei Datei's Modus hat die klebrig(8) Bit gesetzt.

-L Datei Datei ist ein symbolischer Link.

-O Datei Datei's Owner ist die effektive Benutzer-ID der Shell.

-o zu erhalten Schale zu erhalten eingestellt ist (siehe kompensieren Befehl oben für eine Liste von
Optionen). Als nicht standardmäßige Erweiterung, wenn die Option mit beginnt
ein '!', der Test wird negiert; der Test schlägt immer fehl, wenn zu erhalten
existiert nicht (also [ -o foo -o -o !foo ] gibt genau dann true zurück
wenn Option foo existiert). Das gleiche kann mit [ -o ?foo ] erreicht werden.
wie in AT&T UNIX ksh93. zu erhalten kann auch die kurze Fahne sein, die von geführt wird
entweder '-' oder '+' (keine logische Negation), zum Beispiel '-x' oder '+x'
statt 'xtrace'.

-p Datei Datei ist eine Named Pipe (FIFO).

-r Datei Datei existiert und ist lesbar.

-S Datei Datei ist eine Unix(4)-Domain-Socket.

-s Datei Datei ist nicht leer.

-t fd Dateideskriptor fd ist eine tty(4) Gerät.

-u Datei DateiIm Modus von ist das setuid-Bit gesetzt.

-w Datei Datei existiert und ist beschreibbar.

-x Datei Datei existiert und ist ausführbar.

file1 -nt file2 file1 ist neuer als file2 or file1 existiert und file2 nicht.

file1 -ot file2 file1 ist älter als file2 or file2 existiert und file1 nicht.

file1 -wenn file2 file1 ist die gleiche Datei wie file2.

Schnur Schnur hat eine Länge ungleich null.

-n Schnur Schnur ist nicht leer.

-z Schnur Schnur ist leer.

Schnur = Schnur Strings sind gleich.

Schnur == Schnur Strings sind gleich.

Schnur > Schnur Der erste String-Operand ist größer als der zweite String-Operand.

Schnur < Schnur Der erste String-Operand ist kleiner als der zweite String-Operand.

Schnur != Schnur Strings sind nicht gleich.

Anzahl -Gl Anzahl Zahlen sind gleich.

Anzahl -ne Anzahl Zahlen sind nicht gleich.

Anzahl -geben Sie Anzahl Zahlen vergleichen größer oder gleich.

Anzahl -GT Anzahl Zahlen vergleichen größer als.

Anzahl Le- Anzahl Zahlen vergleichen kleiner oder gleich.

Anzahl -L- Anzahl Zahlen vergleichen weniger als.

Die obigen grundlegenden Ausdrücke, in denen unäre Operatoren Vorrang vor binären haben
Operatoren, können mit den folgenden Operatoren kombiniert werden (aufsteigend aufgelistet
Vorrang):

ausdr -o ausdr Logisches ODER.
expr -a expr Logisches UND.
! expr Logisches NICHT.
(Ausdruck) Gruppierung.

Beachten Sie, dass eine Zahl tatsächlich ein arithmetischer Ausdruck sein kann, wie z
Begriff oder der Name einer Integer-Variablen:

x=1; [ "x" -eq 1 ] ergibt wahr

Beachten Sie, dass einige Sonderregeln gelten (mit freundlicher Genehmigung von POSIX), wenn die Anzahl der
Argumente zu Test oder innerhalb der Klammern [ ... ] kleiner als fünf ist: wenn führendes '!'
Argumente können so entfernt werden, dass nur noch ein bis drei Argumente übrig bleiben, dann
abgesenkter Vergleich wird ausgeführt; (Dank an XSI) Klammern \( ... \) untere vier- und
Drei-Argument-Formen zu Zwei- bzw. Ein-Argument-Formen; drei Argumente
Formen bevorzugen letztendlich binäre Operationen, gefolgt von Negation und Klammern
Senkung; Zwei- und Vier-Argument-Formen bevorzugen Negation gefolgt von Klammern; das
Ein-Argument-Form impliziert immer -n.

Note: Ein häufiger Fehler ist die Verwendung von „if [ $foo = bar ]“, was bei Parameter „foo“ fehlschlägt
ist NULL oder nicht gesetzt, wenn es eingebettete Leerzeichen hat (dh IFS-Oktette) oder wenn es ein unärer ist
Operator wie '!' oder '-n'. Verwenden Sie stattdessen Tests wie „if [ x“$foo“ = x“bar“ ]“ oder die
Doppelklammer-Operator „if [[ $foo = bar ]]“ oder, um Mustervergleiche zu vermeiden (siehe [[
oben): „if [[ $foo = "$bar" ]]“

Das [[ ... ]] construct ist nicht nur sicherer in der Anwendung, sondern oft auch schneller.

Zeit [-p] [Pipeline]
Sollten Sie jetzt aufgefordert werden, ein Pipeline gegeben ist, werden die Zeiten gemeldet, die zum Ausführen der Pipeline verwendet wurden. Wenn nein
Pipeline angegeben ist, dann die Benutzer- und Systemzeit, die von der Shell selbst verwendet wird, und alle
die seit dem Start ausgeführten Befehle werden gemeldet. Die angegebenen Zeiten sind
die Echtzeit (verstrichene Zeit vom Start bis zum Ende), die CPU-Zeit des Benutzers (aufgewendete Zeit)
Ausführung im Benutzermodus) und die System-CPU-Zeit (Zeit, die im Kernel-Modus verbracht wird).
Die Zeiten werden als Standardfehler gemeldet; das Format der Ausgabe ist:

0m0.00s real 0m0.00s Benutzer 0m0.00s System

Besitzt das -p Option ist die Ausgabe etwas länger:

echte 0.00
Benutzer 0.00
System 0.00

Es ist ein Fehler, die anzugeben -p Option, es sei denn Pipeline ist ein einfacher Befehl.

Einfache Umleitungen von Standardfehlern haben keinen Einfluss auf die Ausgabe der Zeit Befehl:

$ Zeit Schlaf 1 2>afile
$ { Zeit Schlaf 1; } 2>Datei

Die Zeiten für den ersten Befehl gehen nicht auf „afile“, wohl aber die des zweiten Befehls.

mal Drucken Sie die kumulierten Benutzer- und Systemzeiten, die sowohl von der Shell als auch von Prozessen verwendet werden
dass die Shell gestartet, die beendet wurden. Das Ausgabeformat ist:

0m0.00s 0m0.00s
0m0.00s 0m0.00s

Falle n [Signal ...]
Wenn der erste Operand eine dezimale Ganzzahl ohne Vorzeichen ist, werden alle angegebenen Signale zurückgesetzt
auf die Standardaktion, dh entspricht dem Aufrufen Falle mit einem Minuszeichen ('-') als
Handler, gefolgt von den Argumenten (n [Signal ...]), die alle behandelt werden als
Signale.

Falle [Handler Signal ...]
Setzt einen Trap-Handler, der ausgeführt werden soll, wenn einer der angegebenen Signals sind
empfangen. Handler ist entweder ein leerer String, der angibt, dass die Signale sein sollen
ignoriert, ein Minuszeichen ('-'), das anzeigt, dass die Standardaktion ausgeführt werden soll für
die Signale (siehe Signal(3)), oder eine Zeichenfolge mit Shell-Befehlen, die ausgeführt werden sollen bei
die erste Gelegenheit (dh wenn der aktuelle Befehl abgeschlossen ist oder vor dem Drucken
die nächste PS1-Aufforderung) nach Empfang eines der Signale. Signal ist der Name eines
Signal (zB PIPE oder ALRM) oder die Nummer des Signals (siehe töten -l Befehl
über).

Es gibt zwei spezielle Signale: EXIT (auch bekannt als 0), das ausgeführt wird, wenn der
Shell wird beendet und ERR, das nach Auftreten eines Fehlers ausgeführt wird; ein Fehler ist
etwas, das dazu führen würde, dass die Shell beendet wird, wenn die kompensieren -e or kompensieren -o Fehler zu erhalten
wurden eingestellt. EXIT-Handler werden in der Umgebung des zuletzt ausgeführten ausgeführt
Befehl.

Beachten Sie, dass bei nicht interaktiven Shells der Trap-Handler für Signale nicht geändert werden kann
die beim Start der Shell ignoriert wurden.

Ohne Argumente der aktuelle Status der Traps, die seit der Shell gesetzt wurden
gestartet wird als eine Reihe von angezeigt Falle Befehle. Beachten Sie, dass die Ausgabe von Falle kann keine
sinnvollerweise an einen anderen Prozess weitergeleitet werden (ein Artefakt der Tatsache, dass Fallen gelöscht werden)
beim Anlegen von Unterprozessen).

Der DEBUG-Trap der ursprünglichen Korn-Shell und die Behandlung von ERR- und EXIT-Traps in
Funktionen sind noch nicht implementiert.

was immer dies auch sein sollte. Ein Befehl, der mit einem Nullwert beendet wird.

globale [[+-alpnrtUux] [-L[n]] [-R[n]] [-Z[n]] [-i[n]] | -f [-Smoking]] [Name [=Wert] ...]
setzen [[+-alpnrtUux] [-LRZ[n]] [-i[n]] | -f [-Smoking]] [Name [=Wert] ...]
Parameterattribute anzeigen oder einstellen. Ohne Name Argumente, Parameterattribute
sind angezeigt; Wenn keine Optionen verwendet werden, sind die aktuellen Attribute aller Parameter
gedruckt als setzen Befehle; wenn eine Option angegeben ist (oder '-' ohne Optionsbuchstaben),
alle Parameter und ihre Werte mit den angegebenen Attributen werden gedruckt; wenn optionen
werden mit '+' eingeleitet, Parameterwerte werden nicht ausgegeben.

If Name Argumente werden übergeben, die Attribute der benannten Parameter werden gesetzt (-oder
gelöscht (+). Werte für Parameter können optional angegeben werden. Für Name[*], das
Änderung wirkt sich auf das gesamte Array aus und es darf kein Wert angegeben werden.

If setzen innerhalb einer Funktion verwendet wird, werden alle angegebenen Parameter lokalisiert. Dies
wird nicht vom sonst identischen gemacht globale . Note: Dies bedeutet, dass mksch 's globale
Befehl ist nicht Äquivalent zu anderen Programmiersprachen', da es kein a . erlaubt
Funktion, die von einer anderen Funktion aufgerufen wird, um auf einen Parameter im wahrhaft globalen Bereich zuzugreifen,
verhindert aber nur das Einfügen eines Zugriffs in den lokalen Geltungsbereich.

Wann -f wird genutzt, setzen operiert mit den Attributen von Funktionen. Wie bei
Parameter, wenn nein Name Argumente werden angegeben, Funktionen werden mit ihren Werten aufgelistet
(dh Definitionen), es sei denn, Optionen werden mit '+' eingeleitet, in diesem Fall nur die
Funktionsnamen werden gemeldet.

-a Indiziertes Array-Attribut.

-f Funktionsmodus. Funktionen und deren Attribute anzeigen oder einstellen, anstatt
Parameter.

-i[n] Integer-Attribut. n gibt die Basis an, die bei der Anzeige der Ganzzahl verwendet werden soll
(wenn nicht angegeben, wird die in der ersten Zuweisung angegebene Basis verwendet).
Parametern mit diesem Attribut können Werte zugewiesen werden, die Arithmetik enthalten
Ausdrücke.

-L[n] Linksbündiges Attribut. n gibt die Feldbreite an. Wenn n ist nicht angegeben,
die aktuelle Breite eines Parameters (oder die Breite seines ersten zugewiesenen Werts)
wird genutzt. Führendes Leerzeichen (und Nullen, wenn es mit dem verwendet wird) -Z Option) ist
abgestreift. Bei Bedarf werden die Werte entweder abgeschnitten oder mit Leerzeichen aufgefüllt, damit sie passen
die Feldbreite.

-l Attribut in Kleinbuchstaben. Alle Großbuchstaben in Werten werden umgewandelt in
Kleinbuchstaben. (In der ursprünglichen Korn-Shell bedeutete dieser Parameter „long integer“
bei Verwendung mit dem -i Möglichkeit.)

-n Erstellen Sie eine gebundene Variable (Namensreferenz): jeder Zugriff auf die Variable Name
wird auf die Variable zugreifen Wert im aktuellen Umfang (dies ist anders als
AT&T-UNIX ksh93!) stattdessen. Auch anders als AT&T UNIX ksh93 ist, dass
Wert wird zur Zeit faul bewertet Name zugegriffen wird. Dies kann verwendet werden von
Funktionen, um stattdessen auf Variablen zuzugreifen, deren Namen als Parameter übergeben werden
des Verwendens eval.

-p Drucken abgeschlossen setzen Befehle, mit denen die Attribute neu erstellt werden können
und Parameterwerte.

-R[n] Rechtsbündiges Attribut. n gibt die Feldbreite an. Wenn n ist nicht
angegeben, die aktuelle Breite eines Parameters (oder die Breite seines ersten
zugeordneter Wert) verwendet. Nachfolgende Leerzeichen werden entfernt. Falls benötigt,
Werte werden entweder von führenden Zeichen befreit oder mit Leerzeichen aufgefüllt, um sie zu machen
die Feldbreite anpassen.

-r Schreibgeschütztes Attribut. Parameter mit diesem Attribut dürfen nicht zugewiesen werden an
oder unscharf. Sobald dieses Attribut festgelegt ist, kann es nicht mehr deaktiviert werden.

-t Tag-Attribut. Hat keine Bedeutung für die Schale; zur Anwendung bereitgestellt.

Für Funktionen, -t ist das Trace-Attribut. Wenn Funktionen mit der Spur
Attribut ausgeführt werden, die Xtrace (-x) Shell-Option wird vorübergehend aktiviert
auf.

-U Ganzzahlattribut ohne Vorzeichen. Ganzzahlen werden als vorzeichenlose Werte ausgegeben (kombinieren
an. Nach der Installation können Sie HEIC-Dateien mit der -i Möglichkeit). Diese Option ist nicht in der ursprünglichen Korn-Shell enthalten.

-u Attribut in Großbuchstaben. Alle Kleinbuchstaben in Werten werden umgewandelt in
Großbuchstaben. (In der ursprünglichen Korn-Shell bedeutete dieser Parameter „unsigned“
integer“ bei Verwendung mit dem -i Option, die Großbuchstaben bedeutete, würde
niemals für Basen größer als 10 verwendet werden. Siehe die -U Möglichkeit.)

Für Funktionen, -u ist das undefinierte Attribut. Sehen Funktionen oben für die
Folgen davon.

-x Exportattribut. Parameter (oder Funktionen) werden in der Umgebung von . platziert
alle ausgeführten Befehle. Exportierte Funktionen sind noch nicht implementiert.

-Z[n] Nullfüllungsattribut. Wenn nicht kombiniert mit -L, das ist das gleiche wie -R, außer
Zero Padding wird anstelle von Space Padding verwendet. Für ganze Zahlen ist die Zahl
statt der Basis ist gepolstert.

Wenn einer der -i, -L, -l, -R, -U, -u, oder -Z Optionen werden geändert, alle anderen daraus
set werden gelöscht, es sei denn, sie werden auch in derselben Befehlszeile angegeben.

unlimit [-abCcdefHilMmnOPpqrSsTtVvw] [Wert]
Prozessgrenzen anzeigen oder einstellen. Wenn keine Optionen verwendet werden, ist die Dateigrößenbeschränkung (-f) abgestimmt ist, lautet
angenommen. Wert, falls angegeben, kann entweder ein arithmetischer Ausdruck oder das Wort . sein
"unbegrenzt". Die Grenzen wirken sich auf die Shell und alle von der Shell erstellten Prozesse aus
nachdem eine Begrenzung auferlegt wurde. Beachten Sie, dass einige Systeme möglicherweise keine Begrenzungen zulassen
erhöht, sobald sie eingestellt sind. Beachten Sie auch, dass die verfügbaren Arten von Limits system
abhängig – manche Systeme haben nur die -f Grenze.

-a Alle Grenzen anzeigen; es sei denn -H verwendet wird, werden Softlimits angezeigt.

-B n Setzen Sie die Socket-Puffergröße auf n kibibyte.

-C n Setzen Sie die Anzahl der zwischengespeicherten Threads auf n.

-c n Legen Sie eine Größenbeschränkung von . fest n Blöcke von der Größe von Core-Dumps.

-d n Legen Sie eine Größenbeschränkung von . fest n kibibytes von der Größe des Datenbereichs.

-e n Stellen Sie die maximale Freundlichkeit ein auf n.

-f n Legen Sie eine Größenbeschränkung von . fest n Blöcke auf Dateien, die von der Shell und ihrem Kind geschrieben wurden
Prozesse (Dateien beliebiger Größe können gelesen werden).

-H Legen Sie nur den harten Grenzwert fest (standardmäßig werden sowohl harte als auch weiche Grenzwerte festgelegt).

-i n Stellen Sie die Anzahl der anstehenden Signale auf n.

-l n Legen Sie eine Grenze von . fest n kibibytes auf der Menge des gesperrten (verkabelten) physischen Speichers.

-M n Stellen Sie den gesperrten AIO-Speicher auf n kibibyte.

-m n Legen Sie eine Grenze von . fest n kibibytes auf die Menge des verwendeten physischen Speichers.

-n n Legen Sie eine Grenze von . fest n Dateideskriptoren, die gleichzeitig geöffnet werden können.

-O n Stellen Sie die Anzahl der AIO-Vorgänge auf n.

-P n Begrenzen Sie die Anzahl der Threads pro Prozess auf n.

-p n Legen Sie eine Grenze von . fest n Prozesse, die vom Benutzer zu einem beliebigen Zeitpunkt ausgeführt werden können.

-q n Begrenzen Sie die Größe der POSIX-Nachrichtenwarteschlangen auf n Bytes.

-r n Setzen Sie die maximale Echtzeitpriorität auf n.

-S Legen Sie nur den weichen Grenzwert fest (standardmäßig werden sowohl harte als auch weiche Grenzwerte eingestellt).

-s n Legen Sie eine Größenbeschränkung von . fest n kibibytes von der Größe des Stack-Bereichs.

-T n Setzen Sie eine Frist von n echte Sekunden, die von jedem Prozess verwendet werden können.

-t n Setzen Sie eine Frist von n CPU-Sekunden, die im Benutzermodus verbracht werden, werden von jedem verwendet
verarbeiten.

-V n Stellen Sie die Anzahl der Vnode-Monitore auf Haiku auf n.

-v n Legen Sie eine Grenze von . fest n kibibytes auf der Menge des virtuellen Speichers (Adressraum)
benutzt.

-w n Legen Sie eine Grenze von . fest n kibibytes auf die Menge des verwendeten Swap-Speicherplatzes.

So weit wie unlimit betrifft, ist ein Block 512 Byte groß.

umask [-S] [Maske"]
Zeigen Sie die Maske zum Erstellen von Dateiberechtigungen oder umask an oder legen Sie sie fest (siehe umask(2)). Wenn die -S
Option verwendet wird, ist die angezeigte oder eingestellte Maske symbolisch; ansonsten ist es ein Oktal
Anzahl.

Symbolische Masken sind wie die von chmod(1). Wenn sie verwendet werden, beschreiben sie, was
Berechtigungen können zur Verfügung gestellt werden (im Gegensatz zu Oktalmasken, bei denen ein gesetztes Bit bedeutet, dass
das entsprechende Bit ist zu löschen). Zum Beispiel setzt „ug=rwx,o=“ die Maske so
Dateien sind nicht lesbar, beschreibbar oder ausführbar von „anderen“ und sind gleichwertig
(bei den meisten Systemen) auf die Oktalmaske „007“.

Unalias [-adt] [Name ...]
Die Aliase für die angegebenen Namen werden entfernt. Wenn die -a Option wird verwendet, alle Aliase
werden entfernt. Wenn die -t or -d Optionen verwendet werden, werden die angegebenen Operationen ausgeführt
out auf verfolgten oder Verzeichnis-Aliasnamen.

ungesetzt [-fv] Parameter ...
Deaktivieren Sie die benannten Parameter (-v, die Standardeinstellung) oder Funktionen (-f). Mit Parameter[*],
Attribute werden beibehalten, nur Werte werden nicht gesetzt.

Der Exit-Status ist ungleich null, wenn einer der Parameter das schreibgeschützte Attribut hat
setzen, sonst null.

warten [Job ...]
Warten Sie, bis die angegebenen Jobs abgeschlossen sind. Der Austrittsstatus von warten ist das der letzte
angegebener Arbeitsplatz; Wenn der letzte Job durch ein Signal beendet wird, ist der Exit-Status 128 + the
Nummer des Signals (siehe töten -l Exit-Status Oben); wenn der zuletzt angegebene Job dies nicht kann
gefunden werden (weil es nie existierte oder schon fertig war), den Exit-Status von warten
ist 127. Siehe Job Smartgeräte App unten für das Format von Job. warten wird zurückkehren, wenn ein Signal
für die ein Trap eingestellt wurde, oder wenn ein SIGHUP-, SIGINT- oder SIGQUIT-Signal
Ist angekommen.

Wenn keine Jobs angegeben sind, warten wartet auf alle derzeit laufenden Jobs (falls vorhanden) auf
beenden und mit einem Null-Status verlassen. Wenn die Jobüberwachung aktiviert ist, wird der Abschluss
Status von Jobs gedruckt wird (dies ist nicht der Fall, wenn Jobs explizit angegeben sind).

woher [-pv] [Name ...]
Ohne das -v Option, es ist das gleiche wie Befehl -v, außer Aliasse werden nicht gedruckt
als Alias-Befehl. Mit dem -v Option, es ist genau das gleiche wie Befehl -V. in
in jedem Fall die -p Option unterscheidet sich: der Suchpfad ist nicht betroffen in woher, Aber
die Suche ist auf den Pfad beschränkt.

Job Smartgeräte App
Job Control bezieht sich auf die Fähigkeit der Shell, Jobs zu überwachen und zu kontrollieren, die Prozesse oder
Gruppen von Prozessen, die für Befehle oder Pipelines erstellt wurden. Zumindest behält die Schale den Überblick
über den Status der aktuell existierenden Hintergrundjobs (dh asynchronen); Dies
Informationen können mit dem angezeigt werden Jobs & Karriere Befehle. Wenn die Jobsteuerung vollständig aktiviert ist
(unter Verwendung von kompensieren -m or kompensieren -o Monitor), wie bei interaktiven Shells, die Prozesse eines Jobs
werden in eine eigene Prozessgruppe gestellt. Vordergrundjobs können durch Eingabe von suspend . gestoppt werden
Zeichen aus dem Terminal (normalerweise ^Z), Jobs können entweder im Vordergrund oder . neu gestartet werden
Hintergrund mit dem fg und bg Befehle und der Zustand des Terminals wird gespeichert oder wiederhergestellt
wenn ein Vordergrundjob gestoppt bzw. neu gestartet wird.

Beachten Sie, dass nur Befehle, die Prozesse erstellen (z. B. asynchrone Befehle, Subshell
Befehle und nicht eingebaute Befehle ohne Funktion) können gestoppt werden; Befehle wie lesen kann keine
Sein.

Wenn ein Job erstellt wird, wird ihm eine Jobnummer zugewiesen. Für interaktive Shells ist diese Zahl
in „[..]“ gedruckt, gefolgt von den Prozess-IDs der Prozesse im Job, wenn ein
asynchroner Befehl ausgeführt wird. Eine Stelle kann in der genannt werden bg, fg, Jobs & Karriere, töten und warten
Befehle entweder nach der Prozess-ID des letzten Prozesses in der Befehlspipeline (wie in
$! Parameter) oder indem Sie der Jobnummer ein Prozentzeichen ('%') voranstellen. Andere Prozent
Sequenzen können auch verwendet werden, um auf Jobs zu verweisen:

%+ | %% | % Der zuletzt angehaltene Job oder, wenn keine angehaltenen Jobs vorhanden sind, der älteste
laufender Job.

%- Der Job, der der wäre %+ Arbeit, wenn es diese nicht gibt.

%n Der Job mit Jobnummer n.

%?Schnur Der Job mit seinem Befehl, der die Zeichenfolge enthält Schnur (ein Fehler tritt auf, wenn
mehrere Jobs werden abgeglichen).

%Schnur Der Job mit seinem Befehl beginnend mit der Zeichenfolge Schnur (ein Fehler tritt auf, wenn
mehrere Jobs werden abgeglichen).

Wenn ein Job den Status ändert (z. B. ein Hintergrundjob beendet oder ein Vordergrundjob gestoppt wird), wird der
Shell gibt die folgenden Statusinformationen aus:

[Anzahl] Flagge Status Befehl

wo ...

Anzahl ist die Jobnummer des Jobs;

Flagge ist das '+' oder '-' Zeichen, wenn es sich um den Job handelt %+ or %- Job bzw. Space
wenn es keines von beiden ist;

Status zeigt den aktuellen Status des Jobs an und kann sein:

Fertig [Anzahl]
Der Job ist beendet. Anzahl ist der Austrittsstatus des Jobs, der weggelassen wird
wenn der Status null ist.

Wird ausgeführt Der Job wurde weder gestoppt noch beendet (beachten Sie, dass die Ausführung nicht ausgeführt wird)
zwangsläufig CPU-Zeit verbrauchen – der Prozess könnte blockiert werden
Warten auf ein Ereignis).

Gestoppt [Signal]
Der Job wurde von der angegebenen Signal (Wenn kein Signal gegeben wird, wird die
Job wurde von SIGTSTP gestoppt).

Signalbeschreibung [„Core Dumping“]
Der Job wurde durch ein Signal abgebrochen (zB Speicherfehler, Auflegen); benutzen töten -l
für eine Liste mit Signalbeschreibungen. Die Meldung „Core Dumped“ zeigt an
der Prozess hat eine Core-Datei erstellt.

Befehl ist der Befehl, der den Prozess erstellt hat. Wenn mehrere Prozesse in der
Job, jeder Prozess hat eine Zeile, die seinen Befehl und möglicherweise ist es StatusWenn
er unterscheidet sich vom Status des vorherigen Prozesses.

Wenn versucht wird, die Shell zu beenden, während Jobs im gestoppten Zustand vorhanden sind, wird die
Shell warnt den Benutzer, dass Jobs gestoppt werden und wird nicht beendet. Wenn ein weiterer Versuch ist
sofort zum Verlassen der Shell veranlasst, erhalten die gestoppten Jobs ein SIGHUP-Signal und die Shell
Ausgänge. Ebenso, wenn die Nohup Option ist nicht gesetzt und es laufen Jobs, wenn ein Versuch
eine Login-Shell verlassen wird, warnt die Shell den Benutzer und wird nicht beendet. Wenn ein anderer
sofort versucht wird, die Shell zu verlassen, die laufenden Jobs erhalten ein SIGHUP-Signal und
die Schale geht aus.

POSIX Modus
eingeben kompensieren -o POSIX Modus wird verursachen mksch sich stellenweise noch POSIX-konformer zu verhalten
wo die Vorgaben oder Meinungen abweichen. Beachten Sie, dass mksch funktioniert weiterhin mit unsigned
32-Bit-Arithmetik; benutzen lksch wenn Arithmetik auf dem Host lange Datentyp, komplett mit ISO C
Undefiniertes Verhalten, sind erforderlich; beziehen sich auf die lksch(1) Handbuchseite für Details. Die meisten anderen
historisch, AT&T UNIX ksh-kompatible oder meinungsbezogene Unterschiede können deaktiviert werden, indem Sie dies verwenden
Modus; diese sind:

· Die GNU bash E / A-Umleitung &>Datei wird nicht mehr unterstützt.

· Durch E/A-Umleitungen erstellte Dateideskriptoren werden von untergeordneten Prozessen geerbt.

· Zahlen mit einer führenden Ziffer Null werden als Oktal interpretiert.

· Das Echo builtin interpretiert keine Backslashes und unterstützt nur die exakte Option „-n".

· ... (Liste ist unvollständig und kann sich für R53 ändern)

SH Modus
Kompatibilitätsmodus; zur Verwendung mit Legacy-Skripten gedacht, die nicht einfach repariert werden können; das
Änderungen sind wie folgt:

· Die GNU bash E / A-Umleitung &>Datei wird nicht mehr unterstützt.

· Durch E/A-Umleitungen erstellte Dateideskriptoren werden von untergeordneten Prozessen geerbt.

· Das Echo builtin interpretiert keine Backslashes und unterstützt nur die exakte Option „-n".

· ... (Liste ist unvollständig und kann sich für R53 ändern)

Interaktiv Eingabe Linie Bearbeitung
Die Shell unterstützt drei Modi zum Lesen von Befehlszeilen von a tty(4) in einem interaktiven
Sitzung, gesteuert von der Emacs, gmacs und vi Optionen (höchstens eine davon kann eingestellt werden auf
Einmal). Die Standardeinstellung ist Emacs. Bearbeitungsmodi können explizit über die . eingestellt werden kompensieren eingebaut.
Wenn keine dieser Optionen aktiviert ist, liest die Shell Zeilen einfach mit dem normalen tty(4)
Treiber. Wenn die Emacs or gmacs Option gesetzt ist, erlaubt die Shell die emacs-ähnliche Bearbeitung der
Befehl; ähnlich, wenn die vi Option gesetzt ist, erlaubt die Shell eine vi-ähnliche Bearbeitung der
Befehl. Diese Modi werden in den folgenden Abschnitten ausführlich beschrieben.

Ist in diesen Bearbeitungsmodi eine Zeile länger als die Bildschirmbreite (siehe SPALTEN
Parameter) wird in der letzten Spalte ein '>'-, '+'- oder '<'-Zeichen angezeigt, das darauf hinweist, dass
es gibt mehr Zeichen nach, vor und nach oder vor der aktuellen Position,
bzw. Die Zeile wird bei Bedarf horizontal gescrollt.

Abgeschlossene Zeilen werden in den Verlauf verschoben, es sei denn, sie beginnen mit einem IFS-Oktett oder IFS
Leerzeichen oder sind mit der vorherigen Zeile identisch.

Emacs Bearbeitung Modus
Wenn das Emacs Option gesetzt ist, ist die interaktive Bearbeitung der Eingabezeile aktiviert. Achtung: Dieser Modus
unterscheidet sich geringfügig vom Emacs-Modus in der ursprünglichen Korn-Shell. In diesem Modus können verschiedene
Bearbeitungsbefehle (normalerweise an ein oder mehrere Steuerzeichen gebunden) führen zu sofortigen Aktionen
ohne auf einen Zeilenumbruch zu warten. Mehrere Bearbeitungsbefehle sind an eine bestimmte Steuerung gebunden
Zeichen, wenn die Shell aufgerufen wird; diese Bindungen können mit dem geändert werden binden Befehl.

Im Folgenden finden Sie eine Liste der verfügbaren Bearbeitungsbefehle. Jede Beschreibung beginnt mit dem
Name des Befehls, mit Doppelpunkt angehängt; ein [n] (wenn dem Befehl ein a . vorangestellt werden kann
zählen); und alle Tasten, an die der Befehl standardmäßig gebunden ist, geschrieben in der Caret-Notation, zB
das ASCII-ESC-Zeichen wird als ^[ geschrieben. Bei diesen Steuersequenzen wird die Groß-/Kleinschreibung nicht beachtet.
Ein Zählpräfix für einen Befehl wird mit der Sequenz ^[n, Wobei n ist eine Folge von 1
oder mehr Ziffern. Sofern nicht anders angegeben, wird eine Anzahl weggelassen, die standardmäßig auf 1 gesetzt wird.

Beachten Sie, dass das Bearbeiten von Befehlsnamen nur mit dem binden Befehl. Außerdem viele
Bearbeitungsbefehle sind nur bei Terminals mit sichtbarem Cursor sinnvoll. Die Standardbindungen
wurden so gewählt, dass sie den entsprechenden Emacs-Tastenkombinationen ähneln. Die des Benutzers tty(4) Zeichen
(zB ERASE) sind an angemessene Ersatzstoffe gebunden und setzen die Standardbindungen außer Kraft.

abbrechen: ^C, ^G
Brechen Sie den aktuellen Befehl ab, leeren Sie den Zeilenpuffer und setzen Sie den Exit-Zustand auf
unterbrochen.

automatisch einfügen: [n]
Veranlasst einfach, dass das Zeichen als wörtliche Eingabe erscheint. Die meisten gewöhnlichen Charaktere
sind daran gebunden.

Rückwärts-Zeichen: [n] ^B, ^XD, ANSI-CurLeft, PC-CurLeft
Bewegt den Cursor nach hinten n Zeichen.

Rückwärtswort: [n] ^[b, ANSI-Strg-CurLeft, ANSI-Alt-CurLeft
Bewegt den Cursor rückwärts zum Wortanfang; Wörter bestehen aus
alphanumerische Zeichen, Unterstriche ('_') und Dollarzeichen ('$').

Anfang der Geschichte: ^[
Springt zum Anfang des Verlaufs.

Zeilenanfang: ^A, ANSI-Home, PC-Home
Bewegt den Cursor an den Anfang der bearbeiteten Eingabezeile.

Großbuchstaben-Wort: [n] ^[C, ^[c
Großbuchstaben das erste Zeichen im nächsten n Wörter, den Cursor hinter dem Ende lassen
des letzten Wortes.

Clear-Screen: ^[^L
Druckt eine zur Kompilierzeit konfigurierbare Sequenz, um den Bildschirm zu löschen und den Cursor zu positionieren.
zeichnet die gesamte Eingabeaufforderung und die aktuell bearbeitete Eingabezeile neu. Die Standardsequenz
funktioniert für fast alle gängigen Endgeräte.

Kommentar: ^[#
Beginnt die aktuelle Zeile nicht mit einem Kommentarzeichen, wird eines angehängt
Anfang der Zeile und Eingabe der Zeile (als ob die Eingabetaste gedrückt worden wäre);
andernfalls werden die vorhandenen Kommentarzeichen entfernt und der Cursor auf platziert
der Anfang der Zeile.

komplett: ^[^[
Vervollständigt automatisch so viel, wie der Befehlsname oder der Dateiname eindeutig ist
den Cursor enthalten. Wenn der gesamte verbleibende Befehls- oder Dateiname eindeutig ist, a
Leerzeichen wird nach seiner Fertigstellung gedruckt, es sei denn, es handelt sich um einen Verzeichnisnamen
'/' wird angehängt. Wenn kein Befehls- oder Dateiname mit dem aktuellen Teilwort vorhanden ist
als Präfix wird ein Glockenzeichen ausgegeben (normalerweise ertönt ein Piepton).

Komplett-Befehl: ^X^[
Vervollständigt automatisch so viel, wie der Befehlsname mit dem partiellen . eindeutig ist
Wort bis zum Cursor als Präfix, wie im abschließen Befehl oben.

komplette-Datei: ^[^X
Vervollständigt automatisch so viel, wie der Dateiname mit dem partiellen . eindeutig ist
Wort bis zum Cursor als Präfix, wie im abschließen oben beschriebener Befehl.

Gesamtliste: ^I, ^[=
Vervollständigen Sie so viel wie möglich des aktuellen Wortes und listen Sie die möglichen auf
Ergänzungen dafür. Wenn nur eine Vervollständigung möglich ist, matchen Sie wie in der abschließen
Befehl oben. Beachten Sie, dass ^I normalerweise von der TAB-Taste (Tabulator) generiert wird.

delete-char-backward: [n] LÖSCHEN, ^?, ^H
Löscht n Zeichen vor dem Cursor.

delete-char-forward: [n] ANSI-Entf, PC-Entf
Löscht n Zeichen nach dem Cursor.

lösche-wort-rückwärts: [n] WERASE, ^[^?, ^[^H, ^[h
Löscht n Wörter vor dem Cursor.

Löschen-Wort-Vorwärts: [n] ^[d
Löscht Zeichen nach dem Cursor bis zum Ende von n Worte.

Abwärtsgeschichte: [n] ^N, ^XB, ANSI-CurDown, PC-CurDown
Scrollt den Verlaufspuffer vorwärts n Linien (später). Jede Eingabezeile ursprünglich
beginnt kurz nach dem letzten Eintrag im Verlaufspuffer, also Geschichte ist nicht
nützlich bis entweder Suchverlauf, Suchverlauf-up or Up-Geschichte wurde
durchgeführt.

Kleinbuchstaben-Wort: [n] ^[L, ^[l
Kleinbuchstaben als nächstes n Worte.

Bearbeitungszeile: [n] ^Xe
Zeile bearbeiten n oder die aktuelle Zeile, falls nicht angegeben, interaktiv. Die tatsächliche
ausgeführter Befehl ist fc -e ${VISUAL:-${EDITOR:-vi}} n.

Ende der Geschichte: ^[>
Springt zum Ende des Verlaufs.

Zeilenende: ^E, ANSI-Ende, PC-Ende
Bewegt den Cursor an das Ende der Eingabezeile.

ot: ^_
Fungiert als Dateiende; Dies ist nützlich, da die Eingabe im Bearbeitungsmodus den normalen deaktiviert.
Kanonisierung des Terminaleingangs.

eot-oder-löschen: [n] ^D
Fungiert als EOT wenn allein auf einer Linie; verhält sich sonst wie delete-char-forward.

Fehler: (nicht gebunden)
Fehler (klingeln).

Austausch-Punkt-und-Markierung: ^X^X
Platziert den Cursor an der Stelle, an der sich die Markierung befindet, und setzt die Markierung an der Stelle, an der sich der Cursor befand.

Expand-Datei: ^[*
Fügt ein '*' an das aktuelle Wort an und ersetzt das Wort durch das Ergebnis von
Durchführen von Dateiglobbing für das Wort. Wenn keine Dateien dem Muster entsprechen, ist die Glocke
Sprosse.

Vorwärtszeichen: [n] ^F, ^XC, ANSI-CurRight, PC-CurRight
Bewegt den Cursor nach vorne n Zeichen.

Vorwärtswort: [n] ^[f, ANSI-Strg-CurRight, ANSI-Alt-CurRight
Bewegt den Cursor vorwärts zum Ende des ntes Wort.

goto-Geschichte: [n] ^[g
Geht zur Verlaufsnummer n.

Kill-Line: KILL
Löscht die gesamte Eingabezeile.

Kill-Region: ^W
Löscht die Eingabe zwischen Cursor und Markierung.

tötet zu eol: [n] ^K
Löscht die Eingabe vom Cursor bis zum Zeilenende, wenn n ist nicht angegeben;
löscht ansonsten Zeichen zwischen Cursor und Spalte n.

Liste: ^[?
Druckt eine sortierte, in Spalten gegliederte Liste von Befehlsnamen oder Dateinamen (sofern vorhanden), die
vervollständigen Sie das Teilwort, das den Cursor enthält. Verzeichnisnamen haben '/' angehängt
zu ihnen.

Listenbefehl: ^X?
Druckt eine sortierte, in Spalten gegliederte Liste von Befehlsnamen (sofern vorhanden), die den Befehl vervollständigen können
Teilwort, das den Cursor enthält.

Listendatei: ^X^Y
Druckt eine sortierte, in Spalten gegliederte Liste von Dateinamen (sofern vorhanden), die den
Teilwort, das den Cursor enthält. Dateitypindikatoren werden wie beschrieben angehängt
für Liste zu teilen.

Zeilenumbruch: ^J, ^M
Bewirkt, dass die aktuelle Eingabezeile von der Shell verarbeitet wird. Der aktuelle Cursor
Position kann irgendwo auf der Linie sein.

Zeilenumbruch-und-Weiter: ^O
Bewirkt, dass die aktuelle Eingabezeile von der Shell verarbeitet wird und die nächste Zeile von
History wird zur aktuellen Zeile. Dies ist nur sinnvoll nach einem Up-Geschichte,
Suchverlauf or Suchverlauf-up.

keine Operation: BEENDEN
Das tut nichts.

Präfix-1: ^[
Führt eine 2-Zeichen-Befehlssequenz ein.

Präfix-2: ^X, ^[[, ^[O
Führt eine 2-Zeichen-Befehlssequenz ein.

vorheriges-hist-Wort: [n] ^[., ^[_
Das letzte Wort oder, falls vorhanden, das nWort (nullbasiert) des vorherigen (bei wiederholtem)
Ausführung, vorletzter, drittletzter usw.) Befehl wird am Cursor eingefügt. Gebrauch von
Dieser Bearbeitungsbefehl löscht die Markierung.

Zitat: ^^, ^V
Das folgende Zeichen wird wörtlich genommen und nicht als Bearbeitungsbefehl.

neu zeichnen: ^L
Druckt die letzte Zeile des Prompt-Strings und die aktuelle Eingabezeile neu
Linie.

Suchzeichen-rückwärts: [n] ^[^]
In der aktuellen Zeile rückwärts suchen nach dem nth Vorkommen des nächsten Zeichens
getippt.

Suchzeichen-vorwärts: [n] ^]
In der aktuellen Zeile vorwärts suchen nach dem nth Vorkommen des nächsten Zeichens
getippt.

Suchverlauf: ^R
Wechseln Sie in den inkrementellen Suchmodus. Die interne Historienliste wird rückwärts durchsucht nach
Befehle, die der Eingabe entsprechen. Ein anfängliches '^' in der Suchzeichenfolge verankert das
Suche. Die Escape-Taste verlässt den Suchmodus. Andere Befehle, einschließlich Sequenzen
der Flucht als Präfix-1 gefolgt von einem Präfix-1 or Präfix-2 Taste wird ausgeführt nach
Suchmodus verlassen. Der abbrechen (^G) Befehl wird die Eingabezeile vor dem wiederherstellen
Suche gestartet. Aufeinanderfolgend Suchverlauf Befehle weiter rückwärts suchen zu
das nächste vorherige Auftreten des Musters. Der Historienpuffer behält nur a
endliche Anzahl von Zeilen; die ältesten werden nach Bedarf verworfen.

Suchverlauf nach oben: ANSI-PgUp, PC-PgUp
Durchsuchen Sie den Verlaufspuffer rückwärts nach Befehlen, deren Anfang mit dem
Teil der Eingabezeile vor dem Cursor. Bei Verwendung in einer leeren Zeile hat dies
der gleiche effekt wie Up-Geschichte.

Suchverlauf nach unten: ANSI-PgDn, PC-PgDn
Durchsuchen Sie den Verlaufspuffer vorwärts nach Befehlen, deren Anfang mit dem
Teil der Eingabezeile vor dem Cursor. Bei Verwendung in einer leeren Zeile hat dies
der gleiche effekt wie Geschichte. Dies ist nur sinnvoll nach einem Up-Geschichte,
Suchverlauf or Suchverlauf-up.

set-mark-Befehl: ^[
Setzen Sie die Markierung an der Cursorposition.

Transponieren-Zeichen: ^T
Ob am Zeilenende oder wenn die gmacs Option gesetzt ist, vertauscht dies die beiden
vorherige Zeichen; andernfalls tauscht es die vorherigen und aktuellen Zeichen aus und
bewegt den Cursor um ein Zeichen nach rechts.

Vorgeschichte: [n] ^P, ^XA, ANSI-CurUp, PC-CurUp
Scrollt den Verlaufspuffer rückwärts n Zeilen (früher).

Großbuchstaben-Wort: [n] ^[U, ^[u
Großbuchstaben das nächste n Worte.

Version: ^[^V
Anzeige der Version von mksch. Der aktuelle Editierpuffer wird wiederhergestellt, sobald eine Taste
wird gedrückt. Der wiederherstellende Tastendruck wird verarbeitet, es sei denn, es handelt sich um ein Leerzeichen.

reißer: ^Y
Fügt die zuletzt gelöschte Textzeichenfolge an der aktuellen Cursorposition ein.

reißer: ^[y
Unmittelbar nach a Ruck, ersetzt die eingefügte Textzeichenfolge durch die nächste zuvor
getötete Textzeichenfolge.

Vi Bearbeitung Modus
Hinweis: Der vi-Befehlszeilen-Bearbeitungsmodus ist verwaist, aber immer noch funktionsfähig. Es ist 8-Bit-sauber
unterstützt aber ausdrücklich weder UTF-8 noch MBCS.

Der vi-Befehlszeileneditor in mksch hat im Grunde die gleichen Befehle wie die vi(1) Herausgeber mit
die folgenden Ausnahmen:

· Sie beginnen im Einfügemodus.

· Es gibt Dateinamen- und Befehlsvervollständigungsbefehle: =, \, *, ^X, ^E, ^F und,
wahlweise, und .

· Das _ Befehl ist anders (in mksch, es ist der letzte Argumentbefehl; in vi(1) es geht
zum Anfang der aktuellen Zeile).

· Das / und G Befehle bewegen sich in die entgegengesetzte Richtung zum j Befehl.

· Befehle, die in einem einzeiligen Editor keinen Sinn machen, sind nicht verfügbar (zB screen
Bewegungsbefehle und ex(1)-Stil Doppelpunkt (:) Befehle).

Like vi(1) gibt es zwei Modi: den Modus "Einfügen" und den Modus "Befehl". Im Einfügemodus sind die meisten
Zeichen werden während der Eingabe einfach an der aktuellen Cursorposition in den Puffer geschrieben;
einige Zeichen werden jedoch speziell behandelt. Insbesondere die folgenden Zeichen sind
aus aktuellem entnommen tty(4) Einstellungen (siehe stty(1)) und haben ihre übliche Bedeutung (Normalwerte
stehen in Klammern): kill (^U), delete (^?), wasase (^W), eof (^D), intr (^C) und quit (^\).
Zusätzlich zu den oben genannten werden die folgenden Zeichen auch beim Einfügen besonders behandelt
Modus:

^E Aufzählung von Befehlen und Dateinamen (siehe unten).

^F Befehls- und Dateinamenvervollständigung (siehe unten). Bei zweimaliger Verwendung hintereinander wird die Liste der
mögliche Vervollständigungen werden angezeigt; bei einer dritten Verwendung wird die Vervollständigung rückgängig gemacht.

^H Löscht das vorherige Zeichen.

^J | ^M Zeilenende. Die aktuelle Zeile wird von der Shell gelesen, geparst und ausgeführt.

^V Wörtlich weiter. Das nächste eingegebene Zeichen wird nicht besonders behandelt (kann verwendet werden, um
fügen Sie die hier beschriebenen Zeichen ein).

^X Befehls- und Dateinamenerweiterung (siehe unten).

Versetzt den Editor in den Befehlsmodus (siehe unten).

Optionaler Dateiname und Befehlsvervollständigung (siehe ^F oben), aktiviert mit kompensieren -o
vi-Tabcomplete.

Im Befehlsmodus wird jedes Zeichen als Befehl interpretiert. Charaktere, die dies nicht tun
entsprechen Befehlen, sind unzulässige Befehlskombinationen oder sind Befehle, die nicht sein können
durchgeführt, verursachen alle Pieptöne. In den folgenden Befehlsbeschreibungen wird ein [n] zeigt die
dem Befehl kann eine Zahl vorangestellt werden (zB 10l bewegt sich 10 Zeichen nach rechts); wenn keine nummer
Präfix verwendet wird, n wird als 1 angenommen, sofern nicht anders angegeben. Der Begriff „aktuell“
position“ bezieht sich auf die Position zwischen dem Cursor und dem Zeichen vor dem Cursor.
Ein „Wort“ ist eine Folge von Buchstaben, Ziffern und Unterstrichen oder eine Folge von Nicht-
Buchstaben, keine Ziffern, kein Unterstrich und keine Leerzeichen (zB „ab2*&^“ enthält zwei
Wörter) und ein „großes Wort“ ist eine Folge von Zeichen, die keine Leerzeichen sind.

Spezial mksch vi-Befehle:

Die folgenden Befehle sind nicht im normalen vi-Dateieditor enthalten oder unterscheiden sich davon:

[n]_ Fügen Sie ein Leerzeichen gefolgt von dem ein ngroßes Wort aus dem letzten Befehl in der Geschichte
an der aktuellen Position und in den Einfügemodus wechseln; wenn n ist nicht angegeben, der letzte
Wort eingefügt wird.

# Kommentarzeichen ('#') am Anfang der aktuellen Zeile einfügen und zurückkehren
die Linie zur Schale (entspricht Ich#^J).

[n]g Gefällt mir G, außer wenn n nicht angegeben ist, geht es zum zuletzt erinnerten
Linie.

[n]v Zeile bearbeiten n Verwendung der vi(1) Herausgeber; wenn n ist nicht angegeben, die aktuelle Zeile ist
bearbeitet. Der tatsächlich ausgeführte Befehl ist fc -e ${VISUAL:-${EDITOR:-vi}} n.

* und ^X Befehls- oder Dateinamenerweiterung wird auf das aktuelle große Wort angewendet (mit einem
'*' angehängt, wenn das Wort keine Dateiglobbing-Zeichen enthält) – das große Wort ist
durch die resultierenden Wörter ersetzt. Wenn das aktuelle Big-Word das erste auf der ist
Zeile oder folgt einem der Zeichen ';', '|', '&', '(', oder ')' und nicht
einen Schrägstrich ('/') enthalten, dann wird die Befehlserweiterung durchgeführt; ansonsten Dateiname
Erweiterung erfolgt. Die Befehlserweiterung wird das große Wort gegen alle angleichen
Aliase, Funktionen und integrierte Befehle sowie alle gefundenen ausführbaren Dateien
indem Sie die Verzeichnisse im Parameter PATH durchsuchen. Dateinamenerweiterung stimmt überein
das große Wort gegen die Dateien im aktuellen Verzeichnis. Nach der Erweiterung wird die
Der Cursor wird direkt hinter dem letzten Wort platziert und der Editor befindet sich im Einfügemodus.

[n]\, [n]^F, [n] , und [n]
Vervollständigung des Befehls-/Dateinamens. Ersetze das aktuelle große Wort durch das längste
eindeutige Übereinstimmung, die nach der Ausführung der Befehls- und Dateinamenerweiterung erhalten wurde.
wird nur erkannt, wenn die vi-Tabcomplete Option ist gesetzt, während ist nur
erkannt, wenn die vi-escvollständig Option ist gesetzt (siehe kompensieren -o). Wenn n angegeben,
nDie mögliche Vervollständigung ist ausgewählt (wie vom Befehls-/Dateinamen gemeldet
Aufzählungsbefehl).

= und ^E Aufzählung von Befehls-/Dateinamen. Listen Sie alle Befehle oder Dateien auf, die mit dem übereinstimmen
aktuelles großes Wort.

^V Anzeige der Version von mksch. Der aktuelle Editierpuffer wird wiederhergestellt, sobald a
Taste gedrückt wird. Der wiederherstellende Tastendruck wird ignoriert.

@c Makro-Erweiterung. Führen Sie die im Alias ​​gefundenen Befehle aus c.

Bewegungsbefehle innerhalb der Linie:

[n]Hand [n]^H
Geh nach links n Zeichen.

[n]Land [n]
Nach rechts bewegen n Zeichen.

0 Gehe zu Spalte 0.

^ Gehe zum ersten Zeichen, das kein Leerzeichen ist.

[n]| Zur Spalte verschieben n.

$ Zum letzten Zeichen wechseln.

[n]b Zurück n Worte.

[n]B Zurück n große Worte.

[n]e Gehe vorwärts zum Ende des Wortes, n Zeiten.

[n]E Gehe weiter zum Ende des großen Wortes, n Zeiten.

[n]w Vorwärts gehen n Worte.

[n]W Vorwärts gehen n große Worte.

% Finde einen Treffer. Der Editor freut sich auf die nächste Klammer, Klammer oder Klammer
und bewegt dann den Cursor auf die entsprechende Klammer, Klammer oder Klammer.

[n]fc Weiter zum nth Vorkommen des Zeichens c.

[n]Fc Zurück zum nth Vorkommen des Zeichens c.

[n]tc Gehen Sie weiter bis kurz vor dem nth Vorkommen des Zeichens c.

[n]Tc Zurück bis kurz vor dem nth Vorkommen des Zeichens c.

[n]; Wiederholt das letzte f, F, t, oder T Befehl.

[n], Wiederholt den letzten f, F, t, oder T Befehl, bewegt sich aber in die entgegengesetzte Richtung.

Bewegungsbefehle zwischen Zeilen:

[n]J, [n]+ und [n]^N
Gehe zum nnächste Zeile in der Historie.

[n]k, [n]-, und [n]^S
Gehe zum nvorherige Zeile in der Historie.

[n]G Gehe zu Zeile n in der Geschichte; wenn n nicht angegeben, die Nummer des ersten
erinnerte Zeile verwendet wird.

[n]g Gefällt mir G, außer wenn n nicht angegeben ist, geht es in die zuletzt gemerkte Zeile.

[n]/Schnur
Durchsuchen Sie den Verlauf rückwärts nach dem nZeile mit Schnur; ob Schnur
beginnt mit '^', der Rest des Strings muss am Anfang des Verlaufs stehen
Linie, damit es übereinstimmt.

[n]?Schnur
Das gleiche wie /, außer dass die Historie vorwärts durchsucht wird.

[n]n Suche nach dem nth Vorkommen des letzten Suchstrings; die richtung der suche
ist das gleiche wie bei der letzten Suche.

[n]N Suche nach dem nth Vorkommen des letzten Suchstrings; die richtung der suche
ist das Gegenteil der letzten Suche.

ANSI-CurUp, PC-PgUp
Übernehmen Sie die Zeichen vom Zeilenanfang bis zur aktuellen Cursorposition als
Suchzeichenfolge und führen Sie eine Rückwärtssuche nach Zeilen durch, die damit beginnen
Schnur; halten Sie die Cursorposition. Dies funktioniert nur im Einfügemodus und behält es bei
aktiviert.

Befehle bearbeiten

[n]a Text anhängen n mal; geht direkt nach der aktuellen Position in den Einfügemodus. Der
append wird nur repliziert, wenn der Befehlsmodus erneut aufgerufen wird, dh wird genutzt.

[n]A wie a, außer es wird am Ende der Zeile angehängt.

[n]i Text einfügen n mal; wechselt an der aktuellen Position in den Einfügemodus. Die Einfügung
wird nur repliziert, wenn der Befehlsmodus erneut aufgerufen wird, dh wird genutzt.

[n]Ich genauso wie i, außer dass die Einfügung kurz vor dem ersten nicht leeren Zeichen erfolgt.

[n]s Ersetze den nächsten n Zeichen (dh lösche die Zeichen und gehe ins Einfügen
Modus).

S Ganze Zeile ersetzen. Alle Zeichen vom ersten nicht leeren Zeichen bis zum Ende
der Zeile werden gelöscht und der Einfügemodus wird aktiviert.

[n]cmove-cmd
Wechsel von der aktuellen Position zu der Position, die sich aus . ergibt n move-cmds (dh
lösche die angegebene Region und gehe in den Einfügemodus); wenn move-cmd is cDie Linie
beginnend mit dem ersten nicht-leeren Zeichen wird geändert.

C Von der aktuellen Position zum Zeilenende wechseln (dh bis zum Zeilenende löschen)
die Zeile und gehen Sie in den Einfügemodus).

[n]x Nächstes löschen n Zeichen.

[n]X Vorheriges löschen n Zeichen.

D Bis zum Zeilenende löschen.

[n]dmove-cmd
Von der aktuellen Position zu der Position löschen, die sich aus . ergibt n move-cmds;
move-cmd ist ein Bewegungsbefehl (siehe oben) oder d, in diesem Fall ist die aktuelle Zeile
gelöscht.

[n]rc Ersetze den nächsten n Charaktere mit dem Charakter c.

[n]R Ersetzen. Wechseln Sie in den Einfügemodus, überschreiben Sie jedoch vorhandene Zeichen, anstatt sie einzufügen
vor bestehenden Charakteren. Der Austausch wird wiederholt n Zeiten.

[n]~ Ändere die Groß-/Kleinschreibung des nächsten n Zeichen.

[n]ymove-cmd
Ziehen Sie von der aktuellen Position zu der Position, die sich aus . ergibt n move-cmds in die
reißpuffer; wenn move-cmd is y, die ganze Leitung ist zerrissen.

Y Ziehen Sie von der aktuellen Position bis zum Ende der Zeile.

[n]p Füge den Inhalt des Yank-Puffers direkt nach der aktuellen Position ein, n Zeiten.

[n]P Wie p, außer dass der Puffer an der aktuellen Position eingefügt wird.

Verschiedene vi-Befehle

^J und ^M
Die aktuelle Zeile wird von der Shell gelesen, geparst und ausgeführt.

^L und ^R
Zeichnen Sie die aktuelle Zeile neu.

[n]. Wiederholen Sie den letzten Bearbeitungsbefehl n Zeiten.

u Macht den letzten Editierbefehl rückgängig.

U Macht alle Änderungen rückgängig, die an der aktuellen Zeile vorgenommen wurden.

PC Home-, End-, Del- und Cursor-Tasten
Sie bewegen sich wie erwartet, sowohl im Einfüge- als auch im Befehlsmodus.

intr und verlassen
Die Terminalzeichen unterbrechen und beenden bewirken, dass die aktuelle Zeile gelöscht wird und
eine neue Eingabeaufforderung gedruckt werden.

Verwenden Sie mksh online mit den onworks.net-Diensten


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

  • 1
    Alt-F
    Alt-F
    Alt-F bietet eine kostenlose und Open Source
    alternative Firmware für den DLINK
    DNS-320/320L/321/323/325/327L and
    DNR-322L. Alt-F hat Samba und NFS;
    unterstützt ext2/3/4...
    Laden Sie Alt-F herunter
  • 2
    usm
    usm
    Usm ist ein einheitliches Slackware-Paket
    Manager, der automatisch behandelt
    Abhängigkeitsauflösung. Es vereint
    verschiedene Paket-Repositories einschließlich
    Slackware, locker, p...
    usm herunterladen
  • 3
    Chart.js
    Chart.js
    Chart.js ist eine Javascript-Bibliothek, die
    erlaubt Designern und Entwicklern zu zeichnen
    alle Arten von Diagrammen mit HTML5
    Canvas-Element. Chart js bietet eine großartige
    Anordnung ...
    Laden Sie Chart.js herunter
  • 4
    iReport-Designer für JasperReports
    iReport-Designer für JasperReports
    HINWEIS: Unterstützung für iReport/Jaspersoft Studio
    Ankündigung: Ab Version 5.5.0,
    Jaspersoft Studio wird der offizielle sein
    Design-Client für JasperReports. ich berichte
    werden...
    Laden Sie iReport-Designer für JasperReports herunter
  • 5
    PostInstallerF
    PostInstallerF
    PostInstallerF installiert alle
    Software, die Fedora Linux und andere
    beinhaltet nicht standardmäßig after
    Fedora zum ersten Mal ausführen. Es ist
    einfach für...
    Laden Sie PostInstallerF herunter
  • 6
    strace
    strace
    Das Strace-Projekt wurde verschoben
    https://strace.io. strace is a
    Diagnose, Debugging und Anleitung
    Userspace-Tracer für Linux. Es ist benutzt
    überwachen ...
    strace herunterladen
  • Mehr »

Linux-Befehle

Ad