Che cos'è / usr / bin / [?


21

Stavo solo cercando in / usr / bin e ho trovato un file binario ELF chiamato [. /usr/bin/[. Non ho mai sentito parlare di questo file e il mio primo pensiero è stato che fosse un modo intelligente di nascondere un programma, forse un trojan. Tuttavia è presente su tutti i miei server CentOS e sembra non avere immissione manuale. Posso azzardare un'ipotesi su cosa sia ma stavo cercando una risposta più autorevole ...

Risposte:


23

È una forma alternativa del comando 'test'. Utilizzato principalmente negli script.

vale a dire

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

3
Ma a differenza del test richiede che l'ultimo argomento sia un]
Florian Diesch

4
[ è un built-in bash, ma lo è anche test. non tutte le shell sono create uguali - in molte di esse test(e [) non sono integrate.
Mo.

2
C'è un bash incorporato, o almeno, il mio sistema si comporta come se ci fosse. [--help fornisce input diversi rispetto a / usr / bin / [--help
Matt Simmons,

3
test e [sono integrati per bash, ma non necessariamente per tutte le altre shell. Potresti temporaneamente uscire dal percorso ed eseguire uno script bash che utilizza uno dei due e vedrai che lo script funziona ancora.
Zoredache,

3
@Josh: una volta su un altro millennio, la shell Bourne non aveva l'operatore di test incorporato. Era un comando regolare come un altro; e / bin / test è stato collegato a / bin / [per dare maggiore praticità.
Jonathan Leffler,

8

È quello che chiami quando usi qualcosa del genere

if [ -e foo ]; then ...

in uno script di shell (ma la maggior parte delle shell lo ha come buildin al giorno d'oggi). man test dovrebbe darti i documenti.


Accetterei la tua risposta, ma Zypher ti ha battuto per qualche secondo ... scusa :-)
Josh,

2

Come altri hanno sottolineato, [è l'utilità di valutazione delle condizioni della shell - test.

In effetti, esiste una pagina di manuale per questo!

$ man [

dovrebbe darti maggiori dettagli sulla parentesi quadra di apertura.

A proposito, in OS X, [si trova in /bin/[:)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.