Как я могу найти путь к исполняемому файлу в OSX


46

Есть ли команда, которую я могу использовать, чтобы легко найти путь к исполняемому файлу? Я ищу идентификацию на моей локальной машине - что-то вроде pwd?

pwd identify
=> /usr/local/bin/identify

Ответы:


60

which будет искать в вашем пути аргументы, которые вы указали, он встречается практически на любом BSD или SysV UNIX

moriarty:~ dave$ which bash true false
/bin/bash
/usr/bin/true
/usr/bin/false

1
Команда, whichхотя и будет работать, как правило, не тот инструмент, который нужно использовать для выполнения этого типа работы. Смотрите эту U & L Q & A: unix.stackexchange.com/questions/85249/...
ОДС

6
На OSX whichне дает никаких результатов для пользовательского сценария (который находится в $PATH). typeделает.
Висбуки

17

Если вы используете встроенный bash type, он покажет вам все (в пути) местоположения для команды:

$ type -a ls
ls is aliased to `ls --color=always'
ls is /bin/ls

$ type -a printf
printf is a shell builtin
printf is /usr/bin/printf

$ type -a touch
touch is /usr/bin/touch
touch is /bin/touch

Если команда является функцией, она перечислит определение функции:

$ type -a somefunc
somefunc is a function
somefunc ()
{
    echo "hello, world"
}

Эти примеры взяты из системы Ubuntu, но результаты будут аналогичными для OS X.


4
На OSX whichне показывает путь для пользовательского сценария (который находится в $PATH). typeделает.
Висбуки

3

попробуйте "определить местонахождение"


5
Это работает, когда «который» не будет, потому что исполняемый файл отсутствует в вашем текущем PATH, но также имеет тенденцию извергать много вещей, которые вам не нужны. Фильтр первого пути: «команда locate | grep bin». Сначала используйте «который».
dmckee

0

Это зависит от того, что вы ищете. Большинство утилит зависят от переменной пути. Однако, если то, что вы ищете, скорее всего, в вашем пути, вам не нужно знать, где он находится, если нет нескольких копий одного и того же исполняемого файла.

Это не относится к большинству вещей, работающих в OSX, потому что они не работают как обычные бинарные файлы Linux / Unix. Вот несколько способов найти вещи, которых нет в вашем пути.

находить:

sudo find / -name <FILE>

Это найдет все, что существует в файловой системе, которую вы указываете в качестве первого аргумента. Его нужно запускать с правами root для поиска в частных каталогах. Он также поддерживает шаблоны, если вы не совсем уверены в названии.

Терминал:

Если у вас есть файл в Finder, вы можете открыть окно терминала и поместить файл в него. Терминал с затем отобразить полный путь к файлу.

Прожектор:

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.