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...

link|improve this question

Better tag suggestions welcomed! – Josh May 5 '10 at 19:04
When I welcomed better tags I wasn't aware I was starting an edit war ;-) – Josh May 24 '10 at 21:51
feedback

2 Answers

up vote 15 down vote accepted

It's an alternative form of the 'test' command. Mostly used in scripts.

i.e.

if [ $VAR ]
then
    echo $VAR exists!
fi
link|improve this answer
2  
But unlike test it requires the last arg to be a ] – Florian Diesch May 5 '10 at 19:09
2  
[ is a bash builtin, but so is test. not all shells are created equal — in plenty of them, test (and [) aren’t builtins. – Mo. May 5 '10 at 19:27
2  
There is a bash built-in, or at least, my system is acting as though there is. [ --help gives different input than /usr/bin/[ --help – Matt Simmons May 5 '10 at 19:27
3  
test 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. – Zoredache May 5 '10 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. – Jonathan Leffler May 6 '10 at 15:05
show 4 more comments
feedback

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.

link|improve this answer
I would accept your answer but Zypher beat you to it by a few seconds... sorry :-) – Josh May 5 '10 at 19:15
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.