home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  

Unix Power ToolsUnix Power ToolsSearch this book

15.2. Instead of Removing a File, Empty It

Sometimes you don't want to remove a file completely -- you just want to empty it:

Well, you get the idea by now.

How can you empty a file? Watch out: when some editors say that a file has "no lines," they may still append a newline character when writing the file. Just one character still takes a block of disk space to store. Here are some better ways to get a properly empty file:

  • In Bourne-type shells like sh and bash, the most efficient way is to redirect the output of a null command:

    $ > afile
  • If the file already exists, that command will truncate the file without needing a subprocess.

  • Copy the Unix empty file, /dev/null (Section 43.12), on top of the file:

    % cp /dev/null afile
  • Or just cat it there:

    % cat /dev/null > afile

You can also "almost" empty the file, leaving just a few lines, this way:

tail Section 12.8

% tail afile > tmpfile
% cat tmpfile > afile
% rm tmpfile

That's especially good for log files that you never want to delete completely. Use cat and rm, not mv -- mv will break any other links to the original file (afile) and replace it with the temporary file.

-- JP

Library Navigation Links

Copyright © 2003 O'Reilly & Associates. All rights reserved.