Как очистить ("усечь") файл в Linux, который уже существует и каким-то образом защищен? - PullRequest
110 голосов
/ 11 марта 2010

У меня на сервере есть файл error.log, который мне нужно часто обрезать.У меня есть права доступа к файлу.Открытие файла в vi> удаление всего контента> сохранение работает (очевидно).Но когда я пытаюсь выполнить следующие действия

cat /dev/null > error.log

, я получаю сообщение

File already exists.

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

Ответы [ 8 ]

158 голосов
/ 11 марта 2010

У вас установлена ​​опция noclobber. Ошибка выглядит так, как будто она из csh, поэтому вы должны сделать:

cat /dev/null >! file

Если я ошибаюсь и вы используете bash, вам следует сделать:

cat /dev/null >| file

в bash, вы также можете сократить это до:

>| file
70 голосов
/ 26 августа 2013

Вы также можете использовать функцию усечение

$truncate -s0 yourfile

если в разрешении отказано, используйте sudo

$sudo truncate -s0 yourfile

Справка / руководство: усечение человека

протестировано на Ubuntu Linux

49 голосов
/ 12 марта 2013

Этого будет достаточно, чтобы установить размер файла 0:

> error.log
7 голосов
/ 09 апреля 2015

кредит идет на моего старшего коллегу за это:

:> filename

Это не сломает файлы журнала, так что вы даже можете использовать его, например, в syslog.

4 голосов
/ 31 октября 2012

false | тройник fileToTruncate

может работать так же

2 голосов
/ 09 января 2014

Поскольку sudo не будет работать с перенаправлением >, мне нравится команда tee для этой цели

echo "" | sudo tee fileName
0 голосов
/ 13 июля 2018

Любой может попробовать эту команду для усечения любого файла в linux system

Это, безусловно, будет работать в любом формате:

truncate -s 0 file.txt
0 голосов
/ 27 мая 2013

Вы также можете попробовать:

echo -n > /my/file

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...