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 signifietrueet 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.