Jak znaleźć ścieżkę aplikacji z wiersza poleceń?

109

Na przykład gitzainstalowałem w swoim systemie. Ale nie pamiętam, gdzie go zainstalowałem, więc które polecenie jest odpowiednie, aby się tego dowiedzieć?

Anders Lind
źródło
45
Heh, heh „ whichpolecenie” rzeczywiście :)
Tikhon Jelvis

Odpowiedzi:

123

Jeśli jest na swojej drodze, a następnie można uruchomić albo type gitalbo which git. whichKomenda miał problemy z właściwą ścieżkę (splątanie między środowiskiem i plików kropka). Ponieważ typemożesz uzyskać tylko ścieżkę z -pargumentem.

Jeśli nie znajduje się na twojej ścieżce, najlepiej poszukać go za pomocą. locate -b git Znajdziesz coś o nazwie „git”. Będzie to długa lista, więc warto ją zakwalifikować locate -b git | fgrep -w bin.

Arcege
źródło
10
Używam locatebez końca (jest bardzo szybki), ale dla tych, którzy nie są tego świadomi, locatejest tylko tak aktualny, jak jego najnowsza aktualizacja bazy danych, która jest automatycznie uruchamiana codziennie na moim Ubuntu. Polecenie odświeżania jest sudo updatedb... locateMa również wbudowaną locate -br "^git$"funkcję wyrażeń regularnych, więc takie polecenia działają: ... -b` oznacza ograniczenie wyszukiwania tylko do nazwy basename ... lub bez -b, przeszukuje pełną ścieżkę. Również , przeszukuje tylko ścieżki, które skonfigurowałeś do wyszukiwania. Nie ma kontroli tego wiersza poleceń poza filtrami wyrażeń regularnych.
Peter.O
7
Wolę typesię which. whichłatwo się myli .
Gilles
@Gilles, to dla mnie zabawne, zachowanie jest dokładnie odwrotne: typejest wbudowaną powłoką, która mówi mi aliasy i tym podobne, i whichjest zewnętrznym programem, który pokazuje mi ścieżkę do pliku wykonywalnego ... chociaż jeśli jest wbudowany, który dostaje się w sposób, w jaki plik wykonywalny nie zostanie wywołany.
quodlibetor
@quodlibetor Problem polega na whichtym, że nie wie on o wbudowanych powłokach i funkcjach (co jest istotne, gdy zastanawiasz się, co zrobi to polecenie), i używa innych $PATHw niektórych systemach.
Gilles,
48

POSIX standardowy sposób to zrobić command -v git. Wszystkie systemy uniksowe powinny to obsługiwać.

Richard Hansen
źródło
4
Wiem, że ma ponad rok, ale tego właśnie szukałem; zaskoczony, że to nie jest akceptowana odpowiedź.
Akoi Meexx
13

whereis git i dostajesz ścieżkę do polecenia.

to znaczy, jeśli git jest w tobie zmienna PATH, jeśli nie zainstalowałeś go za pośrednictwem menedżera pakietów, jest bardziej złożony i powinieneś użyć poleceń findlub locate.

Hanan N.
źródło
1
Zastosowanie whichZachęca również.
Nikhil Mulley,
5
@Nikhil type, raczej nie which. Zobacz Jak korzystać whichz polecenia aliasu?
Gilles
13

Pozostałe odpowiedzi tutaj wydają się być w dużej mierze nastawione na nowoczesnych wersjach Linuksa, więc jeśli zdarzy ci się używać gitna OS, który nie ma locate, whereis, which, lub apropos(jak Solaris, HPUX, etc), to nie zawsze jest stary gotowości find.

find / -name git 

Jedna starsza wersja wymienionych wyżej systemów może wymagać -printdostarczenia opcji find.

find / -name git -print

A jeśli używasz locate, upewnij się, że biegasz updatedbokresowo. ( locate.updatedbw przypadku niektórych instrumentów pochodnych BSD)

Tim Kennedy
źródło
8
W przypadku programów na ścieżce użyjtype ; jest niezawodny i przenośny (z wyjątkiem systemów 30-letnich).
Gilles
Dzięki, @Gilles. Nigdy nie wiedziałem o tym type. :) To zdecydowanie wchodzi w repertuar!
Tim Kennedy,
Prawdopodobnie warto zauważyć, że findnajpierw wykonuje pełne przeszukiwanie systemu plików, poczynając od miejsca, w którym zostanie zrootowany. Przejdzie więc find / -name gitcały twój system. Jeśli wiesz, że program jest na twojej ścieżce, zwykle możesz to zrobić IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done, chociaż systemy plików Uniksa są na tyle liberalne, że mogą się one przerwać na różne sposoby, jeśli masz w sobie dziwne znaki PATH.
quodlibetor
Właściwie to polecenie, które wydałem wcześniej, złamie twoje PATH, poprawne (z tymi samymi zastrzeżeniami jak poprzednio) IFS=":"; for dir in $PATH; do find "$dir" -name git; done. Ponadto, aby powtórzyć, to odpowiedź powinna być stosowana tylko przez ludzi, którzy nie mają dostępu do typelub which czy locate , czyli prawie nikt. @ Odpowiedź Arcege jest poprawna.
quodlibetor
5

Aby uzyskać ścieżkę do zainstalowanego programu, użyj whereisalbo which. Jeśli zdarzy ci się zapomnieć jego nazwę, możesz użyć aproposz synonimem lub opisem swojego narzędzia, np . apropos "version control"Znajdziesz git. Po tym następuje oczywiście whatispolecenie krótkiego podsumowania funkcji programu. Nie dotyczy to jednak wszystkich programów i funkcji w systemie. Spróbuj na przykład whatis "the meaning of life, universe and everything".


źródło
2
Myślałem, że wróci z „42”! LOL.
Joe