Peter Wiersig wrote at Tuesday, October 04, 2005 11:07 AM Hallo,
Also entweder bin ich gerade dabei, dazu zu lernen (was ja positiv ist) oder ich bin einfach verwirrt ...
Ich auch. Die Notation "&>" war mir neu.
Doch, ist ok. "background" und "anhaengen" sind die beiden Features, die diesem Aufruf mitgegeben werden.
Was meinst Du hier mit "background"?
Wenn du schreibst "foo &" dann wird der Befehl im Hintergrund ausgefuehrt. Das gleiche erreicht man auch mit "Strg-Z" und bg.
Hmm ... Ich glaube aber, dass mit dem von Martin beschriebenen Kommando "./script.sh & >> log.txt" etwas anderes gemeint war ... Zur Aufklärung: Grundsätzlich bedeutet script.sh &> log.txt, das stdout _und_ stderr nach log.txt umgeleitet werden. "&" meint in diesem fall also die file descriptors "1" für stdout und "2" für stdin. 2 Möglichkeiten: Ausgabeumleitung beider Ausgaben, wie oben beschrieben, dann müßte es ./script.sh &>> log.txt heissen, definitiv ohne das Leerzeichen. Dasselbe sollte ./script.sh >> log.txt 2>> log.txt Bewirken, ersteres funktioniert aber wie beschrieben nicht immer. Der Ampersand für stdout und stderr ist im von mir erwähnten Link http://www.thomashertweck.de/redir.html beschrieben. Wollte er noch das mit dem Background dazu haben, dann gehört der Ampersand ganz ans Ende: ./script.sh >> log.txt 2>> log.txt & Dort, wo er bei Martin steht, kann er IMHO nichts mit Background zu tun haben sondern mit der Umleitung beider Ausgabeströme.
Sollte das nicht schon durch "2>> log.txt" bewirkt werden?
Ehrlich gesagt habe ich nie probiert 2 Streams auf deine Art in eine Datei umzuleiten. Die Schreibweise "foo >out 2>&1" oder "foo &> out" sind mir da lieber.
Wie gesagt, das Problem ist, dass "foo &>> out" nicht funktioniert. In diesem Fall also funktioniert Deine erste Variante oder die meinige oben ;-) Hoffe, die Verwirrung ist nun etwas weniger geworden, auch wenn wir noch nicht genau wissen, was Martin mit seinem Kommando gemeint hat ;-) Grüße, Markus