Was ist / usr / bin / [?

21

Ich habe mich nur in / usr / bin umgesehen und eine ELF-Binärdatei namens gefunden [. /usr/bin/[. Ich habe noch nie von dieser Datei gehört, und mein erster Gedanke war, dass es eine clevere Möglichkeit war, ein Programm, möglicherweise einen Trojaner, zu verstecken. Es ist jedoch auf allen meinen CentOS-Servern vorhanden und scheint keine manuelle Eingabe zu haben. Ich kann eine Vermutung anstellen, was es ist, aber ich habe nach einer verbindlicheren Antwort gesucht ...

Josh
quelle

Antworten:

23

Es ist eine alternative Form des Befehls 'test'. Wird meistens in Skripten verwendet.

dh

if [ $VAR ]
then
    echo $VAR exists!
fi
Zypher
quelle
3
Aber anders als bei einem Test muss das letzte Argument ein] sein
Florian Diesch
4
[ ist ein bash builtin, aber so ist es auch test. Nicht alle Shells sind gleich - in vielen von ihnen sind test(und [) keine eingebauten Shells.
Mo.,
2
Es ist eine Bash eingebaut, oder zumindest verhält sich mein System so, als ob es es gäbe. [--help gibt eine andere Eingabe als / usr / bin / [--help
Matt Simmons
3
test und [sind für das Bashing gedacht, aber nicht unbedingt für alle anderen Shells. Sie könnten sich vorübergehend aus dem Pfad entfernen und ein Bash-Skript ausführen, das eines von beiden verwendet, und Sie werden sehen, dass das Skript immer noch funktioniert.
Zoredache
3
@Josh: Es war einmal ein Jahrtausend, in dem in der Bourne-Shell kein Testoperator eingebaut war. Es war ein regulärer Befehl wie jeder andere. und / bin / test wurde zur Vereinfachung der Notation mit / bin / [verknüpft.
Jonathan Leffler
8

Das nennt man, wenn man so etwas benutzt

if [ -e foo ]; then ...

in einem Shell-Skript (aber die meisten Shells haben es in diesen Tagen als Buildin). man test sollte dir die docs geben.

Florian Diesch
quelle
Ich würde deine Antwort akzeptieren, aber Zypher hat dich ein paar Sekunden geschlagen ... sorry :-)
Josh
2

Wie andere betonten, [ist das Dienstprogramm zur Zustandsbewertung der Shell - test.

Tatsächlich gibt es dafür eine Handbuchseite!

$ man [

sollte Ihnen mehr Details über die öffnende eckige Klammer geben.

Übrigens, in OS X, [befindet sich in /bin/[:)

Devy
quelle