Какова основная разница между locate
whereis
и which
командой.
Основное различие, которое я заметил, заключается в том, что locate
все связанные имена файлов находятся во всей файловой системе, а команды whereis
и which
дают только местоположение (системный / локальный адрес файла) установленного приложения. Насколько точны мои наблюдения?
Как эти команды реализованы внутри? Почему locate
работает так быстро по сравнению с поиском по тире, в то время как locate
приходится искать конкретное имя файла, соответствующее целевой строке во всей иерархии файловой системы?
command-line
unity-dash
search
locate
Чинмая Б
источник
источник
type
? : Ptype
, пожалуйста, уточниtype
это еще одна команда, которая (на мой взгляд) делает то же самое, что и упомянутые вами.type
команды. Я попробовалman type
иinfo type
.Ответы:
which
находит двоичный исполняемый файл программы (если он находится в вашей переменной PATH).man which
объясняет более четко:whereis
находит двоичный файл, исходный код и файлы справочной страницы для программы. НапримерВы можете получить дополнительную информацию, передавая выходные данные этих команд в качестве аргументов
ls -l
илиfile
locate
действительно находит все файлы с шаблоном, указанным в любом месте их пути. Вы можете указать это только для поиска файлов и каталогов, чьи имена (а не полные пути) включают шаблон с-b
параметром, который обычно является тем, что вам нужно, и дает менее громоздкий список.locate
работает быстро, потому что использует двоичную базу данных, которая периодически обновляется (один раз в деньcron
). Вы можете обновить его самостоятельно, чтобы убедиться, что недавно добавленные файлы найдены, запустивsudo updatedb
Еще одна вещь
locate
- это не волнует, существуют ли файлы или нет, поэтому, чтобы избежать поиска недавно удаленных файлов, используйте-e
. Часто я также труба кless
как список может быть длинным. Обычно я делаю:Как пунктирные работы Юнити объясняется здесь - он использует Zeitgeist системных файлов индекса и узнать от модели использования, и позволяет другим приложениям использовать эти данные, так что это делает намного больше работы , чем
locate
.источник
locate
. Черта использует совершенно другой индекс - медленнее, потому что он делает больше вещей (я отредактировал мой ответ)sudo updatedb
вашу команду очень полезно, не знал, что, хотя я использовал -e регулярно.Просто
какая команда ищет список программ, перечисленных в настройках PATH
Команда whereis также ищет программы, которых нет в настройке PATH
Также находит файлы по имени файла, но не ищет саму структуру каталогов, а только базу данных, подготовленную updatedb. Из-за этого найти быстрее, чем найти, но менее точно. Примеры:
источник