Thursday, August 16, 2007

using /dev/null in linux terminal

Here it is, several usage of /dev/null special file.

We all know that /dev/null acts like a black hole in the universe. Anything you throw at it would be totally gone forever. Any attempts to read or write from it result to nothing. This means any data written to this /dev/null is just discarded and gone. This also mean that any data reads from this special file always returns end of file (EOF).

However, /dev/null can be quite useful in several ways too. Do not issue any commands mentioned here unless you know what you are doing. You've been warned. However, you can continue to read more from below.

How to zap a file without changing file ownership and permission?

From below sample, bigfile is owned by owner1, and you are root, truncating bigfile to a zero sized file without any to file permission and file ownership changes can also be done as follows.

# ls -la bigfile
-rw-rw-rw- 1 owner1 owner1 123123123123 2007-08-16 19:04 bigfile

As root:

# cp /dev/null bigfile

# ls -la bigfile
-rw-rw-rw- 1 owner1 owner1 0 2007-08-16 19:05 bigfile

Ofcourse, file time stamps would be modified.

Now, we know that cat command display file contents into your scree. Let us try to suppress stdout. As root

# cat bigfile.txt > /dev/null

would show you nothing.

This is applicable also with stderr

# rm bigfile.txt 2> /dev/null
(Press Enter)

which obviously gives you nothing.

Now, how about issuing them both at the same time like so

# cat bigfile.txt 2> /dev/null > /dev/null

If bigfile.txt does not exist, there will be no error message output from your screen since we supressed stderr. If bigfile.txt does exist, the file contents will not be displayed to stdout as well. So, you get no output at all using the above command. One probable usage for the above usage could be integrated whe using crontab utility which was covered here.

Try file copying over or overwriting /dev/null and see how it works

# cp bigfile.txt /dev/null

Another alternative use.

We have discussed before of creating file without editing it is by using linux command touch. Instead of using touch to create a zero sized file, we can make use of /dev/null to attain the same file output like so

# cat /dev/null > newfile.txt

Thinking wider, logically, this means that any log messages supposedly to be written to, say /var/log/secure can be zapped and suppressed as well, perhaps by an already inside hacker.

Well, it is ONLY here as further usage combination example. As root

# cp /dev/null /var/log/secure
# rm -rf /var/log/secure
# ln -s /dev/null /var/log/secure

Any future security messages supposedly to be logged to /var/log/secure would now be thrown to black hole (/dev/null) using the above command.

This is a bad practice and only here to elaborate more usage and security features that would be possible using /dev/null linux command.

Here's another one.

Let us say you have just downloaded a package installer. You have installed this package before with your previous work or company. And you are very aware that the package when installed asks too many questions answerable yes or no, or with default values.

And you know you'll just going to press the ENTER key for these question, /dev/null can be helpful here as well.

Execute the package or script like so

# ./new-program < /dev/null &
# ./ < /dev/null &

If you happen to delete your /dev/null file, and you wish to recreate it back, simply follow here.

NOTES: Linux manual says, if /dev/null file is not writable and readable for all users, several application would act strangely.

If you think this /dev/null a.k.a. black hole has been interesting and useful for you, you might be interested with the black box from the middle of your screen as well. :)


Sign up for PayPal and start accepting credit card payments instantly.
ILoveTux - howtos and news | About | Contact | TOS | Policy