GNU/Linux >> Linux Esercitazione >  >> Linux

Differenza tra Cat e ">" per azzerare un file?

Questi due comandi sono diversi su come azzerare i file? Il secondo è un modo più breve di fare il primo? Cosa sta succedendo dietro le quinte?

Entrambi

$ cat /dev/null > file.txt

$ > file.txt 

resa

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

Risposta accettata:

cat /dev/null > file.txt è un uso inutile di cat.

Fondamentalmente cat /dev/null risulta semplicemente in cat non emettendo nulla. Sì, funziona, ma è disapprovato da molti perché si traduce nell'invocare un processo esterno che non è necessario.
È una di quelle cose che è comune semplicemente perché è comune.

Usando solo > file.txt funzionerà sulla maggior parte delle shell, ma non è completamente portatile. Se vuoi essere completamente portatile, le seguenti sono buone alternative:

true > file.txt
: > file.txt

Entrambi : e true non generano dati e sono incorporati nella shell (mentre cat è un'utilità esterna), quindi sono più leggeri e più "corretti".

Aggiornamento:

Come menzionato da Tylerl nel suo commento, c'è anche il >| file.txt sintassi.

La maggior parte delle shell ha un'impostazione che impedirà loro di troncare un file esistente tramite > . Devi usare >| invece. Questo serve a prevenire l'errore umano quando volevi davvero aggiungere >> . Puoi attivare il comportamento con set -C .

Quindi, con questo, penso che il metodo più semplice, appropriato e portatile per troncare un file sarebbe:

:>| file.txt

Linux
  1. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

  2. Differenza tra [0-9], [[:digit:]] e D?

  3. La differenza tra .exrc e .vimrc?

  4. Differenza tra un file system distribuito e un cluster?

  5. Differenza tra $HOME e '~' (tilde)?

Differenza tra SAN e NAS

La differenza tra più, meno e la maggior parte dei comandi

Qual è la differenza tra Cat e Touch Command

Differenza tra apt e apt-get spiegato

Qual è la differenza tra fsync e syncfs?

Differenza tra file di dispositivo e driver di dispositivo