-a file |
True if file exists; it can be empty or have some content but, so long as it exists, this will be true |
-b file |
True if file exists and is a block special file such as a hard drive like /dev/sda or /dev/sda1 |
-c file |
True if file exists and is a character special file such as a TTY device like /dev/TTY1 |
-d file |
True if file exists and is a directory |
-e file |
True if file exists; this is the same as -a above |
-f file |
True if file exists and is a regular file, as opposed to a directory, a device special file, or a link, among others |
-g file |
True if file exists and is set-group-id, SETGID |
-h file |
True if file exists and is a symbolic link |
-k file |
True if file exists and its "sticky'" bit is set |
-p file |
True if file exists and is a named pipe (FIFO) |
-r file |
True if file exists and is readable, i.e., has its read bit set |
-s file |
True if file exists and has a size greater than zero; a file that exists but that has a size of zero will return false |
-t fd |
True if the file descriptor fd is open and refers to a terminal |
-u file |
True if file exists and its set-user-id (SUID) bit is set |
-w file |
True if file exists and is writable |
-x file |
True if file exists and is executable |
-G file |
True if file exists and is owned by the effective group ID |
-L file |
True if file exists and is a symbolic link |
-N file |
True if file exists and has been modified since it was last read |
-O file |
True if file exists and is owned by the effective user ID |
-S file |
True if file exists and is a socket |
file1 -ef file2 |
True if file1 and file2 refer to the same device and inode numbers |
file1 -nt file2 |
True if file1 is newer (according to modification date) than file2, or if file1 exists and file2 does not |
file1 -ot file2 |
True if file1 is older than file2, or if file2 exists and file1 does not |