J'ai installé une application et maintenant je peux y accéder via le terminal comme mon application. C'est un alias, cependant. Comment puis-je trouver le chemin d'accès complet au fichier?
26
Vous pouvez utiliser type
et which
pour déterminer en quoi bash
consiste une certaine commande et, s'il s'agit d'une application, où elle réside.
$ type type
type is a shell builtin
$ type cd
cd is a shell builtin
$ type ls
ls is aliased to `ls --color=auto'
$ type -P ls
/Users/danielbeck/bin/ls
$ which which
/usr/bin/which
$ which ls
/Users/danielbeck/bin/ls
Les commandes which
et type -P
ne fonctionnent que pour les programmes sur votre PATH
, bien sûr, mais vous ne pourrez pas en exécuter d'autres en tapant simplement leur nom de commande de toute façon.
Si vous cherchez un moyen simple de déterminer où un ensemble d'applications OS X (GUI) est installé (tel qu'utilisé par exemple par la open
commande), vous pouvez exécuter le court AppleScript suivant à partir de la ligne de commande:
$ osascript -e 'tell application "System Events" to POSIX path of (file of process "Safari" as alias)'
/Applications/Safari.app
Cela nécessite que le programme en question (Safari dans l'exemple) soit en cours d'exécution.
C'est la méthode que j'utilise actuellement pour localiser le répertoire de l'application Firefox sous OSX et Linux. Devrait être facile à adopter dans une autre application. Testé sur OSX 10.7, Ubuntu 12.04, Debian Jessie
la source
type
ettype -P
pas? Le code non OSX fonctionne-t-il sur OS X? Sinon, pouvez-vous expliquer pourquoi? Si oui, pourquoi avez-vous deux versions?/bin
ou/usr/bin
, etc. mais à la place sont installées dans/Applications/My3rdPartyApp.app
et le binaire est stocké dans un sous-répertoire,Contents/MacOS
ce qui le rend assez difficile d'utiliser des techniques multiplateformes pour déterminer l'emplacement de l'application (d'où l'utilisation delsregister
) Pire encore, la structure de répertoires OSX place le binaire dans un emplacement distinct des ressources. L'extrait ci-dessus a été écrit pour aider à localiser le répertoire de Firefoxdefaults/pref
./usr/bin/firefox
n'est pas vraiment le binaire Firefox, donc j'utilise la sortie dereadlink
pour localiser où il pointe, puis je trouve ledefaluts/prefs
répertoire à partir de là. Sur une note latérale, à propos du lien symbolique: Fairels -al /usr/bin/* |grep -- '->' |wc -l
illustre environ 303 binaires dans ce répertoire, ma configuration Ubuntu sont en fait des liens symboliques. (environ 16% d'entre eux) Pour cette raison, le code ci-dessus ** devrait * éventuellement être modifié pour résoudre les liens symboliques de manière récursive jusqu'à ce qu'il trouve le chemin canonique vers le binaire.type -P
question, je ne connais pas suffisamment cette commande pour répondre à la question. Vous pouvez peut-être élaborer un peu. :)type
parce que c'était la base de la première réponse (et acceptée). Il s'agit d'un shell intégré qui indique comment les noms spécifiés seraient interprétés s'ils étaient utilisés comme commandes. La version POSIX de celui-ci, qui est plutôt simple, est décrite ici . … (Suite)Si le programme est en cours d'exécution, appelez
la source
Le chemin des binaires est référencé dans la
$PATH
variable.Vous pouvez voir son contenu avec
env
.la source
$PATH
peut également être consulté avecenv
, maisecho $PATH
serait moins verbeux.Vous pouvez utiliser la commande " alias " dans le terminal pour répertorier tous vos alias. Ou si vous êtes dans un répertoire, vous pouvez utiliser " pwd " pour afficher votre chemin actuel.
Si vous connaissez le nom de fichier ou une partie du nom de fichier, vous pouvez utiliser " rechercher " pour localiser votre fichier.
la source
Sur MAC (OS X), vous pouvez faire:
Vous pouvez maintenant voir le chemin complet de votre application sur la ligne de commande et l'exécuter à partir de là si vous le souhaitez.
Tiré de wikihow
la source