Compound Anweisungen
Ein Compound-Command ist eine pipe, eine list, beginnt mit einem reservierten Wort
oder dem Controloperator (.
Eine I/O-Umleitung für eine pipe, list oder das time-Command bezieht sich nur auf
das letzte Kommando. Soll sie sich auf alle Kommandos z.B. der pipe beziehen, so muß
alles durch { } geschweifte Klammern zusammengefasst werden.
Wird eine I/O-Umleitung für iterative Kommandos gegeben, so gilt sie für alle Kommandos
innerhalb der Iteration. Die iterativen Anweisungen zählen zu den Compound-Commands.
Ein Compound-Command kann nicht einer Variablen zugewiesen werden
Klammerung von Kommandos { }
Es gibt 2 Arten der Klammerung von Kommandos.
1.) { kommandofolge;}
2.) ( kommandofolge )
{ kommandofolge ; }
Die geschweiften Klammern sind eine Blockbildung.
Die letzte Anweisung vor } muß durch ein Semikolon ";" oder durch ein
"New Line" \ abgeschlossen werden.
Der Klammer folgt häufig eine E/A-Umleitung oder ein Pipe.
Diese Umleitung gilt dann für alle Kommandos in der Klammer:
{ who; pwd; ls; } > temp
( kommandofolge )
Die Kommandofolge zwischen den Klammern wird als selbständiger Prozeß
abgearbeitet (Co-Process).
Eine E/A-Umleitung gilt für alle Kommandos
Als Exit-Status wird der Status der letzten Anweisung zurückgeliefert.
Ein Wechsel des Directories gilt z.B. nur innerhalb der Klammer.
( cd /usr/hahn/c/src
ls -1 | sort | tee temp ;
lp temp )
time Zeitmessung
Mit diesem Kommando kann die Zeit für eine pipe gemessen werden.
time pipeline
time egrep 'unix?|hahn' /etc/passwd | sort
real 0m0.36s # elapsed time
user 0m0.03s # Zeit Userprozess
sys 0m0.14s # Zeit im Systembereich (Kernel)