Co to jest / usr / bin / [?

21

Właśnie grzebałem w / usr / bin i znalazłem plik binarny ELF o nazwie [. /usr/bin/[. Nigdy nie słyszałem o tym pliku i moją pierwszą myślą było to, że był to sprytny sposób na ukrycie programu, być może trojana. Jest jednak obecny na wszystkich moich serwerach CentOS i wydaje się, że nie ma ręcznego wprowadzania. Mogę zaryzykować zgadnięcie, co to jest, ale szukałem bardziej wiarygodnej odpowiedzi ...

Josh
źródło

Odpowiedzi:

23

Jest to alternatywna forma polecenia „test”. Najczęściej używany w skryptach.

to znaczy

if [ $VAR ]
then
    echo $VAR exists!
fi
Zypher
źródło
3
Ale w przeciwieństwie do testu wymaga ostatniego argumentu]
Florian Diesch
4
[ jest wbudowany w bash, ale tak też jest test. nie wszystkie powłoki są równe - w wielu z nich test(i [) nie są wbudowane.
Pon
2
Jest wbudowany bash, a przynajmniej mój system działa tak, jakby był. [--help podaje inne dane niż / usr / bin / [--help
Matt Simmons
3
test i [są wbudowane w bash, ale niekoniecznie wszystkie inne powłoki. Możesz tymczasowo zejść ze ścieżki i uruchomić skrypt bash, który używa jednego z nich, a zobaczysz, że skrypt nadal działa.
Zoredache
3
@Josh: w innym tysiącleciu powłoka Bourne'a nie miała wbudowanego operatora testowego. Było to zwykłe polecenie, jak każde inne; i / bin / test został połączony z / bin / [, aby zapewnić notacyjną wygodę.
Jonathan Leffler,
8

Tak się nazywa, gdy używasz czegoś takiego

if [ -e foo ]; then ...

w skrypcie powłoki (ale obecnie większość powłok ma go jako buildin). test człowieka powinien dać ci dokumenty.

Florian Diesch
źródło
Przyjąłbym twoją odpowiedź, ale Zypher pobił cię o kilka sekund ... przepraszam :-)
Josh
2

Jak zauważyli inni, [narzędzie oceny stanu powłoki - test.

W rzeczywistości jest do tego strona podręcznika!

$ człowiek [

powinien dać ci więcej szczegółów na temat otwierającego nawiasu kwadratowego.

Btw w OS X [znajduje się w /bin/[:)

Devy
źródło