test - (BSD) condition command
test evaluates the expression expr, and if its value
is true then returns zero exit status; otherwise, a non zero exit status is
returned. test returns a non zero exit if there are no arguments.
The following primitives are used to construct expr:
- -r file
- true if the file exists and is readable.
- -w file
- true if the file exists and is writable.
- -u file
- true if the file exists and has the setuid bit set.
- -g file
- true if the file exists and has the setgid bit set.
- -k file
- true if the file exists and has the sticky bit set.
- -f file
- true if the file exists and is not a directory.
- -d file
- true if the file exists and is a directory.
- -h file
- true if the file exists and is a symbolic link.
- -L file
- true if the file exists and is a symbolic link.
- -p file
- true if the file exists and is a named pipe.
- -b file
- true if the file exists and is a block device.
- -c file
- true if the file exists and is a character device.
- -s file
- true if the file exists and has a size greater than zero.
- -t [fildes]
- true if the open file whose file descriptor number is fildes (1 by
default) is associated with a terminal device.
- -z s1
- true if the length of string s1 is zero.
- -n s1
- true if the length of the string s1 is nonzero.
- s1 = s2
- true if the strings s1 and s2 are equal.
- s1 != s2
- true if the strings s1 and s2 are not equal.
- s1
- true if s1 is not the null string.
- n1 -eq n2
- true if the integers n1 and n2 are algebraically equal. Any
of the comparisons -ne, -gt, -ge, -lt, or
-le may be used in place of -eq.
These primaries may be combined with the following operators:
- !
- unary negation operator
- -a
- binary and operator
- -o
- binary or operator
- ( expr )
- parentheses for grouping.
-a has higher precedence than -o. Notice that all
the operators and flags are separate arguments to test. Notice also
that parentheses are meaningful as command separators and must be
escaped.