Könnte mir jemand den Unterschied zwischen >
und >>
bei der Verwendung von Shell-Befehlen erklären ?
Beispiel:
ps -aux > log
ps -aux >> log
Es scheint, dass das Ergebnis so oder so dasselbe ist.
command-line
whale_steward
quelle
quelle
Antworten:
>
wird zum Überschreiben (" Clobbern ") einer Datei und>>
zum Anhängen an eine Datei verwendet.Wenn Sie also verwenden
ps aux > file
, wird die Ausgabe vonps aux
infile
einefile
bereits vorhandene Datei geschrieben, und der Inhalt dieser Datei wird überschrieben.Und wenn Sie verwenden
ps aux >> file
, wird die Ausgabe vonps aux
infile
die Datei geschrieben, und wenn die genannte Dateifile
bereits vorhanden war, enthält die Datei jetzt ihren vorherigen Inhalt und auch den Inhalt vonps aux
, der nach dem älteren Inhalt von geschrieben wurdefile
.quelle
wenn Sie im Terminal schreiben
Es wird die Ausgabe der
ps aux
benannten Datei protokollieren.dann, wenn Sie setzen
dann wird die nächste Ausgabe unterhalb der ersten angefügt. Wenn Sie nur eine
>
angeben, wird die vorherige Datei überschrieben.quelle
Ja,
>>
hängt an,>
überschreibt / zerstört immer den vorherigen Inhalt.ist das gleiche wie
Auf Wintel ist es das gleiche für
.bat
,.cmd
und.ps1
Skripte zu; gemeinsames Erbe, gesunder Menschenverstand.quelle
Der wichtigste Unterschied besteht darin, dass
>
die Shell eine Datei oder ein dateiähnliches Objekt mitO_WRONLY|O_CREAT|O_TRUNC
Flags>>
öffnet - die Datei wird erstellt oder abgeschnitten, wenn sie vorhanden ist, während die Datei mitO_WRONLY|O_CREAT|O_APPEND
Flags geöffnet wird - die Datei wird erstellt oder angehängt, wenn sie vorhanden ist. Dies ist offensichtlich, wenn Sie Systemaufrufe verfolgen, z. B. mitUnd mit
Beachten Sie, dass in beiden Fällen der Dateideskriptor der geöffneten Datei auf den Dateideskriptor 1 (stdout) des Befehls dupliziert wird. Dieser wird von jedem Befehl übernommen, den die Shell gabelt.
quelle