Comment trouver le chemin de l'application depuis la ligne de commande?

111

Par exemple, j'ai gitinstallé sur mon système. Mais je ne me souviens pas où je l'ai installé, alors quelle commande est appropriée pour le savoir?

Anders Lind
la source
45
Heh, heh " whichcommandement" en effet :)
Tikhon Jelvis

Réponses:

125

Si cela se trouve sur votre chemin, vous pouvez exécuter l’un type gitou l’ autre which git. La whichcommande a eu des problèmes pour obtenir le chemin correct (confusion entre l'environnement et les fichiers de points). Car type, vous pouvez obtenir uniquement le chemin avec l' -pargument.

Si ce n'est pas dans votre chemin, alors il vaut mieux le chercher avec locate -b git Il trouvera quelque chose qui s'appelle 'git'. Ce sera une longue liste, alors il serait peut-être bon de la qualifier locate -b git | fgrep -w bin.

Arcege
la source
10
J'utilise locatesans fin (c'est très rapide), mais pour ceux qui l'ignorent, elle locateest aussi à jour que sa mise à jour de base de données la plus récente, qui est automatiquement exécutée quotidiennement sur mon Ubuntu. La commande de rafraîchissement est sudo updatedb... locatePossède également une fonctionnalité regex intégrée. Par conséquent, les commandes telles que celle-ci fonctionnent: locate -br "^git$"... -b` signifie que la recherche est limitée au nom de base ... ou sans le nom -b, elle recherche le chemin complet .. , il recherche uniquement les chemins que vous avez configurés pour la recherche. Il n’existe aucun contrôle de ligne de commande de cette commande autre que vos filtres regex.
Peter.O
7
Préférez typeà which. whichse confondre facilement .
Gilles le
@ Gilles, c'est drôle pour moi, le comportement est exactement le contraire: il types'agit d'un shell intégré qui me dit des alias, etc., et d' whichun programme externe qui me montre le chemin d'accès à un exécutable ... même s'il y a un intégré qui entre dans le façon que l'exécutable ne soit pas appelé.
quodlibetor
@quodlibetor Le problème, whichc'est qu'il ne connaît pas les fonctions intégrées au shell (ce qui est pertinent lorsque vous vous demandez ce que vous ferez de la commande), et utilise un système différent $PATHsur certains systèmes.
Gilles
48

La méthode standard pour faire cela est POSIXcommand -v git . Tous les systèmes de type UNIX devraient le supporter.

Richard Hansen
la source
4
Je sais que cela fait plus d'un an, mais c'était exactement ce que je cherchais; surpris que ce ne soit pas la réponse acceptée.
Akoi Meexx
13

whereis git et vous obtenez le chemin d'accès à la commande.

c'est simplement si le git est dans votre variable PATH, au cas où vous ne l'avez pas installé via votre gestionnaire de paquets, il est plus complexe et vous devez utiliser les commandes findou locate.

Hanan N.
la source
1
L'utilisation de whichest également encouragée.
Nikhil Mulley
5
@ Nikhil type, plutôt, pas which. Voir Comment utiliser whichune commande avec alias?
Gilles le
13

Les autres réponses semblent ici être orientées principalement vers des versions modernes de Linux, donc si vous arrive d'utiliser gitsur un système d' exploitation qui ne dispose pas locate, whereis, whichou apropos(comme Solaris, HPUX, etc.), alors il y a toujours la vieille veille find.

find / -name git 

Parmi les anciennes versions des systèmes répertoriés ci-dessus, vous aurez peut-être besoin d'une -printoption fournie find.

find / -name git -print

Et si vous utilisez locate, assurez-vous de courir updatedbpériodiquement. ( locate.updatedbsur certains dérivés de BSD)

Tim Kennedy
la source
8
Pour les programmes dans le chemin, utiliseztype ; il est fiable et portable (sauf pour les systèmes vieux de 30 ans).
Gilles
Merci, @ Gilles. Je n'ai jamais su à propos de type. :) Ça va définitivement dans le répertoire!
Tim Kennedy
Il vaut probablement la peine de signaler que vous findeffectuez une recherche complète en profondeur du système de fichiers, à partir de l’endroit où vous le localisez. Alors find / -name gittraversera tout votre système. Si vous savez que le programme est sur votre chemin, vous pouvez généralement le faire IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done, bien que les systèmes de fichiers Unix soient suffisamment permissifs pour que cela puisse casser de différentes manières si vous avez des caractères étranges dans votre fichier PATH.
quodlibetor
En fait, la commande que j'ai donnée précédemment va rompre votre PATH, la chose correcte (avec les mêmes mises en garde qu'avant) est IFS=":"; for dir in $PATH; do find "$dir" -name git; done. En outre, pour réitérer, cette réponse ne devrait être utilisée que par des personnes qui n'ont pas accès à typeou, which ou locate presque, à personne. La réponse de @ Arcege est correcte.
quodlibetor
5

Pour obtenir le chemin du programme installé, utilisez whereisou which. Si vous oubliez son nom, vous pouvez utiliser aproposun synonyme ou une description de votre utilitaire, par exemple apropos "version control", find git. La whatiscommande suivante résume bien sûr la fonction d’un programme. Cela ne s'applique toutefois pas à tous les programmes et fonctions de votre système. Essayez par exemple whatis "the meaning of life, universe and everything".


la source
2
Je pensais que ça allait revenir avec "42"! LOL.
Joe