Я нахожу удивительным, как быстро работает поиск или автозаполнение (что я знаю) работает в Linux. ... Есть ли какая-то индексация в фоновом режиме или как это достигается?
На самом деле это два совершенно разных вопроса.
locate
использует индекс (хранит его в slocate /var/lib/slocate/
), который обновляется ночным cron
заданием. Эта ночная работа обычно выполняется примерно в 1 или 2 часа ночи по местному времени и полностью сканирует всю систему (включая все подключенные диски). Полученный индекс - это просто список имен файлов.
Автозаполнение обрабатывается вашей оболочкой. Большинство систем используют bash
, так bash-completion
что это коллекция скриптов, которые управляют, как это работает. ( zsh
имеет коллекцию с аналогичным именем, и большинство других оболочек имеют встроенную форму завершения). При Tabнажатии оболочка запускает скрипт, который решает, основываясь на том, что вы уже набрали, что именно нужно быть законченным. Затем скрипт генерирует список возможных дополнений, который может быть или не быть списком файлов в текущем каталоге или списком исполняемых файлов в вашем $PATH
. Команда locate
обычно не используется для этого.