¿Qué es / usr / bin / [?

21

Estaba hurgando en / usr / bin y encontré un archivo binario ELF llamado [. /usr/bin/[. Nunca he oído hablar de este archivo y mi primer pensamiento fue que era una forma inteligente de ocultar un programa, posiblemente un troyano. Sin embargo, está presente en todos mis servidores CentOS y parece no tener entrada manual. Puedo arriesgarme a adivinar qué es, pero estaba buscando una respuesta más autorizada ...

Josh
fuente

Respuestas:

23

Es una forma alternativa del comando 'prueba'. Utilizado principalmente en scripts.

es decir

if [ $VAR ]
then
    echo $VAR exists!
fi
Zypher
fuente
3
Pero a diferencia de la prueba, requiere que el último argumento sea a]
Florian Diesch 05 de
44
[ es un bash incorporado, pero también lo es test. no todos los proyectiles son iguales: en muchos de ellos, test(y [) no están integrados.
Lunes
2
Hay un bash incorporado, o al menos, mi sistema está actuando como si lo hubiera. [--help da una entrada diferente a / usr / bin / [--help
Matt Simmons
3
test y [están construidos para golpear, pero no necesariamente todos los demás shells. Puede salir temporalmente de la ruta y ejecutar un script bash que use cualquiera de los dos y verá que el script aún funciona.
Zoredache 05 de
3
@ Josh: una vez en otro milenio, el shell Bourne no tenía incorporado el operador de prueba. Era un comando regular como cualquier otro; y / bin / test se vinculó a / bin / [para brindar conveniencia de notación.
Jonathan Leffler
8

Es lo que llamas cuando estás usando algo como

if [ -e foo ]; then ...

en un script de shell (pero la mayoría de los shells lo tienen como buildin en estos días). prueba de hombre debería darte los documentos.

Florian Diesch
fuente
Aceptaría tu respuesta, pero Zypher te ganó por unos segundos ... lo siento :-)
Josh
2

Como otros señalaron, [es la utilidad de evaluación de condición del shell: prueba.

De hecho, hay una página de manual para eso.

$ man [

debería darle más detalles sobre el corchete de apertura.

Por cierto, en OS X, [se encuentra en /bin/[:)

Devy
fuente