Dies ist der Befehl posh, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
posh – Richtlinienkonforme gewöhnliche Shell
ZUSAMMENFASSUNG
vornehm [+-aCefilnuvx] [+-o ganz ohne irgendetwas tun oder drücken zu müssen.]
[[-C Befehlszeichenfolge [Befehlsname] | -s | Datei ] [Argument...]]
BESCHREIBUNG
vornehm ist eine Neuimplementierung der Bourne-Shell, einem Befehlsinterpreter für beide interaktiven
und Skriptverwendung.
Schale Startup
Die folgenden Optionen können nur in der Befehlszeile angegeben werden:
-c Befehlszeichenfolge
Die Shell führt die darin enthaltenen Befehle aus Befehlszeichenfolge
-i
interaktiver Modus – siehe unten
-l
Login-Shell – siehe unten, interaktiver Modus – siehe unten
-s
die Shell liest Befehle von der Standardeingabe; Alle Argumente, die keine Optionen sind, sind positionell
Parameter
Zusätzlich zu den oben genannten Optionen sind die in der kompensieren Ein eingebauter Befehl kann auch sein
Wird auf der Befehlszeile verwendet.
Wenn weder die -c noch das -s Optionen angegeben werden, das erste Nicht-Optionsargument
Gibt den Namen einer Datei an, aus der die Shell Befehle liest. wenn es keine Nicht-Option gibt
Argumente liest die Shell Befehle aus der Standardeingabe. Der Name der Shell (dhden
Inhalt der $0) Parameter wird wie folgt bestimmt: wenn der -c Option wird verwendet und dort
ist ein Nicht-Optionsargument und wird als Name verwendet; wenn Befehle aus einer Datei gelesen werden,
als Name wird die Datei verwendet; andernfalls der Name, mit dem die Shell aufgerufen wurde (dh, argv[0])
wird eingesetzt.
Eine Schale ist interaktive wenn die -i Option verwendet wird oder wenn sowohl Standardeingabe als auch Standard
Fehler sind einem TTY beigefügt. Bei einer interaktiven Shell ist die Jobsteuerung aktiviert (falls verfügbar).
ignoriert die Signale INT, QUIT und TERM und gibt Eingabeaufforderungen aus, bevor die Eingabe gelesen wird (siehe PS1
und PS2 Parameter).
Eine Schale ist privilegiert wenn die -p Option verwendet wird oder wenn die echte Benutzer-ID oder Gruppen-ID dies nicht tut
mit der effektiven Benutzer-ID oder Gruppen-ID übereinstimmen (siehe getuid(2) getgid(2)). Eine privilegierte Hülle
verarbeitet $HOME/.profile nicht. Stattdessen wird die Datei /etc/suid_profile verarbeitet. Clearing
Die Option „privilegiert“ bewirkt, dass die Shell ihre effektive Benutzer-ID (Gruppen-ID) auf ihre reale setzt
Benutzer-ID (Gruppen-ID).
Wenn der Basisname des Namens die Shell aufgerufen wird mit (dh, argv[0]) beginnt mit - oder wenn
die -l Wenn die Option verwendet wird, wird davon ausgegangen, dass es sich bei der Shell um eine Login-Shell handelt und die Shell liest und
führt den Inhalt von aus / etc / profile und $HOME/.profile, falls sie vorhanden und lesbar sind.
Der Exit-Status der Shell ist 127, wenn die Befehlsdatei in der Befehlszeile angegeben wurde
konnte nicht geöffnet werden oder ist ungleich Null, wenn während der Ausführung von ein schwerwiegender Syntaxfehler aufgetreten ist
ein Skript. Sofern keine schwerwiegenden Fehler vorliegen, entspricht der Exit-Status dem des letzten Befehls
ausgeführt, oder Null, wenn kein Befehl ausgeführt wird.
Befehl Syntax
Die Shell beginnt mit dem Parsen ihrer Eingabe, indem sie sie in Wörter zerlegt. Wörter, die Sequenzen sind
Anzahl der Zeichen werden durch nicht in Anführungszeichen stehende Leerzeichen (Leerzeichen, Tabulator und Zeilenumbruch) begrenzt.
oder Metazeichen (<, >, |, ;, &, ( und )). Abgesehen von der Trennung von Wörtern, Leerzeichen und Tabulatoren
werden ignoriert, während Zeilenumbrüche normalerweise Befehle begrenzen. Die Metazeichen werden in verwendet
Erstellen der folgenden Token: <, <&, <<, >, >&, >> usw. werden zur Angabe von Umleitungen verwendet
(siehe Eingabe-/Ausgabeumleitung unten); | wird zum Erstellen von Pipelines verwendet; ; dient der Trennung
Befehle; & wird zum Erstellen asynchroner Pipelines verwendet; && und || werden zur Angabe verwendet
bedingte Ausführung; ;; wird in case-Anweisungen verwendet; und schließlich (...) sind es gewohnt
Unterschalen erstellen.
Leerzeichen und Metazeichen können mithilfe eines Backslashs () einzeln in Anführungszeichen gesetzt werden.\) oder in
Gruppen mit Double (") oder Single (') Zitate. Beachten Sie, dass die folgenden Zeichen ebenfalls vorhanden sind
werden von der Shell speziell behandelt und müssen zitiert werden, wenn sie sich selbst darstellen sollen: \,
", ', #, $, `, ~, {, }, *, ? und [. Die ersten drei davon sind die oben genannten
Anführungszeichen (siehe Zitieren unten); #, wenn es am Anfang eines Wortes verwendet wird, leitet es ein
ein Kommentar – alles danach # bis zur nächsten neuen Zeile wird ignoriert; $ wird verwendet,
Parameter-, Befehls- und arithmetische Substitutionen einführen (siehe Substitution unten); `
führt eine Befehlssubstitution im alten Stil ein (siehe Substitution unten); ~ beginnt a
Verzeichniserweiterung (siehe Tilde-Erweiterung unten); { und } abgrenzen csh(1) Stilwechsel
(siehe Klammererweiterung unten); und schlussendlich, *, ? und [ werden bei der Generierung von Dateinamen verwendet
(siehe Dateinamenmuster 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), Eingabe-/Ausgabeumleitungen (siehe Eingabe-/Ausgabeumleitungen unten) und Befehl
Wörter; Die einzige Einschränkung besteht darin, dass Parameterzuweisungen vor Befehlswörtern stehen.
Die Befehlswörter, sofern vorhanden, definieren den auszuführenden Befehl und seine Argumente.
Der Befehl kann ein in der Shell integrierter Befehl, eine Funktion oder ein Befehl sein extern Befehl, dh herunter ,ein
separate ausführbare Datei, die über die Datei lokalisiert wird PATH Parameter (siehe Befehlsausführung
unten). Beachten Sie, dass alle Befehlskonstrukte eine haben wunsch Status: für externe Befehle dies
hängt mit dem Status zusammen, der von zurückgegeben wird warten(2) (Wenn der Befehl nicht gefunden werden konnte, erfolgt der Exit
Status ist 127, wenn es nicht ausgeführt werden konnte, ist der Exit-Status 126); der Exit-Status von
andere Befehlskonstrukte (integrierte Befehle, Funktionen, zusammengesetzte Befehle, Pipelines,
Listen, usw.) sind alle klar definiert und werden dort beschrieben, wo das Konstrukt beschrieben wird. Der
Der Exit-Status eines Befehls, der nur aus Parameterzuweisungen besteht, ist der des letzten
Befehlsersetzung, die während der Parametrierung durchgeführt wurde, oder Null, wenn es keine gab
Befehlsersetzungen.
Mithilfe von können Befehle miteinander verkettet werden | Token zu bilden Pipelines, Bei dem die
Standardausgabe jedes Befehls, aber der letzte wird weitergeleitet (siehe Rohr(2)) an den Standardeingang an
des folgenden Befehls. Der Exit-Status einer Pipeline ist der ihres letzten Befehls. A
Der Pipeline kann das Präfix vorangestellt werden ! reserviertes Wort, das den Exit-Status des bewirkt
Pipeline, die logisch ergänzt werden soll: Wenn der ursprüngliche Status 0 war, wird die Pipeline ergänzt
Der Status ist 1, und wenn der ursprüngliche Status nicht 0 war, wird der ergänzte Status verwendet
Sei 0.
Listen von Befehlen können erstellt werden, indem Pipelines durch eines der folgenden Token getrennt werden:
&&, ||, &, |& und ;. Die ersten beiden dienen der bedingten Ausführung: cmd1 && cmd2 wird ausgeführt
cmd2 nur wenn der Exit-Status von cmd1 ist Null; || ist das Gegenteil – cmd2 wird nur ausgeführt
wenn der Exit-Status von cmd1 ist nicht Null. && und || haben den gleichen Vorrang, der höher ist
Als das von &, |& und ;, die ebenfalls den gleichen Vorrang haben. Der & Token verursacht die
vorangehender Befehl, der asynchron ausgeführt werden soll, d. h. die Shell startet den Befehl,
wartet aber nicht, bis der Vorgang abgeschlossen ist (die Shell verfolgt den Status von
asynchrone Befehle – siehe Jobkontrolle unten). Wenn ein asynchroner Befehl gestartet wird
wenn die Jobkontrolle deaktiviert ist (dh, in den meisten Skripten), wird der Befehl mit Signalen gestartet
INT und QUIT werden ignoriert und die Eingabe wird von /dev/null umgeleitet (jedoch Umleitungen).
Die im asynchronen Befehl angegebenen Werte haben Vorrang). Beachten Sie, dass ein Befehl folgen muss
die && und || Operatoren, während ein Befehl nicht folgen muss &, |& und ;. Der Austrittsstatus von a
Liste ist diejenige des zuletzt ausgeführten Befehls, mit Ausnahme von asynchronen Listen, z
dessen Exit-Status 0 ist.
Zusammengesetzte Befehle werden mit den folgenden reservierten Wörtern erstellt – diese Wörter 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):
Häuser sonst
Mach esac, wenn die Zeit [[
fertig bis {
elif für select while }
Hinweis: Einige Shells (aber nicht diese) führen Kontrollstrukturbefehle in einer Subshell aus, wenn
Einer oder mehrere ihrer Dateideskriptoren werden umgeleitet, sodass sich jede Umgebung darin ändert
sie könnten scheitern. Um tragbar zu sein, muss das exec Stattdessen sollte die Anweisung verwendet werden, um die Datei umzuleiten
Deskriptoren vor der Kontrollstruktur.
In den folgenden zusammengesetzten Befehlsbeschreibungen, Befehlslisten (bezeichnet als Liste) das sind
gefolgt von reservierten Wörtern müssen syntaktisch mit einem Semikolon, einem Zeilenumbruch oder einem () enden
richtig) reserviertes Wort. Zum Beispiel,
{ Echo foo; Echo Bar; }
{ Echo foo; Echo Bar }
{ { Echo foo; Echo Bar; } } sind alle gültig, aber
{ Echo foo; Echo Bar } ist nicht.
( 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, jedoch nicht in einer Subshell. Beachten Sie, dass { und } sind
reservierte Wörter, keine Metazeichen.
Häuser Wort in [[(] Anleitungen [| Anleitungen] ... ... ) Liste ;; ] ... ... esac
Die Häuser Aussage versucht zu entsprechen Wort gegen die angegebene AnleitungenS; 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 bzgl. . und / werden fallen gelassen. Beachten Sie, dass alle nicht zitierten Leerzeichen vor und
nachdem ein Muster entfernt wurde; Jedes Leerzeichen mit einem Muster muss in Anführungszeichen gesetzt werden. Sowohl das Wort
und die Muster unterliegen der Parameter-, Befehls- und arithmetischen Substitution als
sowie Tilde-Ersetzung. Aus historischen Gründen können offene und geschlossene Zahnspangen verwendet werden
statt in und esac (z.B, Häuser $ foo { *) Echo Bar; }). Der Exit-Status von a Häuser
Anweisung ist die des ausgeführten Liste; wenn nein Liste ausgeführt wird, lautet der Exit-Status
Null.
für Name [ in Wort ... Begriff ] do Liste erledigt
woher Begriff ist entweder ein Zeilenumbruch oder ein ;. Für jedes Wort in der angegebenen Wortliste die
Parameter Name ist auf das Wort gesetzt und Liste ausgeführt wird. Wenn in wird nicht zur Angabe von a verwendet
Wortliste, die Positionsparameter ("$ 1", "$ 2", usw.) werden stattdessen verwendet. Für
Aus historischen Gründen können stattdessen offene und geschlossene Klammern verwendet werden do und erledigt (z.B,
für i; { Echo $ich; }). Der Exit-Status 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] ... [sonst Liste] fi
Wenn der Ausgangsstatus des ersten Liste ist null, die zweite Liste wird ausgeführt; ansonsten
die Liste nach dem elif, falls vorhanden, wird mit ähnlichen Konsequenzen ausgeführt. Wenn alle
Listen im Anschluss an die if und elifs scheitern (dh, Exit mit Status ungleich Null), die Liste
nach dem sonst ausgeführt wird. Der Austrittsstatus von an if Aussage ist die von
bedingungslos Liste das ausgeführt wird; wenn nicht bedingungslos Liste ausgeführt wird, die
Der Exit-Status ist Null.
bis Liste do Liste erledigt
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 do Liste erledigt
A während ist eine vorab geprüfte Schleife. Sein Körper wird so oft ausgeführt, wie der Exit-Status des
zuerst Liste ist null. Der Austrittsstatus von a während Anweisung ist der letzte Exit-Status von
die Liste im Körper der Schleife; Wenn der Körper nicht ausgeführt wird, ist der Exit-Status
Null.
Name () Befehl
Definiert die Funktion Name. Siehe Funktionen unten. Beachten Sie, dass die Weiterleitungen nach angegeben sind
Eine Funktionsdefinition wird immer dann ausgeführt, wenn die Funktion ausgeführt wird, nicht wenn die
Funktionsdefinition wird ausgeführt.
Zeit [ -p ] [ Pipeline ]
Die Zeit Das reservierte Wort wird im Abschnitt „Befehlsausführung“ beschrieben.
Zitieren
Anführungszeichen werden verwendet, um zu verhindern, dass die Shell Zeichen oder Wörter speziell behandelt. Dort
Es gibt drei Arten des Zitierens: Erstens, \ setzt das folgende Zeichen in Anführungszeichen, es sei denn, es befindet sich am
Ende einer Zeile, in diesem Fall beide \ und die neue Zeile werden entfernt. Zweitens eine Single
Zitat (') zitiert alles bis zum nächsten einfachen Anführungszeichen (dieses kann sich über mehrere Zeilen erstrecken). Drittens, a
doppeltes Anführungszeichen (") zitiert alle Zeichen, außer $, ` und \, bis zum nächsten nicht zitierten Double
Zitat. $ und ` Innerhalb doppelter Anführungszeichen haben sie ihre übliche Bedeutung (dh, Parameter, Befehl oder
arithmetische Substitution), mit der Ausnahme, dass bei den Ergebnissen von keine Feldaufteilung durchgeführt wird
Ersetzungen in doppelte Anführungszeichen. Wenn ein \ Innerhalb einer Zeichenfolge in doppelten Anführungszeichen folgt \, $, `
or ", wird es durch das zweite Zeichen ersetzt; Wenn darauf ein Zeilenumbruch folgt, werden beide \
und die neue Zeile werden entfernt; andernfalls beide \ und die folgenden Zeichen sind
unverändert.
Hinweis: Eine Sonderregel für Sequenzen des Formulars finden Sie weiter unten im POSIX-Modus
"...`...\"...`..".
Substitution
Der erste Schritt, den die Shell bei der Ausführung eines einfachen Befehls durchführt, besteht darin, Ersetzungen durchzuführen
auf die Worte des Befehls. Es gibt drei Arten der Ersetzung: Parameter, Befehl und
Arithmetik. Parameterersetzungen, die im nächsten Abschnitt ausführlich beschrieben werden,
nimm das Formular $ name or ${...}; Befehlsersetzungen nehmen die Form an $(Befehl) or
`Befehl`; und arithmetische Substitutionen nehmen die Form an $((Ausdruck)).
Wenn eine Ersetzung außerhalb von doppelten Anführungszeichen erscheint, sind die Ergebnisse der Ersetzung
Im Allgemeinen unterliegt die Wort- oder Feldaufteilung entsprechend dem aktuellen Wert des IFS
Parameter. Das IFS Der Parameter gibt eine Liste von Zeichen an, die zum Umbrechen von a verwendet werden
in mehrere Wörter aneinanderreihen; Alle Zeichen aus dem festgelegten Leerzeichen, Tabulator und Zeilenumbruch
Die im IFS vorkommenden Zeichen werden aufgerufen IFS Weiß Raum. Sequenzen eines oder mehrerer IFS
Leerzeichen, in Kombination mit null oder einem Nicht-IFS-Leerzeichen
ein Feld abgrenzen. Als Sonderfall werden führende und nachfolgende IFS-Leerzeichen entfernt
(dh, dadurch wird kein führendes oder nachgestelltes leeres Feld erstellt); führendes oder nachgestelltes Nicht-IFS
Leerzeichen erzeugen ein leeres Feld. Beispiel: wenn IFS ist auf ` gesetzt :', der Ablauf
von Zeichen ` A : B::D' enthält vier Felder: `A', `B', `' und
„D“. Beachten Sie, dass, wenn die IFS Wenn der Parameter auf die Nullzeichenfolge gesetzt ist, erfolgt keine Feldaufteilung.
Wenn der Parameter nicht gesetzt ist, wird der Standardwert für Leerzeichen, Tabulator und Zeilenumbruch verwendet.
Die Ergebnisse der Auswechslung unterliegen, sofern nicht anders angegeben, ebenfalls der Klammerung
Erweiterung und Dateinamenerweiterung (siehe die entsprechenden Abschnitte unten).
Eine Befehlsersetzung wird durch die vom angegebenen Befehl generierte Ausgabe ersetzt
wird in einer Subshell ausgeführt. Für $(Befehl) Bei Ersetzungen werden normale Anführungszeichenregeln verwendet
Befehl wird jedoch für die analysiert `Befehl` Form, a \ gefolgt von einem von $, ` or \ is
entkleidet (a \ gefolgt von einem anderen Zeichen bleibt unverändert). Als Sonderfall im Kommando
Ersetzungen, ein Befehl der Form < Datei wird so interpretiert, dass es bedeutet, den Inhalt zu ersetzen
of Datei ($(< foo) hat den gleichen Effekt wie $(cat foo), wird aber stärker ausgeführt
effizient, da kein Prozess gestartet wird).
Anmerkungen: $(Befehl) Ausdrücke werden derzeit analysiert, indem die passende Klammer gefunden wird.
unabhängig vom Zitieren. Dies wird hoffentlich bald behoben.
Arithmetische Ersetzungen werden durch den Wert des angegebenen Ausdrucks ersetzt. Zum
Beispiel, der Befehl Echo $((2+3*4)) druckt 14. Siehe Arithmetische Ausdrücke für a
Beschreibung von an Ausdruck.
Kenngrößen
Parameter sind Shell-Variablen; Ihnen können Werte zugewiesen werden und ihre Werte können sein
Der Zugriff erfolgt über eine Parametersubstitution. Ein Parametername ist einer der besonderen
Die unten beschriebenen Parameter für einzelne Satzzeichen oder Ziffern oder ein Buchstabe gefolgt von
null oder mehr Buchstaben oder Ziffern („_“ zählt als Buchstabe). Die spätere Form kann behandelt werden als
Arrays durch Anhängen eines Array-Index der Form: [ausdr] woher ausdr ist eine Arithmetik
Ausdruck. Array-Indizes sind derzeit auf den Bereich von 0 bis einschließlich 1023 beschränkt.
Parameterersetzungen nehmen die Form an $Name, ${Name} or ${Name[ausdr]}, Wobei Name ist eine
Parametername. Wenn die Ersetzung für einen Parameter (oder einen Array-Parameter) durchgeführt wird
Element), das nicht festgelegt ist, wird eine Nullzeichenfolge ersetzt, es sei denn, das 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, usw.; Nur so ist das besondere Einzelzeichen möglich
Parameter eingestellt sind. Zweitens werden Parameter aus der Shell-Umgebung importiert bei
Start-up. Drittens können Parametern in der Befehlszeile Werte zugewiesen werden, z. B.
`FOO=bar' setzt den Parameter FOO auf bar; Es können mehrere Parameterzuweisungen für a angegeben werden
einzelne Befehlszeile und ihnen kann ein einfacher Befehl folgen, in diesem Fall der
Zuweisungen gelten nur für die Dauer des Befehls (solche Zuweisungen gelten auch).
exportiert, siehe unten für die Auswirkungen). Beachten Sie, dass sowohl der Parametername als auch der =
muss nicht in Anführungszeichen stehen, damit die Shell eine Parameterzuweisung erkennt. Der vierte Weg
Das Einstellen eines Parameters erfolgt mit dem exportieren und schreibgeschützt Befehle; siehe ihre Beschreibungen in
den Abschnitt „Befehlsausführung“. Fünfte, für und wählen Schleifen setzen Parameter sowie die
Getopte, besuch und kompensieren -A Befehle. Schließlich können Parameter mit Werten zugewiesen werden
Zuweisungsoperatoren innerhalb arithmetischer Ausdrücke (siehe Arithmetische Ausdrücke unten) oder
Verwendung der ${Name=Wert} Form der Parametersubstitution (siehe unten).
Parameter mit dem Exportattribut (eingestellt mit dem exportieren Befehl oder per Parameter
Zuweisungen gefolgt von einfachen Befehlen) werden in die Umgebung gestellt (siehe Umwelt(5)) von
Befehle, die von der Shell ausgeführt werden als Name=Wert Paare. Die Reihenfolge, in der Parameter im angezeigt werden
Die Umgebung eines Befehls ist nicht spezifiziert. Wenn die Shell startet, extrahiert sie Parameter
und deren Werte aus seiner Umgebung und setzt automatisch das Exportattribut für
diese Parameter.
Auf die können Modifikatoren angewendet werden ${Name} Form der Parametersubstitution:
${Name:-Wort}
if Name gesetzt ist und nicht null, andernfalls wird es ersetzt Wort ersetzt wird.
${Name:+Wort}
if Name ist gesetzt und nicht null, Wort wird ersetzt, sonst wird nichts ersetzt.
${Name:=Wort}
if Name gesetzt und nicht null ist, wird es ersetzt, andernfalls wird es zugewiesen Wort und den
resultierender Wert von Name ersetzt wird.
${Name:?Wort}
if Name gesetzt ist und nicht null, andernfalls wird es ersetzt Wort ist auf Standard gedruckt
Fehler (vorangestellt von Name:) und es tritt ein Fehler auf (der normalerweise zum Abbruch einer Shell führt).
Skript, Funktion oder .-Skript). Wenn das Wort weggelassen wird, ist der String-Parameter null oder nicht
set' wird stattdessen verwendet.
In den oben genannten Modifikatoren ist die : kann weggelassen werden, in diesem Fall hängen die Bedingungen nur von ab
Name gesetzt werden (im Gegensatz zu gesetzt und nicht null). Wenn Wort wird benötigt, Parameter, Befehl,
Darauf werden Arithmetik und Tilde-Substitution durchgeführt. Wenn Wort wird nicht benötigt, ist es nicht
bewertet.
Folgende Formen der Parametersubstitution können ebenfalls verwendet werden:
${#Name}
Die Anzahl der Positionsparameter if Name is *, @ oder ist nicht angegeben, oder die Länge
des Stringwerts des Parameters Name.
${#Name[*]}, ${#Name[@]}
Die Anzahl der Elemente im Array Name.
${Name#Anleitungen}, ${Name##Anleitungen}
If Anleitungen entspricht dem Anfang des Wertes von Parameter Name, der übereinstimmende Text ist
aus dem Ergebnis der Substitution gelöscht. Ein einzelner # ergibt die kürzeste Übereinstimmung, zwei
#'s Ergebnisse im längsten Spiel.
${Name%Anleitungen}, ${Name%%Anleitungen}
Like ${..#..} Ersetzung, aber es wird am Ende des Werts gelöscht.
Die folgenden speziellen Parameter werden implizit von der Shell festgelegt und können nicht festgelegt werden
direkt mit Zuweisungen:
!
Prozess-ID des zuletzt gestarteten Hintergrundprozesses. Wenn keine Hintergrundprozesse vorhanden sind
gestartet wurde, ist der Parameter nicht gesetzt.
#
Die Anzahl der Positionsparameter (dh, $1, $2, usw.).
$
Die Prozess-ID der Shell oder die PID der ursprünglichen Shell, wenn es sich um eine Subshell handelt.
-
Die Verkettung der aktuellen Einzelbuchstabenoptionen (siehe kompensieren Befehl unten für die Liste
von Optionen).
?
Der Exit-Status des letzten nicht asynchron ausgeführten Befehls. Wenn der letzte Befehl war
durch ein Signal getötet, $? ist auf 128 plus die Signalnummer eingestellt.
0
Der Name, mit dem die Shell aufgerufen wurde (d. h. argv [0]), oder der Befehlsname wenn es war
aufgerufen mit dem -c Option und die Befehlsname geliefert wurde, oder die Datei Argument, wenn
es wurde geliefert. Wenn die POSIX Option ist nicht gesetzt, $0 ist der Name des aktuellen
Funktion oder Skript.
1 ... 9
Die ersten neun Positionsparameter, die der Shell, Funktion oder bereitgestellt wurden
.-Skript. Auf weitere Positionsparameter kann über zugegriffen werden ${Anzahl}.
*
Alle Positionsparameter (außer Parameter 0), dh, $1 $2 $3.... Bei Verwendung außerhalb
doppelte Anführungszeichen, Parameter sind separate Wörter (die einer Wortaufteilung unterzogen werden);
Bei Verwendung in doppelten Anführungszeichen werden die Parameter durch das erste Zeichen getrennt
IFS Parameter (oder die leere Zeichenfolge, wenn IFS ist Null).
@
Das gleiche wie $*, es sei denn, es wird in doppelten Anführungszeichen verwendet, in diesem Fall ist ein separates Wort
wird für jeden Positionsparameter generiert – wenn keine Positionsparameter vorhanden sind, nein
Wort generiert wird („$@“ kann verwendet werden, um wörtlich auf Argumente zuzugreifen, ohne sie zu verlieren
Nullargumente oder Aufteilen von Argumenten durch Leerzeichen).
Die folgenden Parameter werden von der Shell eingestellt und/oder verwendet:
"CDPATH"
Suchpfad für die cd eingebauter Befehl. Funktioniert genauso wie PATH für diejenigen
Verzeichnisse beginnen nicht mit / in cd Befehle. Beachten Sie, dass CDPATH festgelegt ist und dies auch der Fall ist
nicht enthalten . noch ein leerer Pfad, wird das aktuelle Verzeichnis nicht durchsucht.
COLUMNS
Legen Sie die Anzahl der Spalten im Terminal oder Fenster fest. Derzeit auf eingestellt Spalten
Wert wie von angegeben stty(1) wenn dieser Wert ungleich Null ist. Dieser Parameter wird von verwendet
interaktive Zeilenbearbeitungsmodi und von wählen, kompensieren -o und töten -l Befehle zum Formatieren
Informationen in Spalten.
FEHLERNO
Ganzzahliger Wert der errno-Variablen der Shell – gibt den Grund für das letzte System an
Anruf fehlgeschlagen.
Noch nicht implementiert.
EXECSHELL
Wenn dieser Parameter festgelegt ist, wird davon ausgegangen, dass er die Shell enthält, die zur Ausführung verwendet werden soll
Befehle, die ausführen(2) nicht ausgeführt werden können und nicht mit einem „`“ beginnen#! Schale'
Sequenz.
FCEDIT
Der von der verwendete Editor fc Befehl (siehe unten).
FPATH
Like PATH, wird aber verwendet, wenn eine undefinierte Funktion ausgeführt wird, um die Dateidefinition zu finden
die Funktion. Es wird auch gesucht, wenn ein Befehl mit nicht gefunden werden kann PATH. Sehen
Weitere Informationen finden Sie weiter unten unter „Funktionen“.
HOME
Das Standardverzeichnis für cd Befehl und der Wert, der durch einen unqualifizierten ersetzt wird
~ (siehe Tilde-Erweiterung unten).
IFS
Interner Feldtrenner, der während der Ersetzung und von verwendet wird besuch Befehl, teilen
Werte in verschiedene Argumente umwandeln; normalerweise auf Leerzeichen, Tabulator und Zeilenumbruch eingestellt. Sehen
Für Einzelheiten siehe oben.
Hinweis: Dieser Parameter wird beim Start der Shell nicht aus der Umgebung importiert.
POSH_VERSION
Die Version von posh (schreibgeschützt).
LINIE NR
Die Zeilennummer der Funktion oder des Shell-Skripts, die gerade ausgeführt wird.
LINES
Legen Sie die Anzahl der Zeilen im Terminal oder Fenster fest.
Noch nicht implementiert.
OLDPWD
Das vorherige Arbeitsverzeichnis. Deaktivieren, wenn cd hat die Verzeichnisse nicht erfolgreich geändert
seit dem Start der Shell oder wenn die Shell nicht weiß, wo sie sich befindet.
OPTARG
Beim Benutzen Getopte, es enthält das Argument für eine analysierte Option, falls eines erforderlich ist.
Opt
Der Index des letzten Arguments, das bei der Verwendung verarbeitet wird Getopte. Weisen Sie diesem 1 zu
Parameter verursacht Getopte Argumente beim nächsten Mal von Anfang an zu verarbeiten
aufgerufen.
PATH
Eine durch Doppelpunkte getrennte Liste von Verzeichnissen, die bei der Suche nach Befehlen und durchsucht werden
.'d Dateien. Eine leere Zeichenfolge, die sich aus einem führenden oder nachfolgenden Doppelpunkt oder zwei benachbarten Doppelpunkten ergibt
Doppelpunkte werden als „.“ behandelt, das aktuelle Verzeichnis.
PPID
Die Prozess-ID des übergeordneten Shells (schreibgeschützt).
PS1
Die primäre Eingabeaufforderung für interaktive Shells. Die Eingabeaufforderung wird wörtlich gedruckt (dh, Kein
Auswechslungen erfolgen). Der Standardwert ist „$“ für Nicht-Root-Benutzer, „# ' für root..
PS2
Sekundäre Eingabeaufforderungszeichenfolge, standardmäßig „> ', wird verwendet, wenn mehr Eingaben erforderlich sind, um a abzuschließen
Befehl.
PS4
Wird zum Präfixieren von Befehlen verwendet, die während der Ausführungsverfolgung ausgegeben werden (siehe kompensieren -x Befehl
unten). Die Eingabeaufforderung wird wörtlich gedruckt (dh, es werden keine Ersetzungen vorgenommen). Standard ist
`+ '.
PWD
Das aktuelle Arbeitsverzeichnis. Möglicherweise nicht gesetzt oder null, wenn die Shell nicht weiß, wo sie sich befindet.
ANTWORTEN
Standardparameter für die besuch Befehl, wenn keine Namen angegeben sind. Auch verwendet in wählen
Schleifen, um den Wert zu speichern, der von der Standardeingabe gelesen wird.
TMPDIR
Das Verzeichnis der temporären Shell-Dateien wird erstellt. Wenn dieser Parameter nicht festgelegt ist, oder
enthält nicht den absoluten Pfad eines beschreibbaren Verzeichnisses, temporäre Dateien hingegen schon
erstellt in /tmp.
Tilde Expansion
Die Tilde-Erweiterung, die parallel zur Parametersubstitution erfolgt, erfolgt für Wörter
beginnend mit einem nicht zitierten ~. Die Zeichen, die der Tilde folgen, bis zum ersten /Wenn
Es wird davon ausgegangen, dass es sich um einen Anmeldenamen handelt. Wenn der Anmeldename leer ist, + or -, der Wert der
HOME, PWD oder OLDPWD Parameter wird jeweils ersetzt. Ansonsten die Passwortdatei
wird nach dem Anmeldenamen durchsucht und der Tilde-Ausdruck 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 (die einem einfachen Befehl vorangehen oder in der vorkommen
Argumente von alias, exportieren und schreibgeschützt, erfolgt die Tilde-Erweiterung nach jedem Doppelpunkt ohne Anführungszeichen
(:) und Anmeldenamen werden ebenfalls durch Doppelpunkte getrennt.
Das Home-Verzeichnis von zuvor erweiterten Login-Namen wird zwischengespeichert und wiederverwendet. Die alias -d
Der Befehl kann verwendet werden, um diesen Cache aufzulisten, zu ändern und ihm etwas hinzuzufügen (z.B, `Alias -d
fac=/usr/local/facilities; cd ~fac/bin').
Reichen Sie das Name Patterns
Ein Dateinamenmuster ist ein Wort, das ein oder mehrere Anführungszeichen enthält ? or * Zeichen oder [..]
Sequenzen. Sobald die Klammererweiterung durchgeführt wurde, ersetzt die Shell Dateinamenmuster
mit den sortierten Namen aller Dateien, die dem Muster entsprechen (falls keine Dateien übereinstimmen, das Wort).
bleibt unverändert). Die Musterelemente haben folgende Bedeutung:
"?"
entspricht jedem einzelnen Zeichen.
*
entspricht einer beliebigen Zeichenfolge.
[..]
entspricht einem der Zeichen in den Klammern. Zeichenbereiche können sein
angegeben, indem zwei Zeichen durch a getrennt werden -, z.B, [a0-9] passt zum Buchstaben a or
irgendeine Ziffer. Um sich selbst darzustellen, a - muss entweder in Anführungszeichen gesetzt werden oder das erste oder
letztes Zeichen in der Zeichenliste. Ebenso a ] muss zitiert werden oder das erste
Zeichen in der Liste, wenn es sich selbst und nicht das Ende der Liste darstellt. Auch,
a ! Das Erscheinen am Anfang der Liste hat eine besondere Bedeutung (siehe unten).
Wenn es sich selbst darstellt, muss es in Anführungszeichen gesetzt werden oder später in der Liste erscheinen.
[!..]
Google Trends, Amazons Bestseller [..], außer dass es mit jedem Zeichen übereinstimmt, das nicht in den Klammern steht.
Beachten Sie, dass posh derzeit nie mit . übereinstimmt. und .., aber das Original ksh, Bourne sh und bash
tun, also muss sich das vielleicht ändern (schade).
Beachten Sie, dass keines der oben genannten Musterelemente mit einem Punkt (.) am Anfang von a übereinstimmt
Dateiname oder ein Schrägstrich (/), auch wenn sie explizit in a verwendet werden [..] Reihenfolge; auch der
Namen. und .. stimmen nie überein, auch nicht durch das Muster .*.
Die POSIX-Zeichenklassen (dh, [:Klassenname:] in einem [..] Ausdruck) sind noch nicht
implementiert.
Input / Output Redirection
Wenn ein Befehl ausgeführt wird, werden seine Standardeingabe, Standardausgabe und Standardfehler (Datei
Deskriptoren 0, 1 und 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 zunächst auf /dev/null eingestellt ist, und Befehle für
für die eine der folgenden Weiterleitungen angegeben wurde:
"> Datei"
Die Standardausgabe wird umgeleitet Datei. Wenn Datei existiert nicht, es wird erstellt; wenn es
existiert, ist eine reguläre Datei und die noclobber Option gesetzt ist, tritt ein Fehler auf,
andernfalls wird die Datei abgeschnitten. Beachten Sie, dass dies der Befehl ist cmd < foo > foo werden wir
XNUMXh geöffnet foo zum Lesen und kürzen Sie es dann, wenn es vorher zum Schreiben geöffnet wird cmd
bekommt die Chance, wirklich zu lesen foo.
">| Datei"
wie >, außer dass die Datei abgeschnitten wird, auch wenn die noclobber Option ist gesetzt.
">> Datei"
wie >, mit Ausnahme der Datei, an die eine vorhandene Datei angehängt und nicht abgeschnitten wird.
Außerdem wird die Datei im Anhängemodus geöffnet, sodass Schreibvorgänge immer am Ende der Datei erfolgen
(sehen XNUMXh geöffnet(2)).
"< Datei"
Die Standardeingabe wird von umgeleitet Datei, die zum Lesen geöffnet wird.
"<> Datei"
wie <, außer dass die Datei zum Lesen und Schreiben geöffnet wird.
"<< Marker"
nach dem Lesen der Befehlszeile, die diese Art der Umleitung enthält (hier als a bezeichnet).
Dokument), kopiert die Shell Zeilen aus der Befehlsquelle in eine temporäre Datei, bis
ein Zeilenabgleich Marker ist gelesen. Wenn der Befehl ausgeführt wird, erfolgt die Standardeingabe
von der temporären Datei umgeleitet. Wenn Marker enthält keine Anführungszeichen, die
Der Inhalt der temporären Datei wird jedes Mal so verarbeitet, als ob er in doppelte Anführungszeichen gesetzt wäre
Der Befehl wird ausgeführt, also Parameter-, Befehls- und arithmetische Ersetzungen
durchgeführt, zusammen mit Backslash (\) entkommt für $, `, \ und \Neue Zeile. Wenn hier mehrere
Dokumente werden in derselben Befehlszeile verwendet, sie werden der Reihe nach gespeichert.
"<<- Marker"
wie <<, außer dass führende Tabulatoren aus den Zeilen im Here-Dokument entfernt werden.
"<& fd"
Die Standardeingabe wird vom Dateideskriptor dupliziert fd. fd kann eine einzelne Ziffer sein,
Gibt die Nummer eines vorhandenen Dateideskriptors an, den Buchstaben p, was darauf hinweist
Dateideskriptor, der der Ausgabe des aktuellen Co-Prozesses oder dem Zeichen zugeordnet ist
-, was angibt, dass die Standardeingabe geschlossen werden soll.
">& fd"
wie <&, außer dass die Operation auf der Standardausgabe ausgeführt wird.
Bei jeder der oben genannten Umleitungen ist der Dateideskriptor, der umgeleitet wird (dhStandard
Eingabe oder Standardausgabe) können explizit angegeben werden, indem der Umleitung ein vorangestellt wird
einzelne Ziffer. Parameter-, Befehls- und arithmetische Substitutionen, Tilde-Substitutionen und (falls
(die Shell ist interaktiv) Die Generierung von Dateinamen erfolgt alle auf der Datei, Marker und
fd Argumente von Umleitungen. Beachten Sie jedoch, dass die Ergebnisse jeder Dateinamengenerierung
werden nur verwendet, wenn eine einzelne Datei übereinstimmt; Wenn mehrere Dateien übereinstimmen, wird das Wort mit dem
Es werden nicht erweiterte Zeichen zur Generierung von Dateinamen verwendet.
Bei einfachen Befehlen können Umleitungen an einer beliebigen Stelle im Befehl erscheinen, z
zusammengesetzte Befehle (if Aussagen, usw.), alle Weiterleitungen müssen am Ende erscheinen.
Umleitungen werden verarbeitet, nachdem Pipelines erstellt wurden, und zwar in der angegebenen Reihenfolge
Katze / Foo / bar 2> & 1 > / dev / null | Katze -n gibt einen Fehler mit vorangestellter Zeilennummer aus
es.
Arithmetik Ausdrücke
Darin können ganzzahlige arithmetische Ausdrücke verwendet werden $((..)) Ausdrücke, innerhalb des Arrays
Verweise (z.B, Name[ausdr]), als numerische Argumente für die Test Befehl und als Wert
einer Zuweisung an einen ganzzahligen Parameter.
Der Ausdruck kann alphanumerische Parameterbezeichner, Array-Referenzen und Ganzzahlen enthalten
Konstanten und können mit den folgenden C-Operatoren kombiniert werden (aufgelistet und gruppiert in
zunehmende Rangfolge).
Unäre Operatoren:
+ - ! ~ ++ --
Binäroperatoren:
,
= *= /= %= += -= << = >> = &= ^= |=
||
&&
|
^
&
== !=
< <= >= >
<< >>
+ -
* / %
Ternärer Operator:
?: (Vorrang ist unmittelbar höher als Zuweisung)
Gruppierungsoperatoren:
( )
Integer-Konstanten können mithilfe der Notation mit beliebigen Basen angegeben werden Base#Anzahl,
woher Base ist eine dezimale Ganzzahl, die die Basis angibt, und Anzahl ist eine Zahl in der
angegebenen Basis.
Die Operatoren werden wie folgt bewertet:
"einstellig +"
Ergebnis ist das Argument (der Vollständigkeit halber eingefügt).
"einstellig -"
Negation.
"!"
logisch nicht; Das Ergebnis ist 1, wenn das Argument Null ist, 0, wenn nicht.
"~"
Arithmetik (bitweise) nicht.
"++"
Zuwachs; muss auf einen Parameter angewendet werden (nicht auf ein Literal oder einen anderen Ausdruck) - der
Der Parameter wird um 1 erhöht. Bei Verwendung als Präfixoperator ist das Ergebnis der
Inkrementierter Wert des Parameters. Bei Verwendung als Postfix-Operator ist das Ergebnis der
Originalwert des Parameters.
"++"
ähnlich ++, außer dass der Parameter um 1 dekrementiert wird.
","
trennt zwei arithmetische Ausdrücke; Zuerst wird die linke Seite ausgewertet, dann die
Rechts. Das Ergebnis ist der Wert des Ausdrucks auf der rechten Seite.
"="
Abtretung; Die Variable links wird auf den Wert rechts gesetzt.
"*= /= %= += -= << = >> = &= ^= |="
Zuweisungsoperatoren; = ist die gleiche wie = ( ).
"||"
logisch oder; Das Ergebnis ist 1, wenn eines der Argumente ungleich Null ist, andernfalls ist es 0. Das Recht
Das Argument wird nur ausgewertet, wenn das linke Argument Null ist.
"&&"
logisch und; Das Ergebnis ist 1, wenn beide Argumente ungleich Null sind, andernfalls ist es 0. Das Recht
Das Argument wird nur ausgewertet, wenn das linke Argument ungleich Null ist.
"|"
Arithmetik (bitweise) oder.
"^"
arithmetisches (bitweises) Exklusiv-Oder.
"&"
Arithmetik (bitweise) und.
"=="
gleich; Das Ergebnis ist 1, wenn beide Argumente gleich sind, 0, wenn nicht.
"!="
nicht gleich; 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, andernfalls 0.
"<= >= >"
kleiner als oder gleich, größer als oder gleich, größer als. Siehe <.
"<< >>"
nach links (rechts) verschieben; Das Ergebnis ist das linke Argument mit seinen nach links (rechts) verschobenen Bits.
um den im rechten Argument angegebenen Betrag.
"+ - * /"
Addition, Subtraktion, Multiplikation und Division.
"%"
Rest; Das Ergebnis ist der Rest der Division des linken Arguments durch
Rechts. Das Vorzeichen des Ergebnisses ist nicht spezifiziert, wenn eines der Argumente negativ ist.
" ? : "
if ungleich Null ist, ist das Ergebnis , Sonst .
Funktionen
Funktionen werden mithilfe der Bourne/POSIX-Shell definiert Name() Syntax. Funktionen sind wie
.-scripts, da sie in der aktuellen Umgebung ausgeführt werden, im Gegensatz zu .-scripts jedoch
Shell-Argumente (dh, Positionsparameter, $1, usw.) sind in ihnen niemals sichtbar.
Wenn die Shell den Speicherort eines Befehls ermittelt, wird nach Funktionen gesucht
spezielle integrierte Befehle und vor regulären und nicht regulären integrierten Befehlen und vor dem
PATH wird gesucht.
Eine bestehende Funktion kann mit . gelöscht werden ungesetzt -f Funktionsname.
Da Funktionen in der aktuellen Shell-Umgebung ausgeführt werden, werden Parameterzuweisungen vorgenommen
Innenfunktionen sind sichtbar, nachdem die Funktion abgeschlossen ist.
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.
Befehl Ausführung
Nach Auswertung der Befehlszeilenargumente, Umleitungen und Parameterzuweisungen wird die
Der Typ des Befehls wird bestimmt: ein spezieller integrierter Befehl, eine Funktion, ein regulärer integrierter Befehl oder der
Name einer Datei, die ausgeführt werden soll, gefunden mit PATH Parameter. Die Kontrollen werden wie oben durchgeführt durchgeführt
Befehl. Spezielle integrierte Befehle unterscheiden sich von anderen Befehlen dadurch, dass die PATH Parameter ist
Wenn sie nicht zum Auffinden verwendet werden, kann ein Fehler während ihrer Ausführung dazu führen, dass die Shell nicht interaktiv ist
zum Beenden und Parameterzuweisungen, die vor dem Befehl angegeben wurden, bleiben nach dem erhalten
Der Befehl wird abgeschlossen. Nur um die Dinge zu verwirren: Wenn die Posix-Option deaktiviert ist (siehe kompensieren
(Befehl unten) Einige spezielle Befehle sind insofern etwas ganz Besonderes, als dass keine Feldaufteilung erfolgt, Datei
Globbing, Klammererweiterung oder Tildeerweiterung werden für Argumente durchgeführt, die wie folgt aussehen
Zuordnungen. Reguläre integrierte Befehle unterscheiden sich nur darin PATH Parameter ist
nicht verwendet, um sie zu finden.
Job Kontrollieren
Unter Jobkontrolle versteht man die Überwachungs- und Kontrollfähigkeit der Shell Jobs & Karriere, das sind Prozesse
oder Gruppen von Prozessen, die für Befehle oder Pipelines erstellt wurden. Zumindest bleibt die Schale erhalten
Verfolgen Sie den Status des Hintergrunds (dh, asynchrone) Jobs, die derzeit vorhanden sind; Das
Informationen können mit dem angezeigt werden Jobs & Karriere Befehl. Wenn die Jobsteuerung vollständig aktiviert ist
(unter Verwendung von kompensieren -m or kompensieren -o Monitor), wie bei interaktiven Shells, die Prozesse eines Jobs
in einer eigenen Prozessgruppe platziert werden, können Vordergrundjobs durch Eingabe von gestoppt werden
Suspend-Zeichen vom Terminal aus (normalerweise ^Z), Jobs können in beiden neu gestartet werden
Vordergrund oder Hintergrund, mit dem fg und bg Befehle bzw. deren Status
Das Terminal wird gespeichert bzw. 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 besuch
kann nicht sein.
Wenn ein Job erstellt wird, wird ihm eine Jobnummer zugewiesen. Bei interaktiven Shells beträgt diese Zahl
innen bedruckt [..], gefolgt von den Prozess-IDs der Prozesse im Job, wenn ein
Der asynchrone Befehl wird ausgeführt. Auf einen Job kann verwiesen werden bg, fg, Jobs & Karriere, töten und warten
Befehle entweder nach der Prozess-ID des letzten Prozesses in der Befehlspipeline (wie gespeichert).
in England, $! Parameter) oder indem Sie der Auftragsnummer ein Prozentzeichen voranstellen (%). Sonstiges
Prozentfolgen können auch verwendet werden, um auf Jobs zu verweisen:
%+ %+ Die vor allem warme kürzlich gestoppt Job, oder, if
dort sind nicht gestoppt Arbeitsplätze, die älteste
Laufen Job.
%%, % %%, % Das gleiche wie %+.
%- %- Der Job, der das tun würde
sei der %+ Arbeit, wenn
Letzteres nicht
existieren.
%n %n Der Job mit
Auftragsnummer n.
%?Schnur %?Schnur Der Job enthält
die Saite Schnur
(ein Fehler tritt auf, wenn
mehrere Jobs
sind
abgeglichen).
%Schnur %Schnur Der Job beginnt mit
Schnur Schnur (ein Fehler
tritt bei mehreren Jobs auf
sind
abgeglichen).
Wenn ein Job seinen Status ändert (z.B, ein Hintergrundjob wird beendet oder der Vordergrundjob wird gestoppt),
Die Shell gibt die folgenden Statusinformationen aus: [Anzahl] Flagge Status Befehl woher
" Anzahl"
ist die Jobnummer des Jobs.
" Flagge"
is + or - wenn der Job der ist %+ or %- Job bzw. Platz, wenn keiner von beiden vorhanden ist.
" Status"
zeigt den aktuellen Status des Jobs an und kann sein
"Laufen"
Der Job wurde weder gestoppt noch beendet (beachten Sie, dass „Ausführen“ nicht unbedingt bedeutet).
verbraucht CPU-Zeit – der Prozess könnte blockiert werden und auf ein Ereignis warten).
"Erledigt [(Anzahl)]"
Der Job wurde beendet. Anzahl ist der Exit-Status des Jobs, der bei Status weggelassen wird
ist null.
"Gestoppt [(Signal)]"
Der Job wurde von der angegebenen Person gestoppt Signal (Wenn kein Signal gegeben wird, war der Job
durch SIGTSTP gestoppt).
"Signalbeschreibung [(Ader abgeladen)]"
Der Job wurde durch ein Signal beendet (z.B, Speicherfehler, Auflegen, usw. - verwenden töten -l für eine
Liste der Signalbeschreibungen). Der (Ader abgeladen) Die Meldung gibt den erstellten Prozess an
eine Kerndatei.
" Befehl"
ist der Befehl, der den Prozess erstellt hat. Wenn der Job mehrere Prozesse umfasst,
dann hat jeder Prozess eine Zeile, die seinen Prozess anzeigt Befehl und möglicherweise ist es Status, wenn es
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
Wird sofort zum Verlassen der Shell aufgefordert, werden die gestoppten Jobs a gesendet PHU Signal und die Shell
Ausgänge. Ebenso, wenn die Nohup Die Option ist nicht festgelegt und es werden laufende Jobs ausgeführt, wenn ein
Beim Versuch, eine Anmelde-Shell zu beenden, warnt die Shell den Benutzer und wird nicht beendet. Wenn
Wird sofort erneut versucht, die Shell zu verlassen, werden die laufenden Jobs a gesendet PHU
Signal und die Shell wird beendet.
GEBAUT UTILITIES
posh implementiert die folgenden integrierten Dienstprogramme:
·.
·:
· [
· brechen
· eingebaut
· weitermachen
· evalu
· Geschäftsführer
· Ausfahrt
· FALSCH
· zurückkehren
· Satz
· Schicht
· Zeiten
· fangen
· Warten
· lesen
· prüfen
· WAHR
· umask
· nicht eingestellt
· CD
· Befehl
· Echo
· Export
· getopts
· töten
· lokal
· pwd
· schreibgeschützt
Nutzen Sie schicke Online-Dienste mit den onworks.net-Diensten