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