Что такое / usr / bin / [?

21

Я просто копался в / usr / bin и нашел бинарный файл ELF с именем [. /usr/bin/[, Я никогда не слышал об этом файле, и моей первой мыслью было, что это умный способ скрыть программу, возможно, троян. Однако он присутствует на всех моих серверах CentOS и, похоже, не имеет ручного ввода. Я могу рискнуть предположить, что это такое, но я искал более авторитетный ответ ...

мистифицировать
источник

Ответы:

23

Это альтернативная форма команды test. В основном используется в сценариях.

т.е.

if [ $VAR ]
then
    echo $VAR exists!
fi
Zypher
источник
3
Но в отличие от теста требуется последний аргумент, чтобы быть]
Флориан Diesch
4
[ это Баш встроенная, но так test. Не все оболочки созданы равными - во многих из них test[) они не встроены.
Мо
2
Есть встроенный bash, или, по крайней мере, моя система работает так, как будто она есть. [--help дает информацию, отличную от / usr / bin / [--help
Мэтт Симмонс
3
test и [встроены в bash, но не обязательно во все другие оболочки. Вы можете временно выйти из пути и запустить скрипт bash, который использует любой из них, и вы увидите, что скрипт все еще работает.
Зоредаче
3
@Josh: однажды в другое тысячелетие в оболочке Bourne не было встроенного оператора тестирования. Это была обычная команда, как и любая другая; и / bin / test был связан с / bin / [для удобства записи.
Джонатан Леффлер
8

Это то, что вы называете, когда вы используете что-то вроде

if [ -e foo ]; then ...

в сценарии оболочки (но большинство оболочек имеют его как сборку в наши дни). человек тест должен дать вам документы.

Флориан Диш
источник
Я бы принял ваш ответ, но Зайфер опередил вас на несколько секунд ... извините :-)
Джош
2

Как уже отмечалось, [утилита оценки состояния оболочки - test.

На самом деле, есть страница руководства для этого!

$ человек [

должен дать вам более подробную информацию об открывающей квадратной скобке.

Кстати, в OS X, [находится в /bin/[:)

Devy
источник