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

Odpowiedzi:


23

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

to znaczy

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

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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.