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 "
whatever
" * /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 ofhead
.
fold od |
%
|
---|
-