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

Можно работать, сценарий оболочки с пользователем имеет лучшее разрешение записи (такое как корень), и когда Вы производите данные, должен записать в папку, что пользовательская пост-ГРЭС базы данных может записать в (такие как/tmp)

после конца записи данных переместите его в каталог, который Ваш сценарий оболочки имеет разрешение записать (как пользователь root, может записать в где угодно),

115
07.01.2012, 22:03
5 ответов

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

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

131
27.01.2020, 19:29
  • 1
    я использую locate бесконечно (это очень быстро), но для тех, которые не знают о нем, locate только так же актуально как его новое обновление базы данных, которое автоматически ежедневно выполняется на моей Ubuntu. Команда обновления sudo updatedb ... Также locate имеет встроенную regex возможность, таким образом, команды как это работают: locate -br "^git$" ...-b' означает, ограничивают поиск просто базовым именем... или без -b, это ищет полный путь.. Кроме того, это только ищет пути, которые Вы настроили его для поиска.. нет никакого управления командной строки этого кроме Ваших фильтров regex. –  Peter.O 07.01.2012, 23:24
  • 2
    Предпочесть type кому: which. which легко запутывается. –  Gilles 'SO- stop being evil' 08.01.2012, 01:38
  • 3
    @Gilles, это забавно для меня, поведение является точно противоположным: type оболочка, встроенная, который говорит мне псевдонимы и такой, и which внешняя программа, которая показывает мне путь к исполняемому файлу... хотя, если существует встроенное, которое мешает, которым не назовут исполняемый файл. –  quodlibetor 10.01.2012, 23:37
  • 4
    @quodlibetor проблемы с which это, это не знает о созданной-ins оболочке и функции (который релевантен, когда Вы задаетесь вопросом, что ввод команды сделает), и это использует другое $PATH в некоторых системах. –  Gilles 'SO- stop being evil' 10.01.2012, 23:42

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

48
27.01.2020, 19:29
  • 1
    я знаю это, более чем год, но это было точно, что я искал; удивленный это не принятый ответ. –  Akoi Meexx 05.04.2013, 17:43

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

это просто, если мерзавец находится в Вас, СОЕДИНЯЮТ переменную каналом, в случае, если Вы установили ее не через Вас диспетчер пакетов, это более сложно, и необходимо использовать find или locate команды.

13
27.01.2020, 19:29

Другие ответы здесь, кажется, в основном приспособлены к современным версиям Linux, поэтому если Вы, оказывается, используете git на ОС, которая не имеет locate, whereis, which, или apropos (как Солярис, HPUX, и т.д.), затем всегда существует старое резервное устройство find.

find / -name git 

Один некоторые более старые версии упомянутых выше систем, Вам, возможно, понадобится a -print опция, предоставленная find.

find / -name git -print

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

13
27.01.2020, 19:29
  • 1
    Для программ в пути использовать type; это надежно и портативно (кроме к 30-летним системам). –  Gilles 'SO- stop being evil' 08.01.2012, 01:40
  • 2
    Спасибо, @Gilles. Я никогда не знал о type.:) Это определенно входит в репертуар! –  Tim Kennedy 09.01.2012, 17:20
  • 3
    , вероятно, стоит указать на это find делает полный поиск в глубину файловой системы, начинающей с того, везде, где Вы базируетесь она. Так find / -name git пересечет Вашу целую систему. Если Вы знаете, что программа находится на Вашем пути, можно обычно делать IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done , хотя файловые системы Unix являются достаточно разрешающими, что это может прервать множество путей, если имеют странные символы в Вашем PATH. –  quodlibetor 10.01.2012, 01:18
  • 4
    На самом деле команда, которую я дал ранее, повредит Ваш PATH, корректная вещь (с теми же протестами как прежде) IFS=":"; for dir in $PATH; do find "$dir" -name git; done. Кроме того, для повторения этот ответ должен только использоваться людьми, у которых нет доступа к type или which или locate, т.е., почти никто. ответ @Arcege корректен. –  quodlibetor 10.01.2012, 23:34

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

5
27.01.2020, 19:29
  • 1
    я думал, что он шел, возвращается с "42"! LOL. –  Joe 14.01.2012, 11:35

Теги

Похожие вопросы