Frage Was ist / usr / bin / [?


Ich stocherte gerade in / usr / bin herum und fand eine ELF-Binärdatei namens [. /usr/bin/[. Ich habe noch nie von dieser Datei gehört und mein erster Gedanke war, dass es eine clevere Art war, ein Programm zu verstecken, möglicherweise einen Trojaner. Es ist jedoch auf allen CentOS-Servern vorhanden und scheint keine manuelle Eingabe zu haben. Ich kann raten, was es ist, aber ich suchte nach einer autoritativeren Antwort ...


19
2018-05-05 19:04


Ursprung




Antworten:


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

d.h.

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

21
2018-05-05 19:07



Aber im Gegensatz zu Test erfordert es die letzte Arg zu sein - Florian Diesch
[  ist Ein Bash eingebaut, aber so ist es test. Nicht alle Schalen sind gleich - in vielen von ihnen, test (und [) sind nicht eingebaut. - Mo.
Es ist ein Bash eingebaut, oder zumindest verhält sich mein System so, als ob es da wäre. [--help gibt eine andere Eingabe als / usr / bin / [--help - Matt Simmons
test und [sind eingebaut, um alle anderen Shells zu betäuben, aber nicht notwendigerweise. Sie könnten vorübergehend den Pfad verlassen und ein Bash-Skript ausführen, das beides verwendet und Sie werden sehen, dass das Skript immer noch funktioniert. - Zoredache
@Josh: Einmal in einem anderen Jahrtausend hatte die Bourne-Shell den Testoperator nicht eingebaut. Es war ein regulärer Befehl wie jeder andere; und / bin / test wurde mit / bin / [verknüpft, um eine Notation zu ermöglichen. - Jonathan Leffler


Es ist, was Sie anrufen, wenn Sie etwas wie verwenden

if [ -e foo ]; then ...

in einem Shell-Skript (aber die meisten Shells haben es als Buildin in diesen Tagen). Mann Test sollte dir die Dokumente geben.


7
2018-05-05 19:08



Ich würde deine Antwort akzeptieren, aber Zypher hat dich ein paar Sekunden dafür geschlagen ... sorry :-) - Josh


Wie andere darauf hingewiesen haben, [ ist das Condition Evaluation Utility der Shell - Test.

In der Tat gibt es eine Handbuchseite dafür!

$ mann [

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

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


0
2018-04-21 16:00