Dans certaines situations, vous souhaiterez peut-être tronquer (vider) un fichier existant à une longueur nulle. En termes simples, tronquer un fichier signifie supprimer le contenu du fichier sans supprimer le fichier.
Tronquer un fichier est beaucoup plus rapide et facile que de supprimer le fichier, de le recréer et de définir les autorisations et la propriété correctes. De plus, si le fichier est ouvert par un processus, la suppression du fichier peut entraîner un dysfonctionnement du programme qui l'utilise.
Ce didacticiel explique comment tronquer des fichiers à une taille nulle dans les systèmes Linux à l'aide de la redirection du shell et de la commande truncate
commande.
Numéro de redirection du shell
La méthode la plus simple et la plus utilisée pour tronquer des fichiers consiste à utiliser le >
opérateur de redirection shell.
Le format général pour tronquer des fichiers à l'aide de la redirection est :
: > filename
Décomposons la commande :
- Le
:
deux-points signifietrue
et ne produit aucune sortie. - L'opérateur de redirection
>
rediriger la sortie de la commande précédente vers le fichier donné. filename
, le fichier que vous souhaitez tronquer.
Si le fichier existe, il sera tronqué à zéro. Sinon, le fichier sera créé.
Au lieu de :
peut également utiliser une autre commande qui ne produit aucune sortie.
Voici un exemple d'utilisation du cat
commande pour afficher le contenu de /dev/null
périphérique, qui ne renvoie qu'un caractère de fin de fichier :
cat /dev/null > filename
Une autre commande qui peut être utilisée est echo
. Le -n
l'option indique echo
pour ne pas ajouter de saut de ligne :
echo -n > filename
Sur la plupart des shells modernes tels que Bash ou Zsh, vous pouvez omettre la commande avant le symbole de redirection et utiliser :
> filename
Pour pouvoir tronquer un fichier, vous devez disposer des autorisations d'écriture sur le fichier. Habituellement, vous utiliseriez sudo
pour cela, mais les privilèges root élevés ne s'appliquent pas à la redirection. Voici un exemple :
sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied
Il existe plusieurs solutions qui permettent la redirection avec sudo
. La première option peut exécuter un nouveau shell avec sudo et exécuter une commande à l'intérieur de ce shell en utilisant le -c
drapeau :
sudo sh -c '> filename'
Une autre option consiste à diriger la sortie vers le tee
commande, élevez le tee
privilèges avec sudo
, et écrivez la sortie vide dans un fichier donné :
: | sudo tee filename
truncate
Commande #
truncate
est un utilitaire de ligne de commande qui vous permet de réduire ou d'étendre la taille d'un fichier à une taille donnée.
La syntaxe générale pour tronquer les fichiers à une taille nulle avec le truncate
commande, est la suivante :
truncate -s 0 filename
Le -s 0
l'option définit la taille du fichier à zéro.
Par exemple, pour vider le journal d'accès Nginx, vous utiliserez :
sudo truncate -s 0 /var/log/nginx/access.log
Vider tous les fichiers journaux #
Au fil du temps, votre lecteur de disque peut être encombré de nombreux fichiers journaux volumineux occupant une grande quantité d'espace disque.
La commande suivante videra les fichiers se terminant par ".log" sous le /var/log
répertoire :
sudo truncate -s 0 /var/log/**/*.log
Une meilleure option serait de faire pivoter, compresser et supprimer les fichiers journaux avec le logrotate
outil.
Conclusion #
Pour tronquer un fichier sous Linux, utilisez l'opérateur de redirection >
suivi du nom du fichier.
Si vous avez des questions ou des remarques, veuillez laisser un commentaire ci-dessous.