Kommandos in ( ) werden in Subshells ausgeführt.
Mit Subshells können Ausgaben von mehreren Kommandos (STDOUT und STDERR) zusammengefasst oder die Umgebung temporär verändert werden.
X
(cmd1; cmd2; ...) > all-cmds.out
Subshells sind völlig getrennt von der aufrufenden Shell
X
$ pwd /users/jg (cd /irgendwo/ganz/anders; cat file1 > file1.out ) $ pwd /users/jg
Praktisch auch, um mit Loops über von Kommandos erstellte dynamische Listen zu iterieren.
X
for LOG in $(ls -1 /var/log/apache/log.2008*) do runstats $LOG done