Difference between ‘if -e’ and ‘if -f’

See: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

I believe those aren’t “if switches”, rather “test switches” (because you have to use them inside [] brackets.

But the difference is:

[ -e FILE ] True if FILE exists.

This will return true for both /etc/hosts and /dev/null and for directories.

[ -f FILE ] True if FILE exists and is a regular file.
This will return true for /etc/hosts and false for /dev/null (because it is not a regular file), and false for /dev since it is a directory.

Leave a Comment