Hintereinanderausführung:
Will man mehrere Kommandos ausführen lassen, braucht man nicht jedes Kommando einzeln einzugeben und mit der Eingabe des nächsten Kommandos auf die Beendigung des vorhergehenden warten. Die Kommandos werden, getrennt durch Strichpunkt, hintereinander geschrieben:
kommando1 ; kommando2; kommando3
Sequentielles UND:
Das zweite Kommando wird nur dann ausgeführt, wenn das erste erfolgreich war.
Kommando1 && Kommando2
Sequentielles EXOR:
(EXOR gleich Exklusives ODER) Das zweite Kommando wird nur dann ausgeführt, wenn das erste erfolglos war.
Kommando1 || Kommando2
Zusammenfassung von Kommandos:
Kommandos lassen sich zur gemeinsamen E/A-Umleitung mit {…} klammern:
{ Kommando1 ; Kommando2 ; Kommando3 ; ... ; }
Die geschweiften Klammern müssen von Leerzeichen eingeschlossen werden!
Die Ausführung der Kommandos erfolgt nacheinander innerhalb der aktuellen Shell, die Ausgabe kann gemeinsam umgelenkt werden, z. B.:
{ pwd ; who ; ls ; } > out
Die schließende Klammer muß entweder durch einen Strichpunkt vom letzen Kommando getrennt werden oder am Beginn einer neuen Zeile stehen. Die geschweiften Klammern sind ein ideales Mittel, die Ausgabe aller Programme eines Shell-Skripts gemeinsam umzuleiten, wenn das Skript beispielsweise mit nohup oder über cron gestartet wird. Man fügt lediglich am Anfang eine Zeile mit der öffnenden Klammer ein und am Schluß die gewünschte Umleitung, z. B.:
{ ... ... ... ... } | mailx -s "Output from Foo" $LOGNAME
Eine Folge von Kommandos kann aber auch in einer eigenen Subshell ausgeführt werden:
( Kommando1 ; Kommando2 ; Kommando3 ; ... )
Achtung: das sind die runden Klammern!
Noch ein Beispiel:
Angenommen wir wollen das Verzeichnis /usr/local nach /mnt kopieren:
( cd /usr/local ; tar cf - . ) | ( cd /mnt ; tar xvf - )
Der Parameter f weist tar an, auf eine Datei zu schreiben oder von einer Datei zu lesen. Hat die Datei wie oben den Namen '-', handelt es sich um stdout bzw. stdin.
Stand: 26.08.2010
EOF