Ответ 1
У вас есть опция noclobber
. Ошибка выглядит как csh, поэтому вы бы сделали:
cat /dev/null >! file
Если я ошибаюсь и вы используете bash, вы должны сделать:
cat /dev/null >| file
в bash, вы также можете сократить это:
>| file
У меня есть файл error.log на моем сервере, который мне нужно часто усекать. У меня есть права на rw для файла. Открытие файла в vi > удаление всего содержимого > сохранение (очевидно). Но когда я попробую ниже
cat /dev/null > error.log
Я получаю сообщение
File already exists.
Очевидно, что на сервере существует какая-то конфигурация, чтобы предотвратить случайное переопределение файлов. Может ли кто-нибудь сказать, как я "обрезаю" файл в одной команде?
У вас есть опция noclobber
. Ошибка выглядит как csh, поэтому вы бы сделали:
cat /dev/null >! file
Если я ошибаюсь и вы используете bash, вы должны сделать:
cat /dev/null >| file
в bash, вы также можете сократить это:
>| file
Вы также можете использовать функцию truncate
$truncate -s0 yourfile
Если разрешение отклонено, используйте sudo
$sudo truncate -s0 yourfile
Справка/руководство: человек усекает
протестирован на ubuntu Linux
Этого будет достаточно, чтобы установить размер файла 0:
> error.log
кредит для моего старшего коллеги за это:
:> filename
Это не приведет к поломке файлов журнала, поэтому вы можете даже использовать его в syslog, например.
false | tee fileToTruncate
может работать также
Поскольку sudo не будет работать с перенаправлением >
, мне нравится команда tee
для этой цели
echo "" | sudo tee fileName
Любой может попробовать эту команду, чтобы обрезать любой файл в системе linux
Это наверняка будет работать в любом формате:
truncate -s 0 file.txt
Я делаю так:
cp /dev/null file
Вы также можете попробовать:
echo -n > /my/file