GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unterschied zwischen Katze und „>“, um eine Datei auf Null zu setzen?

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

Linux
  1. Der Unterschied zwischen [[ $a ==Z* ]] und [ $a ==Z* ]?

  2. Der Unterschied zwischen .exrc und .vimrc?

  3. Unterschied zwischen Snat und Maskerade?

  4. Was ist der Unterschied zwischen dem Schreiben in eine Datei und einem zugeordneten Speicher?

  5. Unterschied zwischen $HOME und '~' (Tilde)?

Unterschied zwischen SAN und NAS

Der Unterschied zwischen mehr, weniger und den meisten Befehlen

Was ist der Unterschied zwischen Cat und Touch Command?

Unterschied zwischen apt und apt-get erklärt

Unterschied zwischen Softlinks und Hardlinks in Linux

Was ist der Unterschied zwischen fsync und syncfs?