&>
und >&
Halbäquivalenz (Clobber)
Im zsh
Abschnitt Manuelle Umleitungen heißt es:
sind gleichwertig.
Beide bereinigen die Datei - kürzen Sie die Datei auf 0 Byte, bevor Sie darauf schreiben, genau wie > file
dies im STDIN-Fall der Fall ist.
Allerdings ist der bash
manuelle Umleitungen Abschnitt fügt hinzu , dass:
Von den beiden Formen ist die erste bevorzugt. Dies ist semantisch äquivalent zu
>word 2>&1
Wenn Sie die zweite Form verwenden, wird das Wort möglicherweise nicht zu einer Zahl oder erweitert -
. In diesem Fall gelten aus Kompatibilitätsgründen andere Umleitungsoperatoren (siehe Duplizieren von Dateideskriptoren weiter unten).
Also, während Sie getaggt haben zsh
, ist es wahrscheinlich eine gute Praxis, Fingergedächtnis in der ersten Form zu bekommen, sollte man jemals ein bash
Skript schreiben .
>> logfile 2>&1
und &>>
Äquivalenz (anhängen)
Hier logfile
wird nicht überschrieben, sondern am Ende der Datei zum Schreiben geöffnet, dh Modus anhängen ( O_APPEND
).
Das Äquivalent in beiden {ba,z}sh
ist:
command1 &>> logfile
In bash
:
Das Format zum Anhängen der Standardausgabe und des Standardfehlers lautet:
&>>word
Dies ist semantisch äquivalent zu
>>word 2>&1
(Siehe Duplizieren von Dateideskriptoren weiter unten).
(Hinweis: Die Verwendung von &>
over >&
im obigen Abschnitt wird erneut empfohlen, da es nur eine Möglichkeit zum Anhängen gibt bash
.)
zsh
erlaubt beides &>>
und >>&
formen.