I was just poking around in /usr/bin and I found an ELF binary file called [
. /usr/bin/[
. I have never heard of this file and my first thought was that it was a clever way of hiding a program, possibly a trojan. However it's present on all my CentOS servers and seems to have no manual entry. I can hazard a guess as to what it is but I was looking for a more authoritative answer...
3 Answers
It's an alternative form of the 'test' command. Mostly used in scripts.
i.e.
if [ $VAR ]
then
echo $VAR exists!
fi
-
4
-
4
[
is a bash builtin, but so istest
. not all shells are created equal — in plenty of them,test
(and[
) aren’t builtins.– Mo.Commented May 5, 2010 at 19:27 -
3There is a bash built-in, or at least, my system is acting as though there is. [ --help gives different input than /usr/bin/[ --help Commented May 5, 2010 at 19:27
-
3test and [ are builtin to bash, but not necessarily all other shells. You could temporarily move out of the path and run a bash script that uses either and you will see that the script still works. Commented May 5, 2010 at 19:28
-
3@Josh: once upon another millennium, the Bourne shell did not have the test operator built in. It was a regular command like any other; and /bin/test was linked to /bin/[ to give notational convenience. Commented May 6, 2010 at 15:05
It's what you call when you are using something like
if [ -e foo ]; then ...
in a shell script (but most shells have it as a buildin this days). man test should give you the docs.
-
I would accept your answer but Zypher beat you to it by a few seconds... sorry :-)– JoshCommented May 5, 2010 at 19:15
As others pointed out, [
is the shell's condition evaluation utility - test.
In fact, there is a manual page for that!
$ man [
should give you more details about the opening square bracket.
Btw, in OS X, [
is located in /bin/[
:)