linuxfilecommand-line

How to empty ("truncate") a file on linux that already exists and is protected in someway?


I have a file called error.log on my server that I need to truncate frequently. 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, the server has some configuration to prevent accidental file overriding. Can anybody tell me how to "truncate" the file in a single command?


Solution

  • 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