which

Le
Thomas
bonjour :-)


je croyais que which indiquait l'emplacement de tous les logiciels dont
on donne le nom, present dans le PATH

je viens de m'appercevoir que non, il ne donne que celui qui va etre
executé, cad le 1er

y a t il qqch qui puisse repondre à mon besoin ?


j'ai fait un tas de petits logiciels avec des noms tres courts,
et je me suis demandé apres si il n'y avait pas dans le systeme des
logiciels avec les memes noms (auquel cas ca pourrait poser des pbs :-/ )

donc j'ai besoin de ca pour verifier maintenant si il y a chevauchement
ou pas :-)

--
Informations sur Nicolas Sarkozy :
http://www.betapolitique.fr/spip.php?article0602
http://www.betapolitique.fr/spip.php?article0601
http://www.betapolitique.fr/spip.php?article0414
http://www.betapolitique.fr/spip.php?article0606
http://tDeContes.hd.free.fr/divers/Ruptures.pdf
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Luc.Habert.00__arjf
Le #741705
Thomas :

je croyais que which indiquait l'emplacement de tous les logiciels dont
on donne le nom, present dans le PATH

je viens de m'appercevoir que non, il ne donne que celui qui va etre
executé, cad le 1er

y a t il qqch qui puisse repondre à mon besoin ?


Le which de zsh a une option « -a ».

Benoit Izac
Le #741703
Bonjour,

le 02/06/2007 à 15:09, Thomas a écrit dans le message

je croyais que which indiquait l'emplacement de tous les logiciels
dont on donne le nom, present dans le PATH

je viens de m'appercevoir que non, il ne donne que celui qui va etre
executé, cad le 1er

y a t il qqch qui puisse repondre à mon besoin ?


% for d in `echo $PATH | tr ':' ' '`; do find $d -name echo; done
/bin/echo
/usr/bin/echo
/usr/X11R6/bin/echo

--
Benoit Izac

Luc.Habert.00__arjf
Le #741702
Benoit Izac :

% for d in `echo $PATH | tr ':' ' '`; do find $d -name echo; done


Au secours!

set -f
OLDIFS=$IFS
IFS=:
for d in $PATH; do A=$d/$MACHIN; test -x "$A" && printf '%sn' "$A"; done
IFS=$OLDIFS
set +f

Thomas
Le #741697
In article (Dans l'article) (Luc Habert) wrote (écrivait) :

Thomas :

je croyais que which indiquait l'emplacement de tous les logiciels dont
on donne le nom, present dans le PATH

je viens de m'appercevoir que non, il ne donne que celui qui va etre
executé, cad le 1er

y a t il qqch qui puisse repondre à mon besoin ?


Le which de zsh a une option « -a ».


moi c'est tcsh
ca marche pas :-(

--
Informations sur Nicolas Sarkozy :
http://www.betapolitique.fr/spip.php?article0602
http://www.betapolitique.fr/spip.php?article0601
http://www.betapolitique.fr/spip.php?article0414
http://www.betapolitique.fr/spip.php?article0606
http://tDeContes.hd.free.fr/divers/Ruptures.pdf


Thomas
Le #741696
In article (Dans l'article) (Luc Habert) wrote (écrivait) :

Benoit Izac :

% for d in `echo $PATH | tr ':' ' '`; do find $d -name echo; done


Au secours!

set -f
OLDIFS=$IFS
IFS=:
for d in $PATH; do A=$d/$MACHIN; test -x "$A" && printf '%sn' "$A"; done
IFS=$OLDIFS
set +f


merci :-)

si je met ca dans un fichier, avec juste $1 pour $MACHIN, ca suffit ?
faut que je precise le nom d'un shell au debut ?

que fait set -f et set +f ?
et à quoi sert IFS ? puisqu'il n'est pas dans la boucle

--
Informations sur Nicolas Sarkozy :
http://www.betapolitique.fr/spip.php?article0602
http://www.betapolitique.fr/spip.php?article0601
http://www.betapolitique.fr/spip.php?article0414
http://www.betapolitique.fr/spip.php?article0606
http://tDeContes.hd.free.fr/divers/Ruptures.pdf


Luc.Habert.00__arjf
Le #741465
Thomas :

moi c'est tcsh


Pitié, oublie cette horreur...

Luc.Habert.00__arjf
Le #741464
Thomas :

si je met ca dans un fichier, avec juste $1 pour $MACHIN, ca suffit ?
faut que je precise le nom d'un shell au debut ?


Oui, « #!/bin/sh ». Mon code est du sh, je n'ai aucune idée de si ça marche
avec tcsh.

que fait set -f et set +f ?
et à quoi sert IFS ? puisqu'il n'est pas dans la boucle


Quand tu as un « $PLOUM » non quoté (dans mon code, c'était le « $PATH »),
son contenu subi deux transformations :
- découpage en morceaux séparés par les caractères contenus dans la variable
IFS (qui par défaut contient le whitespace)
- chaque morceau est ensuite examiné pour voir si il contient des « * »,
« ? » et « [] », auquel cas il y a expansion en tous les noms de fichiers
qui matchent (si il n'y en a pas, le morceau est laissé tel quel, oui, c'est
bizarre, mais ça peut être utile).

Donc mon « IFS=: » sert à ce que dans le « for d in $PATH; » le contenu de
la variable « PATH » soit découpé sur les « : ». Mais ensuite, je ne veux
pas que la deuxième étape soit effectuée, donc je la désactive avec le « set
-f ».

À la fin, je restaure la valeur initiale de « IFS », et je réactive le
globbing avec « set +f ».

Thierry Boudet
Le #741462
On 2007-06-04, Thomas

si je met ca dans
faut que je precise
que fait set -f et
et à quoi sert


J'ai trouvé récemment un O'Reilly "Introduction aux scripts shells"
qui répond à toute cette gamme de questions.


--
{ SIGWHAT?!!, "BACKSIGNAL" },
/* the processus signal the kill program it disagree
with the previous signal given. See anarchy(3) */

Stephane Dupille
Le #741234
bonjour :-)


Hello,

je croyais que which indiquait l'emplacement de tous les logiciels dont
on donne le nom, present dans le PATH
y a t il qqch qui puisse repondre à mon besoin ?


Sur les BSD, il y a whereis qui permet de rechercher ça, et bien
plus. On doit le trouver sur les Linux aussi, normalement.

Thomas
Le #741228
In article (Dans l'article) Stephane Dupille

je croyais que which indiquait l'emplacement de tous les logiciels dont
on donne le nom, present dans le PATH
y a t il qqch qui puisse repondre à mon besoin ?


Sur les BSD, il y a whereis qui permet de rechercher ça, et bien
plus. On doit le trouver sur les Linux aussi, normalement.


thomas% which at
/Users/thomas/bin/compil/at
thomas% whereis at
/usr/bin/at

thomas% which gcc
/Users/thomas/bin/autoinstall/ada/4.2/bin/gcc
thomas% whereis gcc
/usr/bin/gcc


c'est bizarre !
on dirait que ca ne donne que ce qui a été installé par le systeme

ca se base sur quoi ?

--
Informations sur Nicolas Sarkozy :
http://www.betapolitique.fr/spip.php?article0602
http://www.betapolitique.fr/spip.php?article0601
http://www.betapolitique.fr/spip.php?article0414
http://www.betapolitique.fr/spip.php?article0606
http://tDeContes.hd.free.fr/divers/Ruptures.pdf


Publicité
Poster une réponse
Anonyme