Android

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

Настя и сборник весёлых историй

Настя и сборник весёлых историй

Оглавление:

Anonim

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

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

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

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

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

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

: > filename

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

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

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

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

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

cat /dev/null > filename

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

echo -n > filename

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

> filename

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

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

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