Ces deux commandes sont-elles différentes sur la façon dont elles procèdent pour mettre à zéro les fichiers ? Ce dernier est-il une manière plus courte de faire le premier ? Que se passe-t-il dans les coulisses ?
Les deux
$ cat /dev/null > file.txt
$ > file.txt
rendement
-rw-r--r-- 1 user wheel 0 May 18 10:33 file.txt
Réponse acceptée :
cat /dev/null > file.txt
est une utilisation inutile de chat.
En gros cat /dev/null
donne simplement cat
n'émettant rien. Oui, cela fonctionne, mais cela est mal vu par beaucoup car cela entraîne l'appel d'un processus externe qui n'est pas nécessaire.
C'est une de ces choses qui est courante simplement parce que c'est courant.
En utilisant uniquement > file.txt
fonctionnera sur la plupart des shells, mais ce n'est pas complètement portable. Si vous voulez être complètement portable, voici de bonnes alternatives :
true > file.txt
: > file.txt
Les deux :
et true
ne génèrent aucune donnée et sont des commandes intégrées du shell (alors que cat
est un utilitaire externe), ils sont donc plus légers et plus "propres".
Mise à jour :
Comme tylerl l'a mentionné dans son commentaire, il y a aussi le >| file.txt
syntaxe.
La plupart des shells ont un paramètre qui les empêchera de tronquer un fichier existant via >
. Vous devez utiliser >|
Au lieu. Ceci afin d'éviter toute erreur humaine lorsque vous vouliez vraiment ajouter avec >>
. Vous pouvez activer le comportement avec set -C
.
Donc, avec cela, je pense que la méthode la plus simple, la plus appropriée et la plus portable pour tronquer un fichier serait :
:>| file.txt