Wie finde ich den Pfad der Anwendung über die Befehlszeile?

109

Zum Beispiel habe ich gitauf meinem System installiert. Aber ich kann mich nicht erinnern, wo ich es installiert habe. Welcher Befehl ist also geeignet, um dies herauszufinden?

Anders Lind
quelle
45
Heh, heh " whichBefehl" in der Tat :)
Tikhon Jelvis

Antworten:

123

Wenn es sich in Ihrem Pfad befindet, können Sie entweder type gitoder ausführen which git. Der whichBefehl hatte Probleme, den richtigen Pfad zu ermitteln (Verwechslung zwischen Umgebungs- und Punktedateien). Für typekönnen Sie nur den Pfad mit dem -pArgument erhalten.

Wenn es nicht auf Ihrem Weg ist, suchen locate -b git Sie es am besten mit Es wird alles mit dem Namen "git" finden. Es wird eine lange Liste sein, also könnte es gut sein, sich damit zu qualifizieren locate -b git | fgrep -w bin.

Arcege
quelle
10
Ich benutze es locateendlos (es ist sehr schnell), aber für diejenigen, die es nicht wissen, locateist es nur so aktuell wie sein letztes Datenbank-Update, das auf meinem Ubuntu automatisch täglich ausgeführt wird. Der Refresh - Befehl ist sudo updatedb... Auch locatehat eingebaute regex Fähigkeit, so Befehle funktionieren wie folgt: locate -br "^git$"... -b` Mittel , um die Suche auf nur die Filterung des Basisnamen ... oder ohne -b, sucht er den vollständigen Pfad .. Auch sucht nur nach Pfaden, die Sie für die Suche konfiguriert haben. Es gibt keine andere Befehlszeilensteuerung als Ihre Regexfilter.
Peter.O
7
Bevorzugen typezu which. whichwird leicht verwirrt .
Gilles
@ Gilles, das ist lustig für mich, das Verhalten ist genau das Gegenteil: Es typeist eine eingebaute Shell, die mir Aliasnamen und dergleichen sagt, und whichein externes Programm, das mir den Pfad zu einer ausführbaren Datei zeigt ... obwohl, wenn es eine eingebaute Datei gibt, die in die kommt So wird die ausführbare Datei nicht aufgerufen.
Quodlibetor
@quodlibetor Die Probleme mit whichsind, dass es nicht über Shell-Integrationen und -Funktionen Bescheid weiß (was relevant ist, wenn Sie sich fragen, was die Eingabe des Befehls bewirken wird), und dass es $PATHauf einigen Systemen eine andere Methode verwendet.
Gilles
48

Die POSIX-Standardmethode hierfür ist command -v git. Alle UNIX-ähnlichen Systeme sollten dies unterstützen.

Richard Hansen
quelle
4
Ich weiß, das ist über ein Jahr alt, aber genau das habe ich gesucht. überrascht, dass dies nicht die akzeptierte Antwort ist.
Akoi Meexx
13

whereis git und Sie erhalten den Pfad zum Befehl.

Das heißt, wenn sich der Git in Ihrer PATH-Variablen befindet und Sie ihn nicht über Ihren Paketmanager installiert haben, ist er komplexer und Sie sollten den Befehl findoder verwenden locate.

Hanan N.
quelle
1
Die Verwendung von whichwird ebenfalls empfohlen.
Nikhil Mulley
5
@ Nikhil type, eher nicht which. Siehe So verwenden Sie whicheinen Alias-Befehl?
Gilles
13

Die anderen Antworten hier scheinen weitgehend auf moderne Versionen von Linux ausgerichtet werden, so dass , wenn Sie geschehen , verwenden gitauf einem Betriebssystem , das nicht über locate, whereis, which, oder apropos(wie Solaris, HP - UX, etc), dann gibt es immer die alte Standby find.

find / -name git 

Bei einigen älteren Versionen der oben aufgeführten Systeme ist möglicherweise eine -printOption erforderlich find.

find / -name git -print

Und wenn Sie verwenden locate, stellen Sie sicher, dass Sie updatedbregelmäßig ausgeführt werden. ( locate.updatedbbei einigen BSD-Derivaten)

Tim Kennedy
quelle
8
Verwenden Sietype für Programme im Pfad ; Es ist zuverlässig und portabel (außer für 30 Jahre alte Systeme).
Gilles
Danke, @Gilles. Ich wusste nie darüber Bescheid type. :) Das gehört definitiv zum Repertoire!
Tim Kennedy
Es ist wahrscheinlich erwähnenswert, dass findeine vollständige Tiefensuche des Dateisystems von jedem Ort aus durchgeführt wird, an dem Sie das Stammverzeichnis haben. So find / -name gitwird Ihr gesamtes System durchlaufen. Wenn Sie wissen, dass sich das Programm auf Ihrem Pfad befindet, können Sie dies in der Regel tun IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done, obwohl Unix-Dateisysteme so tolerant sind, dass dies auf verschiedene Arten zu Fehlern führen kann, wenn Sie seltsame Zeichen in Ihrem Verzeichnis haben PATH.
quodlibetor
Tatsächlich wird der Befehl, den ich zuvor gegeben habe, Ihr brechen PATH, das Richtige (mit den gleichen Vorbehalten wie zuvor) ist IFS=":"; for dir in $PATH; do find "$dir" -name git; done. Außerdem sollte diese Antwort, um es noch einmal zu wiederholen, nur von Personen verwendet werden, die keinen Zugang zu typeoder which oder locate , dh fast niemandem, haben. @ Arceges Antwort ist richtig.
Quodlibetor
5

Um den Pfad zum installierten Programm zu erhalten, verwenden Sie entweder whereisoder which. Wenn Sie den Namen vergessen, können Sie ihn aproposmit einem Synonym oder einer Beschreibung Ihres Dienstprogramms verwenden, z . B. apropos "version control"finden git. Danach folgt natürlich der whatisBefehl, die Funktion eines Programms kurz zusammenzufassen. Dies gilt jedoch nicht für alle Programme und Funktionen auf Ihrem System. Versuchen Sie es zum Beispiel whatis "the meaning of life, universe and everything".


quelle
2
Ich dachte, es würde mit "42" zurückkommen! LOL.
Joe