executable nommé "["

Le
christian
Bonjour,

Quelqu'un sait-il à quoi sert /bin/[

~ $ ls -l /bin/[
-rwxr-xr-x 1 root root 24376 2006-06-25 03:59 /bin/[*

~ $ whatis [
grep: Expression régulière invalide
[: nothing appropriate

info et man et
http://packages.slackware.it/search.php?v.0&t=2&q=%5B
ne donnent rien non plus.
Google semble ignorer ce genre de caractère.

Merci de vos lumières

--
Christian
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Luc.Habert.00__arjf
Le #1957713
christian :

Quelqu'un sait-il à quoi sert /bin/[


C'est un autre nom de /bin/test. Quand il est invoqué sous ce nom, il faut
lui donner un ] en dernier argument. Il sert à tester des choses dans un
script shell. Genre :

if [ "$A" -lt 5 ]; then ...; fi

Ça fait une syntaxe un peu plus sympa que

if test "$A" -lt 5; then ...; fi

. Enfin perso, j'utilise la seconde parce que je l'ai apprise en premier.

christian
Le #1957712
Luc Habert a écrit:

christian :

Quelqu'un sait-il à quoi sert /bin/[


C'est un autre nom de /bin/test. Quand il est invoqué sous ce nom, il
faut lui donner un ] en dernier argument. Il sert à tester des choses
dans un script shell. Genre :

if [ "$A" -lt 5 ]; then ...; fi



ok merci
je ne savais pas que les caractères spéciaux de bash pouvaient être des
executables

je vais étudier ça
http://abs.traduc.org/abs-4.2.01-fr/ch03.html#leftbracket
(chez moi /bin/[ n'est pas un lien vers /bin/test comme dit ici:
http://abs.traduc.org/abs-4.2.01-fr/ch07.html#ttestref
)

--
Christian


YBM
Le #1958104
ok merci
je ne savais pas que les caractères spéciaux de bash pouvaient être des
executables


En fait [ n'est absolument pas un caractère spécial (contrairement à ; (
) etc.). Dans bash c'est une commande interne (voir ci-dessous), donc
un if [ ... (ou un [ ... ] && ... ) va appeler cette commande qui a,
en gros, la même syntaxe que /usr/bin/test ou /usr/bin/[ :

$ type [ ; which [
[ is a shell builtin
/usr/bin/[
$ if [ coin = coin ] ; then echo coin ; fi
coin
$ if /usr/bin/[ coin = coin ] ; then echo coin ; fi
coin

Un shell plus minimaliste que bash pourrait très bien ne pas
avoir de commande interne [ que les mêmes scripts s'exécuteraient
de la même façon, juste un peu plus lentement à cause du
fork/exec de /usr/bin/[ à chaque if [ ...

Luc.Habert.00__arjf
Le #1958103
YBM :

En fait [ n'est absolument pas un caractère spécial


Si, dans les motifs.

YBM
Le #1958242
YBM :

En fait [ n'est absolument pas un caractère spécial


Si, dans les motifs.


Certes, donc [ n'est absolument pas un caractère spécial dans ce
contexte.


Luc.Habert.00__arjf
Le #1958240
YBM :

Certes, donc [ n'est absolument pas un caractère spécial dans ce
contexte.


Il suffirait qu'il y ait un crochet fermant plus loin dans le même mot pour
qu'il le devienne. Je trouve ton « absolument pas » absolument exagéré.

Luc.Habert.00__arjf
Le #1958239
Ce que je veux dire c'est qu'il faut aller voir plus loin que le caractère
pour décider de si il est spécial ou non. Je n'ai clairement pas envie
d'appeler ça un caractère absolument pas spécial.
YBM
Le #1958238
YBM :

Certes, donc [ n'est absolument pas un caractère spécial dans ce
contexte.


Il suffirait qu'il y ait un crochet fermant plus loin dans le même mot pour
qu'il le devienne. Je trouve ton « absolument pas » absolument exagéré.


[mode=enculage de mouche]

[ est justement suivi d'une espace (caractère spécial du shell) dans ce
contexte, ce qui exclu absolument qu'un ] soit présent dans le même mot
puisque le mot se termine et commence par [.

[/mode]


Professeur M
Le #1965757

En fait [ n'est absolument pas un caractère spécial (contrairement à ; (
) etc.). Dans bash c'est une commande interne


et là où je suis bluffé :

~$ man [

TEST(1) Commandes TEST(1)
NOM
test - Vérifier le type d’un fichier, et comparer des valeurs

;-)

Publicité
Poster une réponse
Anonyme