27

Какая разница между locate и which в Linux?

Почему, когда я использую locate mentor , он перечисляет всех наставников, но когда я использовал, which mentor говорит «нет наставника в ...» - что это значит?

3 ответа3

45

Какая разница между locate и which?

locate использует ранее созданную базу данных для поиска файла.

locate считывает одну или несколько баз данных, подготовленных updatedb(8), и записывает имена файлов, соответствующие по крайней мере одному из PATTERN, в стандартный вывод, по одному на строку.

Source locate(1) - справочная страница по Linux

updatedb создает или обновляет базу данных, используемую locate(1). Если база данных уже существует, ее данные используются повторно, чтобы избежать перечитывания каталогов, которые не изменились.

updatedb обычно запускается ежедневно cron(8) для обновления базы данных по умолчанию (/var/lib/mlocate/mlocate.db)

Источник updatedb(8) - справочная страница по Linux


which ищет исполняемый файл путем поиска его в каталогах в переменной окружения PATH .

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

используя тот же алгоритм, что и bash(1).

Источник который (1) - справочная страница по Linux


locate mentor списки наставника, но which mentor говорит "нет наставника в ..."

Что это значит?

У вас есть несколько файлов с именем mentor которые можно найти в базе данных locate .

В вашей mentor нет исполняемого файла или сценария с именем PATH .

11

which должен найти команду (which возвращает путь к файлам / ссылкам, которые будут выполнены в текущей среде)

locate - это поиск файлов по имени (locate читает одну или несколько баз данных, подготовленных updatedb и записывает имена файлов, соответствующие по крайней мере одному из шаблонов, в стандартный вывод, по одному на строку)

5

locate по умолчанию принимает шаблон glob (также можно использовать шаблон Regex) и ищет в базе данных /var/lib/mlocate/mlocate.db любое имя файла, соответствующее шаблону.

which является командой для поиска полного пути команды в каталогах, интерпретируемой переменной среды PATH .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .