Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Here's a simple one. How do I truncate an existing file in linux? That is, how do I empty the contents of the file but keep the file. I can always delete the file then touch it but I was wondering if there's a single command that'll get the job done.

share|improve this question
up vote 11 down vote accepted

>output-file -- shortest possible version.

share|improve this answer
1  
accepted for shortness - btw what does the extra colon do in :>output-file ? – pygorex1 Dec 2 '09 at 21:06
    
No idea; probably best to ask mezgani since he was the one who suggested it. – womble Dec 2 '09 at 21:26
    
colon's a noop – Xepoch Dec 2 '09 at 21:29
    
This is the only correct answer. – Dennis Williamson Dec 2 '09 at 21:42
    
@Xepoch: Thanks; I couldn't find it mentioned in bash(1), it's too common a character. I suspected it was something like that, though. – womble Dec 2 '09 at 22:06

This solution is more efficient than cat, because it doesn't create a subprocess (in addition to the shell process):

true >output-file
share|improve this answer

You may do easy :)


:>output-file

share|improve this answer
    
This is short and it works in all major shells I use (bash, dash, zsh, pdksh, tcsh). – pts Dec 2 '09 at 22:31
    
yep, i think that not work on ksh – mezgani Dec 2 '09 at 23:03

I'm sure a harder-core *nix person will have a better idea, but I've always done:

cat /dev/null > output-file

To truncate files.

share|improve this answer

echo -n > YOURFILE
will remove file contents and keep the file, structure and permission intact.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.