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