113 votes

Comment vider ("tronquer") un fichier sous Linux qui existe déjà et qui est protégé d'une manière ou d'une autre?

J'ai un fichier appelé error.log sur mon serveur que je dois souvent tronquer. J'ai des permissions pour le fichier. Ouvrir le fichier dans vi> supprimer tout le contenu> enregistrer des travaux (évidemment). Mais quand j'essaye le dessous

 cat /dev/null > error.log
 

Je reçois le message

 File already exists.
 

De toute évidence, il existe une sorte de configuration effectuée sur le serveur pour empêcher toute suppression accidentelle de fichiers. Quelqu'un peut-il dire comment je "tronque" le fichier en une seule commande?

159voto

R Samuel Klatchko Points 44549

Vous avez les options noclobber définies. L'erreur semble provenir de csh, vous feriez donc:

 cat /dev/null >! file
 

Si je me trompe et que vous utilisez bash, vous devriez faire:

 cat /dev/null >| file
 

en bash, vous pouvez aussi raccourcir cela pour:

 >| file
 

72voto

risnandar Points 2236

Vous pouvez également utiliser la fonction tronquer

 $truncate -s0 yourfile
 

si la permission est refusée, utilisez sudo

 $sudo truncate -s0 yourfile
 

Aide / Manuel: homme tronqué

testé sur Ubuntu Linux

48voto

SIFE Points 2238

Cela suffira pour définir la taille du fichier à 0:

 > error.log
 

4voto

Dodger Web Points 106

false | tee fileToTruncate

peut fonctionner aussi bien

3voto

sakhunzai Points 2399

Puisque sudo ne fonctionnera pas avec la redirection > , j'aime bien la commande tee à cette fin.

 echo "" | sudo tee fileName
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X