Как обрезать пустые файлы в Linux

12 set 2022 2 min di lettura
Как обрезать пустые файлы в Linux
Indice dei contenuti

Введение

В некоторых ситуациях может потребоваться обрезать (очистить) существующий файл нулевой длины. Проще говоря, усечение файла означает удаление содержимого файла без удаления самого файла.

Усечение файла намного быстрее и проще, чем его удаление или повторное создание с установкой правильных разрешений и свойств. Кроме того, если файл открыт процессом, удаление файла может привести к сбою в работе программы, которая его использует.

В этом руководстве объясняется, как обрезать файлы нулевого размера в системах Linux с помощью перенаправления оболочки и команды truncate.

Перенаправление оболочки

Самый простой и наиболее часто используемый метод усечения файлов — использовать оператор перенаправления оболочки >.

Общий формат для усечения файлов с использованием перенаправления:

: > filename

Разберем команду:

  • Двоеточие : означает « true и не производит никакого вывода.
  • Оператор перенаправления > перенаправляет вывод предыдущей команды в указанный файл.
  • filename, файл, который вы хотите обрезать.

Если файл существует, он будет обрезан до нуля. В противном случае файл будет создан.

Вместо : вы также можете использовать другую команду, которая не выводит ничего.

Вот пример использования команды cat для генерации содержимого устройства /dev/null, которое возвращает только символ конца файла:

cat /dev/null > filename

Другая команда, которую можно использовать, — это echo. Параметр -n указывает не добавлять новую строку:

echo -n > filename

В большинстве современных оболочек, таких как Bash или Zsh, вы можете опустить команду перед символом перенаправления и использовать:

> filename

Чтобы иметь возможность обрезать файл, у вас должны быть права на запись в файл. Обычно вы должны использовать команду sudo, но повышенные привилегии root не применяются к перенаправлению. Вот пример:

sudo: > /var/log/syslog

Вы должны получить выходное сообщение, подобное следующему:

bash: /var/log/syslog: Permission denied

Есть несколько решений, позволяющих выполнять перенаправление с помощью sudo. Первый вариант может запустить новую оболочку с помощью sudo и выполнить команду в этой оболочке с использованием флага -c:

sudo sh -c '> filename'

Другой вариант — перенаправить вывод команде tee, повысить привилегии tee с помощью sudo и записать пустой вывод в определенный файл:

: | sudo tee filename

Команда усечения

truncate — это утилита командной строки, которая позволяет уменьшить или увеличить размер файла до определенного размера.

Общий синтаксис для усечения файлов нулевого размера с помощью команды truncate следующий:

truncate -s 0 filename

Параметр -s 0 устанавливает размер файла равным нулю.

Например, чтобы очистить журнал доступа Nginx (файл журнала), вы должны использовать:

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

Очистить все файлы журнала (журнал)

Со временем ваш диск может быть загроможден множеством больших файлов журналов, которые занимают много места на диске.

Следующая команда сбрасывает файлы, оканчивающиеся на « .log », в каталог /var/log:

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

Лучшим вариантом будет поворот, сжатие и удаление файлов журнала с помощью инструмента logrotate.

Вывод

Чтобы обрезать файл в Linux, используйте оператор перенаправления >, за которым следует имя файла.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.