GNU/Linux >> Znalost Linux >  >> Linux

Rozdíl mezi Cat a „>“ k vynulování souboru?

Liší se tyto dva příkazy v tom, jak postupují při nulování souborů? Je to druhé kratší způsob, jak dělat to první? Co se děje v zákulisí?

Oba

$ cat /dev/null > file.txt

$ > file.txt 

výnos

-rw-r--r--  1 user  wheel  0 May 18 10:33 file.txt

Přijatá odpověď:

cat /dev/null > file.txt je zbytečné použití kat.

V podstatě cat /dev/null výsledkem je jednoduše cat nevydávají nic. Ano, funguje to, ale mnozí to odsuzují, protože to vede k vyvolání externího procesu, který není nutný.
Je to jedna z věcí, která je běžná jednoduše proto, že je běžná.

Stačí použít > file.txt bude fungovat na většině shellů, ale není úplně přenosný. Pokud chcete zcela přenosné, jsou dobré alternativy následující:

true > file.txt
: > file.txt

Oba : a true nevydávají žádná data a jsou vestavěné do shellu (zatímco cat je externí nástroj), jsou tedy lehčí a „správnější“.

Aktualizace:

Jak tylerl zmínil ve svém komentáři, existuje také >| file.txt syntaxe.

Většina shellů má nastavení, které jim zabrání zkrátit existující soubor pomocí > . Musíte použít >| namísto. Je to proto, aby se předešlo lidské chybě, když jste skutečně chtěli přidat >> . Chování můžete zapnout pomocí set -C .

Takže si myslím, že nejjednodušší, nejsprávnější a přenosná metoda zkrácení souboru by byla:

:>| file.txt

Linux
  1. Rozdíl mezi „du -sh *“ a „du -sh ./*“?

  2. Rozdíl mezi Eot a Eof?

  3. Rozdíl mezi symbolickými a pevnými odkazy?

  1. Rozdíl mezi Snat a Masquerade?

  2. Rozdíl mezi měkkými a pevnými odkazy v Linuxu

  3. Jaký je rozdíl mezi zápisem do souboru a namapovanou pamětí?

  1. Rozdíl mezi SAN a NAS

  2. rozdíl mezi souborem zařízení a ovladačem zařízení

  3. rozdíl mezi cgroups a jmennými prostory