How to Truncate (Empty) Files in Linux

iun. 15, 2021
admin

În unele situații, este posibil să doriți să trunchiați (goliți) un fișier existent la o lungime zero. Cu cuvinte simple, trunchierea unui fișier înseamnă eliminarea conținutului fișierului fără a șterge fișierul.

Truncționarea unui fișier este mult mai rapidă și mai ușoară decât ștergerea fișierului, recrearea acestuia și setarea permisiunilor și a proprietății corecte. De asemenea, dacă fișierul este deschis de un proces, eliminarea fișierului poate cauza funcționarea defectuoasă a programului care îl folosește.

Acest tutorial explică cum să trunchiați fișierele la dimensiunea zero în sistemele Linux folosind redirecționarea shell-ului și comanda truncate.

Shell Redirection #

Cea mai ușoară și cea mai utilizată metodă de trunchiere a fișierelor este folosirea operatorului de redirecționare a shell-ului >.

Formatul general pentru trunchierea fișierelor folosind redirecționarea este:

: > filename

Să descompunem comanda:

  • Cele două puncte : înseamnă true și nu produce nici o ieșire.
  • Operatorul de redirecționare > redirecționează ieșirea comenzii precedente către fișierul dat.
  • filename, fișierul pe care doriți să îl trunchiați.

Dacă fișierul există, acesta va fi trunchiat la zero. În caz contrar, fișierul va fi creat.

În loc de : se poate folosi, de asemenea, o altă comandă care nu produce nici o ieșire.

Iată un exemplu de utilizare a comenzii cat pentru a scoate conținutul dispozitivului /dev/null, care returnează doar un caracter de sfârșit de fișier:

cat /dev/null > filename

O altă comandă care poate fi folosită este echo. Opțiunea -n îi spune lui echo să nu adauge o linie nouă:

echo -n > filename

În majoritatea shell-urilor moderne, cum ar fi Bash sau Zsh, puteți omite comanda de dinaintea simbolului de redirecționare și să folosiți:

> filename

Pentru a putea trunchia un fișier, trebuie să aveți permisiuni de scriere asupra fișierului. De obicei, ați folosi sudopentru aceasta, dar privilegiile ridicate de root nu se aplică la redirecționare. Iată un exemplu:

sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied

Există mai multe soluții care permit redirecționarea cu sudo. Prima opțiune poate rula un nou shell cu sudo și poate executa o comandă în interiorul acelui shell folosind stegulețul -c:

sudo sh -c '> filename'

O altă opțiune este de a direcționa ieșirea către comanda tee, de a ridica privilegiile tee cu sudo și de a scrie ieșirea goală într-un fișier dat:

: | sudo tee filename

truncate Comanda #

truncate este un utilitar de linie de comandă care vă permite să micșorați sau să extindeți dimensiunea unui fișier la o anumită dimensiune.

Sintaxa generală pentru trunchierea fișierelor la dimensiunea zero cu ajutorul comenzii truncate, este următoarea:

truncate -s 0 filename

Opțiunea -s 0setează dimensiunea fișierului la zero.

De exemplu, pentru a goli jurnalul de acces Nginx, veți folosi:

sudo truncate -s 0 /var/log/nginx/access.log

Empty All Log Files #

În timp, unitatea dvs. de disc poate fi aglomerată cu o mulțime de fișiere jurnal de mari dimensiuni care ocupă o cantitate mare de spațiu pe disc.

Comenda următoare va goli fișierele care se termină cu „.log” sub directorul /var/log:

sudo truncate -s 0 /var/log/**/*.log 

O opțiune mai bună ar fi să rotiți, să comprimați și să eliminați fișierele jurnal cu instrumentul logrotate.

Concluzie #

Pentru a trunchia un fișier în Linux folosiți operatorul de redirecționare > urmat de numele fișierului.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.