Reputation: 2819
I have a file called error.log on my server that I need to frequently truncate. I have rw permissions for the file. Opening the file in vi > deleting all content > saving works (obviously). But when I try the below
cat /dev/null > error.log
I get the message
File already exists.
Obviously there is some kind of configuration done on the server to prevent accidental overriding of files. Can anybody tell how do I "truncate" the file in a single command?
Upvotes: 118
Views: 120495
Reputation: 21
Any one can try this command to truncate any file in linux system
This will surely work in any format :
truncate -s 0 file.txt
Upvotes: 2
Reputation: 1626
the credit goes for my senior colleague for this:
:> filename
This will not break log files, so you can even use it on syslog, for example.
Upvotes: 13
Reputation: 14470
Since sudo will not work with redirection >
, I like the tee
command for this purpose
echo "" | sudo tee fileName
Upvotes: 4
Reputation: 5563
You can also use function truncate
$truncate -s0 yourfile
if permission denied, use sudo
$sudo truncate -s0 yourfile
Help/Manual: man truncate
tested on ubuntu Linux
Upvotes: 77
Reputation: 76531
You have the noclobber
option set. The error looks like it's from csh, so you would do:
cat /dev/null >! file
If I'm wrong and you are using bash, you should do:
cat /dev/null >| file
in bash, you can also shorten that to:
>| file
Upvotes: 164