Ich habe eine Anwendung installiert und kann nun über das Terminal auf sie zugreifen. Es ist jedoch ein Alias. Wie finde ich den vollständigen Pfad zur Datei?
26
Sie können mit type
und which
bestimmen, was ein bestimmter Befehl enthält bash
und wo er sich befindet, wenn es sich um eine Anwendung handelt.
$ 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
Die Befehle which
und type -P
nur Arbeit für Programme auf PATH
, natürlich, aber Sie werden andere nicht ohnehin nur die Eingabe ihre Befehlsnamen in der Lage zu laufen.
Wenn Sie nach einer einfachen Möglichkeit suchen, um festzustellen, wo ein OS X (GUI) -Anwendungspaket installiert ist (wie es z. B. vom open
Befehl verwendet wird), können Sie das folgende kurze AppleScript über die Befehlszeile ausführen:
$ osascript -e 'tell application "System Events" to POSIX path of (file of process "Safari" as alias)'
/Applications/Safari.app
Dies setzt voraus, dass das betreffende Programm (im Beispiel Safari) ausgeführt wird.
Dies ist die Methode, mit der ich derzeit das Firefox-Anwendungsverzeichnis unter OSX und Linux finde. Sollte leicht auf eine andere Anwendung zu übertragen sein. Getestet unter OSX 10.7, Ubuntu 12.04, Debian Jessie
quelle
type
undtype -P
nicht? Funktioniert der Nicht-OSX-Code unter OS X? Wenn nicht, können Sie erklären, warum nicht? Wenn ja, warum haben Sie zwei Versionen?/bin
oder/usr/bin
etc , sondern installiert/Applications/My3rdPartyApp.app
und die binären wird in einem Unterverzeichnis gespeichertContents/MacOS
es recht machen Es ist schwierig, plattformübergreifende Techniken zu verwenden, um den Speicherort der Anwendung zu bestimmen (daher die Verwendung vonlsregister
). Das obige Snippet wurde geschrieben, um das Auffinden von Firefoxs Verzeichnis zudefaults/pref
erleichtern./usr/bin/firefox
ist Firefox eigentlich keine Binärdatei, daher benutze ich die Ausgabe vonreadlink
, um herauszufinden, wohin es zeigt, und finde dann dasdefaluts/prefs
Verzeichnis von dort. Als Randnotiz zum Symlinking: Doingls -al /usr/bin/* |grep -- '->' |wc -l
illustriert ungefähr 303 Binärdateien in diesem Verzeichnis, bei denen es sich in meiner Ubuntu-Konfiguration tatsächlich um Symlinks handelt. (ungefähr 16% von ihnen) Aus diesem Grund sollte der obige Code ** eventuell geändert werden, um Symlinks rekursiv aufzulösen, bis der kanonische Pfad zur Binärdatei gefunden wird.type -P
Frage zu beantworten , bin ich mit diesem Befehl nicht vertraut genug, um die Frage zu beantworten. Vielleicht können Sie etwas näher darauf eingehen. :)type
weil es die Grundlage der ersten (und akzeptiert) Antwort war. Es handelt sich um eine integrierte Shell, die angibt, wie angegebene Namen interpretiert würden, wenn sie als Befehle verwendet würden. Die POSIX-Version davon, die eher nackt ist, wird hier beschrieben . … (Fortsetzung)Wenn das Programm ausgeführt wird, rufen Sie auf
quelle
Auf den Pfad der Binärdateien wird in der verwiesen
$PATH
Variablen .Sie können den Inhalt mit sehen
env
.quelle
$PATH
kann man mit ansehenenv
,echo $PATH
wäre aber weniger ausführlich.Sie können den Befehl " alias " im Terminal verwenden, um alle Aliase aufzulisten. Oder wenn Sie sich in einem Verzeichnis befinden, können Sie " pwd " verwenden " verwenden, um Ihren aktuellen Pfad .
Wenn Sie den Dateinamen oder einen Teil des Dateinamens kennen, können Sie " find " verwenden, um Ihre Datei zu finden.
quelle
Unter MAC (OS X) können Sie Folgendes tun:
Jetzt können Sie den vollständigen Pfad zu Ihrer Anwendung in der Befehlszeile anzeigen und von dort aus ausführen, wenn Sie möchten.
Entnommen aus wikihow
quelle