Qu'est-ce que / usr / bin / [?

21

J'étais juste en train de fouiller dans / usr / bin et j'ai trouvé un fichier binaire ELF appelé [. /usr/bin/[. Je n'ai jamais entendu parler de ce fichier et ma première pensée a été que c'était une façon intelligente de cacher un programme, peut-être un cheval de Troie. Cependant, il est présent sur tous mes serveurs CentOS et semble n'avoir aucune entrée manuelle. Je peux deviner ce que c'est, mais je cherchais une réponse plus autoritaire ...

Josh
la source

Réponses:

23

C'est une forme alternative de la commande «test». Surtout utilisé dans les scripts.

c'est à dire

if [ $VAR ]
then
    echo $VAR exists!
fi
Zypher
la source
3
Mais contrairement au test, le dernier argument doit être un]
Florian Diesch
4
[ est un bash intégré, mais il en est de même test. tous les obus ne sont pas créés égaux - dans beaucoup d'entre eux, test(et [) ne sont pas intégrés.
Mo.
2
Il y a un bash intégré, ou du moins, mon système agit comme s'il y en avait un. [--help donne une entrée différente de / usr / bin / [--help
Matt Simmons
3
test et [sont intégrés à bash, mais pas nécessairement tous les autres shells. Vous pouvez temporairement quitter le chemin et exécuter un script bash qui utilise l'un ou l'autre et vous verrez que le script fonctionne toujours.
Zoredache
3
@Josh: il était une fois un autre millénaire, le shell Bourne n'avait pas intégré l'opérateur de test. C'était une commande régulière comme les autres; et / bin / test était lié à / bin / [pour faciliter la notation.
Jonathan Leffler
8

C'est ce que vous appelez lorsque vous utilisez quelque chose comme

if [ -e foo ]; then ...

dans un script shell (mais la plupart des shells l'ont comme buildin de nos jours). test de l'homme devrait vous donner les documents.

Florian Diesch
la source
J'accepterais votre réponse mais Zypher vous a battu pour quelques secondes ... désolé :-)
Josh
2

Comme d'autres l'ont souligné, [est l'utilitaire d'évaluation de l'état du shell - test.

En fait, il y a une page de manuel pour ça!

$ man [

devrait vous donner plus de détails sur le support carré d'ouverture.

Btw, sous OS X, [est situé dans /bin/[:)

Devy
la source