如何清空(“截断”)在Linux上的文件已经存在,并在某种程度上受到保护?
我在我的服务器上有一个名为error.log的文件,我需要经常截断。 我有权限的文件。 打开文件在vi>删除所有内容>保存工作(显然)。 但是当我尝试下面
cat /dev/null > error.log 我收到消息
 File already exists. 
很明显,在服务器上有一些configuration可以防止意外覆盖文件。 任何人都可以告诉我如何在一个命令中“截断”文件?
 你有noclobber选项设置。 这个错误看起来像是来自csh,所以你会这样做: 
 cat /dev/null >! file 
如果我错了,你正在使用bash,你应该这样做:
 cat /dev/null >| file 
在bash中,你也可以缩短到:
 >| file 
你也可以使用函数截断
 $truncate -s0 yourfile 
如果权限被拒绝,请使用sudo
 $sudo truncate -s0 yourfile 
帮助/手动: 人截断
在Ubuntu的Linux上testing
这足以将文件大小设置为0:
 > error.log 
我的高级同事为此表示赞赏:
 :> filename 
这不会破坏日志文件,所以你甚至可以在syslog上使用它。
false | tee fileToTruncate
也可以工作
 由于sudo不能使用redirect > ,所以我喜欢这个tee命令 
 echo "" | sudo tee fileName 
你也可以尝试:
 echo -n > /my/file