====== Verkettung und Zusammenfassung von Kommandos ====== **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