On 16 Feb 2001, at 17:24, Bernd Brodesser wrote:
Sorry, aber das ist Blödsinn, was Du da schreibst. Was das - bedeuten soll, davon weiß bash nichts. Bitte mache Dir klar was welches Programm macht. Bei obigen Befehl sieht die bash folgendes:
cmd1 Argumente 2> Dateiname | cmd2 Argumente`cmd3 Argumente`
Die bash ruft cmd1 auf und übergibt die Argumente, die Standardfehlerausgebe lenkt sie nach Dateiname um, während die Standardausgabe in die Pipe geschrieben wird, die die shell vorher auch noch aufgebaut hat. Alsdann führt sie cmd2 aus und übgergibt ihr ihre Argumente, dafür muß die bash vorher cmd3 ausführen und setzt die Standardausgabe von cmd3 an Stelle des `...` Die Standardeingabe von cmd2 ließt sie von der pipe.
Was in den einzelnen Argumenten der Befehle steht, das interessiert die bash nicht. Der split Befehl liest von der Standardeingabe, weil da ein - steht. Aber das macht split und nicht die shell. Die shell sagt nur, was die Standardeingabe ist, in diesem Falle die pipe.
Hi Bernd! Sehr schön erklärt. Das ist es, was ich an manchen Leuten in der Mailingliste schätze. Mit den meisten Antworten kann man nicht viel anfangen, obwohl es Lösungen sind. Man sollte aber immer auch verstehen, was man macht.
Es ist einfach so, daß tar die log Daten auf Stderr ausgibt. Das tut tar immer, kannst Du ja mal ausprobieren. Wenn Du fragst, warum? Genau aus dem Grund, wie Du es brauchst. Würde tar die log-Daten auf stdout ausgeben, hättest Du keine Chance sie von den normalen Daten auseinanderzuhalten. Das ist bei UNIX/Linux so allgemein üblich. Verbose-Ausgaben erfolgen meist auf Stderr.
Sorry, aber das halte ich für Blödsinn. Die log Daten sind beim u.a. Befehl eindeutig nicht im Stderr ( welcher bekanntlich mit 2> umgeleitet wird). Genauso ist es mit vielen anderen Befehlen. SCNR! tar cvf /tmp/mist.tar /boot > /tmp/mist.log Trozdem fett merci Bernd ich glaub ich habs. Alex