как очистить ("усечь") файл в linux, который уже существует и каким-то образом защищен?

<p>у меня на сервере есть файл error.log, который мне нужно часто обрезать. у меня есть права доступа к файлу. открытие файла в vi> удаление всего контента> сохранение работает (очевидно). но когда я попробую ниже </p><pre><code>cat /dev/null > error.log </code></pre><p>я получаю сообщение</p><pre><code>file already exists. </code></pre><p>очевидно, что на сервере выполняется какая-то конфигурация для предотвращения случайного переопределения файлов. кто-нибудь может сказать, как мне «обрезать» файл одной командой?</p>

<p>у вас установлена опция <code>noclobber</code>. ошибка выглядит так, как будто она из csh, так что вы должны сделать:</p><pre><code>cat /dev/null >! file </code></pre><p>если я ошибаюсь, и вы используете bash, вы должны сделать:</p><pre><code>cat /dev/null >| file </code></pre><p>в bash вы также можете сократить это до:</p><pre><code>>| file </code></pre>

<p>вы также можете использовать функцию<strong> усечь </strong></p><pre><code>$truncate -s0 yourfile если разрешение отказано, используйте sudo$sudo truncate -s0 yourfile </code></pre><p>помощь/руководство:<strong> человек усекать </strong></p><p>проверено на ubuntu linux</p>

<p>этого будет достаточно, чтобы установить размер файла на 0:</p><pre><code>> error.log </code></pre>

<p>за это идет мой старший коллега:</p><pre><code>:> filename </code></pre><p>это не сломает файлы журнала, так что вы даже можете использовать его, например, в системном журнале.</p>

<blockquote> <p>false | тройник filetotruncate</p> </blockquote><p>может работать так же</p>

<p>так как sudo не будет работать с <a href="https://stackoverflow.com/questions/82256/how-do-i-use-sudo-to-redirect-output-to-a-location-i-dont-have-permission-to-wr">перенаправление</a> <code>></code>, мне нравится команда <code>tee</code> для этой цели </p><pre><code>echo "" | sudo tee filename </code></pre>

<p>любой может попробовать эту команду, чтобы обрезать любой файл в<strong> системе linux </strong></p><p>это, безусловно, будет работать в любом формате:</p><pre><code>truncate -s 0 file.txt </code></pre>