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


21

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

Відповіді:


23

Це альтернативна форма команди 'test'. В основному використовується в сценаріях.

тобто

if [ $VAR ]
then
    echo $VAR exists!
fi

3
Але на відміну від тесту, для цього потрібен останній аргумент]
Флоріан Дієш

4
[ є bash вбудований, але так і є test. не всі оболонки створені рівними - в багатьох з них test[) не є вбудованими.
Мо

2
Є вбудований баш, або, принаймні, моя система працює так, ніби є. [--help дає інший вклад, ніж / usr / bin / [--help
Метт Сіммонс

3
тест і [є вбудованими для удару, але не обов'язково всі інші оболонки. Ви можете тимчасово вийти з контуру та запустити скрипт bash, який використовує будь-який, і ви побачите, що сценарій все ще працює.
Зоредаче

3
@Josh: колись ще на тисячоліття оболонки Борна не було вбудовано тестового оператора. Це була звичайна команда, як і будь-яка інша; та / bin / test був пов'язаний з / bin / [, щоб забезпечити нотаційну зручність.
Джонатан Леффлер

8

Це те, що ви телефонуєте, коли ви використовуєте щось подібне

if [ -e foo ]; then ...

в сценарії оболонки (але сьогодні більшість оболонок мають це як збір). man test повинен дати вам документи.


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

2

Як зазначали інші, [це корисна програма оцінки стану оболонки - тест.

Насправді, для цього є сторінка керівництва!

$ людина [

має надати більше деталей про квадратну дужку, що відкривається.

Btw, в ОС X, [знаходиться в /bin/[:)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.