Как обрезать (очистить) файлы в Linux

Усечение файлов Linux

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

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

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

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

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

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

 : > filename

Давайте разберем команду:

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

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

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

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

 cat /dev/null > filename

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

 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 выглядит следующим образом:

 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, используйте оператор перенаправления > , за которым следует имя файла.

Если у вас есть вопросы или замечания, пожалуйста, оставьте комментарий ниже.

усеченный терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *