test1
Check file types and compare values
Usage
test EXPRESSION
Overview
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
|
both EXPRESSION1 and EXPRESSION2 are true |
EXPRESSION1
|
either EXPRESSION1 or EXPRESSION2 is true |
-
-n STRING -
the length of STRING is nonzero
- STRING
-
equivalent to
-nSTRING
-
-z STRING -
the length of STRING is zero
STRING1 = STRING2
|
the strings are equal |
|---|---|
STRING1 != STRING2
|
the strings are not equal |
STRING1 > STRING2
|
STRING1 is greater than STRING2 in the current locale |
STRING1 < STRING2
|
STRING1 is less than STRING2 in the current locale |
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 its set-group-ID bit is set
-
-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)
-
-N FILE -
FILE exists and has been modified since it was last read
-
-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 the user has read access
-
-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 the user has write access
-
-x FILE -
FILE exists and the user has execute (or search) access
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.
Binary -a and -o are ambiguous. Use 'test EXPR1 && test EXPR2' or 'test EXPR1 || test EXPR2' instead.
'[' honors --help and --version, but 'test' treats them as STRINGs.
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.
Releases
19 releases since Debian 1.1 (Buzz); the text changed 15 times.
-N since Debian 11 (Bullseye);
-h since Debian 3.0 (Woody);
-n since Debian 4.0 (Etch).