2 Stimmen

Wird diese Umleitung ">>& <Dateiname>" in der Korn-Shell funktionieren?

Ich versuche, sowohl STDOUT/STDERR eines UNIX-Befehls umzuleiten als auch an eine Protokolldatei in einer Korn-Shell anzuhängen.

rm -rf file1 >>& logfile

Wird dieser Befehl in ksh funktionieren oder ist dies ein typischer Bash-Befehl? Welchen Schaden würde ich mit dem obigen Befehl anrichten?

7voto

Jason Catena Punkte 567

Ich verwende dieses Formular, um die Standardausgabe und den Standardfehler in dieselbe Datei umzuleiten.

ls -ld . fred > no_fred 2>&1

Gerade in der Korn-Shell von Red Hat Linux 4 getestet. no_fred enthält:

ls: fred: No such file or directory
drwxrwxr-x  2 user group 1024 Apr 27 17:41 .

">" ist eigentlich 1>, was bedeutet, dass der Dateideskriptor 1 (Standardausgabe) umgeleitet wird. "2>" leitet den Standardfehler um, da Standardfehler der Dateideskriptor 2 ist. "&1" bedeutet "was auch immer Sie mit Dateideskriptor 1 machen". Alles in allem bedeutet dies: "Standardausgabe in eine Datei ausgeben, und Standardfehler zusammen mit ihr".

Ein Vorteil dieser Methode ist, dass Fehlermeldungen an der richtigen Stelle erscheinen. Zum Beispiel erscheinen die Fehlermeldungen eines Compilers für eine Datei, die nicht kompiliert werden konnte, direkt nach dem Kompilierbefehl aus Ihrem Makefile.

Das >>&-Konstrukt kann die Ausgabe des Befehls an die Protokolldatei anhängen und stellt diese in den Hintergrund. Ich bin mir nicht sicher, ob es etwas mit dem Standardfehler macht. Ich habe gerade Bolsky/Korn 1989 konsultiert, und dort steht es nicht einmal drin, also kann vielleicht jemand anderes analysieren, was es tut.

Aktualisierung: Wenn Sie irgendwelche Pipes in Ihrem Befehl haben, dann wird der Standard Fehler der frühen Phasen zuerst erscheinen, da der fehlerverursachende Befehl läuft. Da nur die Standardausgabe durch die Pipe geleitet wird, erscheint sie erscheint alles auf einmal, wenn die gesamte Pipeline abgeschlossen ist.

2voto

John M Punkte 12793

Sie versuchen, die csh-Syntax in ksh zu verwenden. Siehe Jasons Antwort.

0voto

Donald Punkte 1

Zum Anhängen:

ls -ld . fred 1>> no_fred 2>&1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X