Linux and Unix test command
Quick links
About test
Syntax
Examples
Linux and Unix main page
Check file types and compare values.
test EXPRESSION
test [EXPRESSION][ ][OPTION]
Exit with the status determined by EXPRESSION.
--help
display this help and exit
--version
output version
information and exit
An omitted EXPRESSION defaults to false.
Otherwise, EXPRESSION is true or false and sets exit status. It is one of:
( EXPRESSION )
EXPRESSION is true
! EXPRESSION
EXPRESSION
is false
EXPRESSION1 -a EXPRESSION2
both EXPRESSION1 and
EXPRESSION2 are true
EXPRESSION1 -o EXPRESSION2
either
EXPRESSION1 or EXPRESSION2 is true
-n STRING
the length of
STRING is nonzero
STRING equivalent to -n STRING
-z
STRING
the length of STRING is zero
STRING1 = STRING2
the
strings are equal
STRING1 != STRING2
the strings are not equal
INTEGER1 -eq INTEGER2
INTEGER1 is equal to INTEGER2
INTEGER1 -ge INTEGER2
INTEGER1 is greater than or equal to
INTEGER2
INTEGER1 -gt INTEGER2
INTEGER1 is greater than
INTEGER2
INTEGER1 -le INTEGER2
INTEGER1 is less than or
equal to INTEGER2
INTEGER1 -lt INTEGER2
INTEGER1 is
less than INTEGER2
INTEGER1 -ne INTEGER2
INTEGER1 is not
equal to INTEGER2
FILE1 -ef FILE2
FILE1 and FILE2 have the
same device and inode numbers
FILE1 -nt FILE2
FILE1 is
newer (modification date) than FILE2
FILE1 -ot FILE2
FILE1
is older than FILE2
-b FILE
FILE exists and is block
special
-c FILE
FILE exists and is character special
-d FILE
FILE exists and is a directory
-e FILE
FILE exists
-f FILE
FILE exists and is a regular file
-g FILE
FILE exists and is set-group-ID
-G FILE
FILE exists and is owned by the effective group ID
-h FILE
FILE exists and is a symbolic link (same as -L)
-k FILE
FILE exists and has its sticky bit set
-L FILE
FILE exists
and is a symbolic link (same as -h)
-O FILE
FILE exists and
is owned by the effective user ID
-p FILE
FILE exists and
is a named pipe
-r FILE
FILE exists and read permission is
granted
-s FILE
FILE exists and has a size greater than
zero
-S FILE
FILE exists and is a socket
-t
FD file descriptor FD is opened on a terminal
-u FILE
FILE
exists and its set-user-ID bit is set
-w FILE
FILE exists
and write permission is granted
-x FILE
FILE exists and
execute (or search) permission is granted
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. INTEGER may also be -l
STRING, which evaluates to the length of STRING.
NOTE: your shell may
have its own version of test and/or [, which usually supersedes the version
described here. Please refer to your shell's documentation for details about
the
options it supports.
test -s fakefile
Typing the above command would test if the file "fakefile" exists and has a size greater than zero. If you're typing this at the command line after the command has been typed in type echo $? to display the return code. 0 = True and 1 = False
test -s fakefile && echo Yes || echo No
Similar to the first example, however, in this example if the file exists it will echo Yes, if it doesn't exist, it will echo No.
&& <true command>
|| <false command>
test 10 = 5 && echo Yes
This next example is comparing the two integers 10 and 5, because these are not equal nothing will be printed since there is no || <false command>.
