Как найти путь к приложению из командной строки?

109

Например, я gitустановил в моей системе. Но я не помню, где я его установил, так какая команда подходит, чтобы это выяснить?

Андерс Линд
источник
45
Хе-хе, whichдействительно " команда" :)
Тихон Джелвис

Ответы:

123

Если это на вашем пути, то вы можете запустить либо type gitили which git. У whichкоманды возникли проблемы с получением правильного пути (путаница между окружением и точечными файлами). Ведь typeвы можете получить только путь с -pаргументом.

Если он не находится на вашем пути, то лучше всего поискать его. locate -b git Он найдет что-нибудь с именем 'git'. Это будет длинный список, так что, возможно, было бы неплохо его квалифицировать locate -b git | fgrep -w bin.

Arcege
источник
10
Я пользуюсь locateбесконечно (это очень быстро), но для тех, кто не знает об этом, locateон настолько же актуален, как и его самое последнее обновление базы данных, которое автоматически запускается ежедневно на моей Ubuntu. Обновления команда sudo updatedb... Также locateимеет встроенные возможности регулярных выражений, так что команды , как это работает: locate -br "^git$"... -b` означает ограничить поиск , чтобы только базовое имя ... или без -b, она ищет полный путь .. Также , он ищет только те пути, которые вы настроили для поиска. В командной строке это не контролируется, кроме ваших фильтров регулярных выражений.
Peter.O
7
Предпочитают typeв which. whichлегко запутывается .
Жиль
@ Жиль, для меня это забавно, поведение совершенно противоположное: typeвстроенная оболочка, которая сообщает мне псевдонимы и тому подобное, и whichвнешняя программа, которая показывает мне путь к исполняемому файлу ... хотя, если есть встроенная функция, которая попадает в так, что исполняемый файл не будет вызван.
quodlibetor
@quodlibetor Проблема в том which, что он не знает о встроенных функциях и функциях оболочки (что важно, когда вам интересно, что будет делать ввод команды), и в $PATHнекоторых системах он использует другое .
Жиль
48

Стандарт POSIX способ сделать это command -v git. Все UNIX-подобные системы должны поддерживать это.

Ричард Хансен
источник
4
Я знаю, что этому больше года, но это было именно то, что я искал; Удивлен, это не принятый ответ.
Akoi Meexx
13

whereis git и вы получите путь к команде.

это просто, если git находится в переменной PATH, если вы установили ее не через менеджер пакетов, она более сложна, и вам следует использовать команды findor locate.

Ханан Н.
источник
1
Использование whichтакже рекомендуется.
Nikhil Mulley
5
@Nikhil type, скорее нет which. См. Как использовать whichкоманду с псевдонимом?
Жиль
13

Другие ответы здесь , кажется, в значительной степени ориентирована на современных версиях Linux, так что если вы решили использовать gitв ОС , которая не имеет locate, whereis, whichили apropos(как Solaris, HP - UX, и т.д.), то всегда есть старый резерв find.

find / -name git 

Для некоторых более старых версий систем, перечисленных выше, вам может потребоваться дополнительная -printопция find.

find / -name git -print

И если вы используете locate, убедитесь, что вы запускаете updatedbпериодически. ( locate.updatedbна некоторых производных BSD)

Тим Кеннеди
источник
8
Для программ в пути используйтеtype ; это надежно и портативно (кроме 30-летних систем).
Жиль
Спасибо, Жиль. Я никогда не знал о type. :) Это определенно происходит в репертуаре!
Тим Кеннеди
Вероятно, стоит отметить, что findпоиск файловой системы в первую очередь начинается с того места, где вы ее кореньете. Так find / -name gitпройдёт вся ваша система. Если вы знаете, что программа находится на вашем пути, вы обычно можете это сделать IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done, хотя файловые системы Unix достаточно разрешительны, и это может привести к поломке различными способами, если в вашем распоряжении есть странные символы PATH.
quodlibetor
На самом деле команда, которую я дал ранее, сломает вашу PATH, правильная вещь (с теми же предостережениями, что и раньше) IFS=":"; for dir in $PATH; do find "$dir" -name git; done. Кроме того, повторюсь, этот ответ должен использоваться только людьми, которые не имеют доступа к typeили, which или locate , почти, никому. @ Arcege ответ правильный.
quodlibetor
5

Чтобы получить путь к установленной программе, вы либо используете, whereisлибо which. Если вы случайно забыли его имя, вы можете использовать aproposсиноним или описание вашей утилиты, например apropos "version control", найдете git. После этого, конечно, whatisкоманда кратко суммировать функции программы. Это, однако, не распространяется на все программы и функции в вашей системе. Попробуйте, например whatis "the meaning of life, universe and everything".


источник
2
Я думал, что это будет возвращаться с "42"! ЛОЛ.
Джо