Zainstalowałem aplikację i teraz mogę uzyskać do niej dostęp za pośrednictwem terminala jako mojej aplikacji. Jest to jednak pseudonim. Jak znaleźć pełną ścieżkę do pliku?
26
Możesz użyć type
i, which
aby określić, w czym znajduje się określone polecenie bash
, a jeśli jest to aplikacja, w której się znajduje.
$ 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
Polecenia which
i type -P
tylko praca dla programów na PATH
, oczywiście, ale nie będzie w stanie uruchomić innym poprzez wpisanie ich nazwy polecenia tak.
Jeśli szukasz prostego sposobu ustalenia, gdzie jest zainstalowany pakiet aplikacji OS X (GUI) (jak np. W open
poleceniu), możesz wykonać następujący krótki AppleScript z wiersza poleceń:
$ osascript -e 'tell application "System Events" to POSIX path of (file of process "Safari" as alias)'
/Applications/Safari.app
Wymaga to uruchomienia danego programu (w tym przykładzie Safari).
Jest to metoda, którą obecnie znajduję katalog aplikacji Firefox w OSX i Linux. Powinno być łatwe do dostosowania do innej aplikacji. Testowane na OSX 10.7, Ubuntu 12.04, Debian Jessie
źródło
type
atype -P
nie robi? Czy kod inny niż OSX działa w systemie OS X? Jeśli nie, czy możesz wyjaśnić, dlaczego nie? Jeśli tak, to dlaczego masz dwie wersje?/bin
lub/usr/bin
itp., Ale zamiast tego są instalowane w,/Applications/My3rdPartyApp.app
a plik binarny jest przechowywany w podkatalogu,Contents/MacOS
co czyni go dość trudno jest użyć jakichkolwiek wieloplatformowych technik do określenia lokalizacji aplikacji (stąd zastosowanielsregister
) Co gorsza, struktura katalogów OSX umieszcza plik binarny w innym miejscu niż zasoby. Powyższy fragment został napisany, aby pomóc w zlokalizowaniu katalogu Firefoksadefaults/pref
./usr/bin/firefox
nie jest tak naprawdę plikiem binarnym Firefoksa, więc używam danych wyjściowych do,readlink
aby zlokalizować, gdzie wskazuje, a następnie znaleźćdefaluts/prefs
katalog z tego miejsca. Na marginesie, o symlinkowaniu: Wykonaniels -al /usr/bin/* |grep -- '->' |wc -l
ilustruje około 303 plików binarnych w tym katalogu, moja konfiguracja Ubuntu to tak naprawdę symlinks. (około 16% z nich) Z tego powodu powyższy kod ** powinien * zostać ostatecznie zmodyfikowany w celu rekurencyjnego rozwiązywania dowiązań symbolicznych, dopóki nie znajdzie kanonicznej ścieżki do pliku binarnego.type -P
pytanie, nie znam wystarczająco tego polecenia, aby odpowiedzieć na pytanie. Być może możesz trochę rozwinąć. :)type
ponieważ była to podstawa pierwszej (i zaakceptowanej) odpowiedzi. Jest to wbudowana powłoka, która wskazuje, w jaki sposób określone nazwy będą interpretowane, jeśli zostaną użyte jako polecenia. Jego wersja POSIX, która jest raczej goła, została opisana tutaj . … (Ciąg dalszy)Jeśli program jest uruchomiony, zadzwoń
źródło
Ścieżka plików binarnych jest wskazywana w
$PATH
zmiennej.Możesz zobaczyć jego zawartość za pomocą
env
.źródło
$PATH
mogą być oglądane zenv
, aleecho $PATH
byłoby mniej gadatliwy.Możesz użyć polecenia „ alias ” w terminalu, aby wyświetlić listę wszystkich swoich aliasów. Lub jeśli jesteś w katalogu, możesz użyć „ pwd ”, aby pokazać swoją bieżącą ścieżkę.
Jeśli znasz nazwę pliku lub jego część, możesz użyć polecenia „ znajdź ”, aby zlokalizować plik.
źródło
Na MAC (OS X) możesz:
Teraz możesz zobaczyć pełną ścieżkę do aplikacji w wierszu poleceń i uruchomić ją stamtąd, jeśli chcesz.
Zaczerpnięte z wikihow
źródło