test Cheat Sheet
This guide is the test man page nearly verbatim with formatting.
An blank EXPRESSION is false.
Expression combinations:
( EXPRESSION )-EXPRESSIONgrouping (is true)! EXPRESSION- InvertEXPRESSIONEXPRESSION1 -a EXPRESSION2- bothEXPRESSION1andEXPRESSION2are trueEXPRESSION1 -o EXPRESSION2- either EXPRESSION1 orEXPRESSION2is true
Strings
-n STRING- the length ofSTRINGis nonzero-z STRING- the length ofSTRINGis zeroSTRING1 = STRING2- the strings are equalSTRING1 != STRING2- the strings are not equal
Integers
INTEGER1 -eq INTEGER2-INTEGER1is equal toINTEGER2INTEGER1 -ge INTEGER2-INTEGER1is greater than or equal toINTEGER2INTEGER1 -gt INTEGER2-INTEGER1is greater thanINTEGER2INTEGER1 -le INTEGER2-INTEGER1is less than or equal toINTEGER2INTEGER1 -lt INTEGER2-INTEGER1is less thanINTEGER2INTEGER1 -ne INTEGER2-INTEGER1is not equal toINTEGER2
Files
FILE1 -ef FILE2-FILE1andFILE2have the same device and inode numbersFILE1 -nt FILE2-FILE1is newer (modification date) thanFILE2FILE1 -ot FILE2-FILE1is older thanFILE2
File types
-e FILE- FILE exists-b FILE- FILE exists and is block special-c FILE- FILE exists and is character special-d FILE- FILE exists and is a directory-f FILE- FILE exists and is a regular file-p FILE- FILE exists and is a named pipe-L FILE- FILE exists and is a symbolic link (same as-h)-h FILE- FILE exists and is a symbolic link (same as-L)-S FILE- FILE exists and is a socket
File bits
-k FILE- FILE exists and has its sticky bit set-g FILE- FILE exists and is set-group-ID-u FILE- FILE exists and its set-user-ID bit is set
File permissions
-G FILE- FILE exists and is owned by the effective group ID-O FILE- FILE exists and is owned by the effective user ID-r FILE- FILE exists and the user has read access-w FILE- FILE exists and the user has write access-x FILE- FILE exists and the user has execute (or search) access
File is not empty
-s FILE-FILEexists and has a size greater than zero-N FILE-FILEexists and has been modified since it was last read
Test if a file descriptor is a terminal
-t FD- file descriptorFDis opened on a terminal
Except for -h and -L, all FILE-related tests dereference symbolic links.
Beware that parentheses need to be escaped (e.g., by backslashes) for shells.
Binary -a and -o are ambiguous. Use test EXPR1 && test EXPR2 or test EXPR1 || test EXPR2 instead.