27

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

0

3 Answers 3

29

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

i.e.

if [ $VAR ]
then
    echo $VAR exists!
fi
10
  • 4
    But unlike test it requires the last arg to be a ] Commented May 5, 2010 at 19:09
  • 4
    [ is a bash builtin, but so is test. not all shells are created equal — in plenty of them, test (and [) aren’t builtins.
    – Mo.
    Commented May 5, 2010 at 19:27
  • 3
    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 Commented May 5, 2010 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
    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
10

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.

1
  • I would accept your answer but Zypher beat you to it by a few seconds... sorry :-)
    – Josh
    Commented May 5, 2010 at 19:15
5

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/[ :)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .