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

UNIX Power Tools

UNIX Power ToolsSearch this book
Previous: 13.13 The "Filename" - Chapter 13
Redirecting Input and Output
Next: 13.15 What to Do with a Full Bit Bucket :-)

13.14 What Can You Do with an Empty File?

It isn't a file, actually, though you can use it like one. /dev/null is a UNIX device. [4] It's not a physical device. /dev/null is a special device that "eats" any text written to it and returns "end-of-file" (a file of length 0) when you read from it. So what the heck can you use it for?

[4] Well, okay. It's a device file .

  • Empty another file. Just copy /dev/null "on top of" the other file . (24.1 )

  • Make another program "quiet" by redirecting its output there. For instance, if you're putting a program into the background and you don't want it to bother you, type:

    % progname
     > /dev/null &

    That redirects (13.1 ) standard output but leaves standard error hooked to your terminal, in case there is an error.

  • Answer a program that asks a lot of questions-you know you'll just press RETURN at each prompt. In a lot of cases, you can redirect the program's standard input from /dev/null :

    % progname
     < /dev/null
    Want the default setup? If yes, press RETURN:
    Enter filename or press RETURN for default:

    You should test that with each program, though, before you assume this trick will work. (If it doesn't work, try yes (23.4 ) .)

  • Where a program needs an extra filename but you don't want it to read or write an actual file. For instance, the grep (27.1 ) programs won't give the name of the file where they find a match unless there are at least two filenames on the command line. When you use a wildcard in a directory where maybe only one file will match, use /dev/null to be sure that grep will always see more than one : (17.20 )

    % grep "
    " * /dev/null

    You're guaranteed that grep won't match its regular expression in /dev/null . :-)

  • Article 24.2 shows even more uses for /dev/null .

Another interesting device (mostly for programmers) is /dev/zero . When you read it, you'll get ASCII zeros (NUL characters) (51.3 ) forever. There are no newlines either. For both of those reasons, many UNIX commands have trouble reading it. If you want to play, the command below will give you a start (and head (25.20 ) will give you a stop!): [5]

[5] On some UNIX versions, the head program may not terminate after it's printed the first ten lines. In that case, use sed 10q instead of head .

% fold -20 /dev/zero | od -c | head

- JP

Previous: 13.13 The "Filename" - UNIX Power Tools Next: 13.15 What to Do with a Full Bit Bucket :-)
13.13 The "Filename" - Book Index 13.15 What to Do with a Full Bit Bucket :-)

The UNIX CD Bookshelf NavigationThe UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System