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