Unterscheiden sich diese beiden Befehle darin, wie sie Dateien auf Null setzen? Ist letzteres ein kürzerer Weg, um ersteres zu tun? Was geschieht hinter den Kulissen?
Beide
$ cat /dev/null > file.txt
$ > file.txt
Ertrag
-rw-r--r-- 1 user wheel 0 May 18 10:33 file.txt
Akzeptierte Antwort:
cat /dev/null > file.txt
ist eine nutzlose Verwendung von cat.
Grundsätzlich cat /dev/null
ergibt einfach cat
nichts ausgeben. Ja, es funktioniert, aber es wird von vielen verpönt, weil es dazu führt, dass ein externer Prozess aufgerufen wird, der nicht notwendig ist.
Es ist eines dieser Dinge, die üblich sind, einfach weil es üblich ist.
Verwenden Sie einfach > file.txt
funktioniert auf den meisten Shells, ist aber nicht vollständig portabel. Wenn Sie vollständig portabel sein möchten, sind die folgenden gute Alternativen:
true > file.txt
: > file.txt
Beide :
und true
geben keine Daten aus und sind in die Shell eingebaut (wobei cat
ist ein externes Dienstprogramm), daher sind sie leichter und "richtiger".
Aktualisieren:
Wie tylerl in seinem Kommentar erwähnte, gibt es auch den >| file.txt
Syntax.
Die meisten Shells haben eine Einstellung, die sie daran hindert, eine vorhandene Datei über >
abzuschneiden . Sie müssen >|
verwenden stattdessen. Dies dient dazu, menschliche Fehler zu vermeiden, wenn Sie wirklich mit >>
anhängen wollten . Sie können das Verhalten mit set -C
einschalten .
Damit wäre meiner Meinung nach die einfachste, geeignetste und portabelste Methode zum Abschneiden einer Datei:
:>| file.txt