Die meisten Antworten hier [ 1 ] [ 2 ] [ 3 ] verwenden eine einzelne spitze Klammer, um nach / dev / null umzuleiten.
command > /dev/null
Das Anhängen an / dev / null funktioniert aber auch:
command >> /dev/null
Gibt es außer dem zusätzlichen Zeichen einen Grund, dies nicht zu tun? Ist eine dieser beiden Möglichkeiten "besser" für die zugrunde liegende Implementierung von / dev / null?
Edit:
Die open (2) manpage sagt lseek vor jedem Schreiben in eine Datei im Append - Modus aufgerufen wird:
O_APPEND
Die Datei wird im Append-Modus geöffnet. Vor jedem Schreiben (2) wird der Dateiversatz wie bei lseek (2) am Ende der Datei positioniert. Die Änderung des Dateioffsets und die Schreiboperation werden als ein einzelner atomarer Schritt ausgeführt.
das lässt mich denken, dass es eine kleine Leistungsstrafe für die Verwendung geben könnte >>
. Andererseits scheint das Abschneiden von / dev / null eine undefinierte Operation gemäß diesem Dokument zu sein:
O_TRUNC
Wenn die Datei bereits vorhanden und eine reguläre Datei ist und der Zugriffsmodus das Schreiben zulässt (dh O_RDWR oder O_WRONLY ist), wird sie auf die Länge 0 gekürzt. Wenn die Datei eine FIFO- oder Endgerätedatei ist, wird das O_TRUNC-Flag ignoriert. Ansonsten ist die Wirkung von O_TRUNC nicht spezifiziert.
und die POSIX-Spezifikation besagt >
, dass eine vorhandene Datei abgeschnitten werden soll , aber O_TRUNC ist für Gerätedateien implementierungsdefiniert und es gibt kein Wort darüber, wie / dev / null auf das Abschneiden reagieren soll .
Ist truncating / dev / null tatsächlich nicht spezifiziert? Und haben die lseek- Aufrufe einen Einfluss auf die Schreibleistung?
quelle