[
is a regular executable (/usr/bin/[
). [ xxx ]
is equivalent to test xxx
. [
can can be used, for example, in an if statement. [[
is a built-in. [[
is a built-in, it allows to compare strings with <
and >
. With [ … ]
, <
and >
would be treated as file redirectors, hence a file would be (over-)written or tried to be read from a file.