Команда cd (change directory) является базовым инструментом в Linux, однако она относится к традиционным способам навигации. Ее основной недостаток заключается в том, что она не является инструментом поиска: пользователю необходимо знать точный абсолютный или относительный путь к целевой папке. Даже с учетом автодополнения по клавише Tab, такой подход требует от пользователя понимания структуры вложенности каталогов, что делает процесс работы в терминале медленным и громоздким.

Как работает интеллектуальный переход по директориям
Современной альтернативой является zoxide — утилита, написанная на языке Rust. Она отслеживает посещаемые вами папки и использует эту информацию, чтобы позволить быстро вернуться к ним в будущем. Вместо ввода длинных путей типа /home/dibs/Documents/How to Geek/Articles достаточно написать z articles. При этом утилита нечувствительна к регистру.
Принцип работы zoxide основан на базе данных, где папки ранжируются по показателю frecency (комбинация частоты и недавности посещений). Чем чаще вы заходите в каталог, тем выше его приоритет в поиске. Это особенно удобно, если в системе несколько папок с одинаковым названием. Если вы чаще работаете с ~/Documents/How to Geek/Articles, чем с ~/Documents/Forbes/Articles, команда z articles автоматически откроет первый вариант.
Для более точного поиска можно использовать уточняющие параметры: z forbes articles. Важно учитывать, что порядок терминов имеет значение, так как zoxide ищет соответствие подстрок в том же порядке, в котором они встречаются в пути. Если вам нужно выбрать из нескольких вариантов вручную, достаточно установить fzf и выполнить команду zi articles — это откроет интерактивное меню выбора.
Установка и начальная настройка утилиты
zoxide доступна в официальных репозиториях большинства дистрибутивов Linux:

- Arch Linux и производные: sudo pacman -S zoxide
- Ubuntu, Debian и производные: sudo apt install zoxide
- Fedora и производные: sudo dnf install zoxide
Альтернативно можно воспользоваться официальным скриптом установки: curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh.
После инсталляции необходимо инициализировать утилиту. Для Bash добавьте в файл ~/.bashrc строку eval «$(zoxide init bash)» и примените изменения командой source ~/.bashrc. Если вы используете Zsh или Fish, добавьте соответствующие команды инициализации в их конфигурационные файлы (~/.zshrc или ~/.config/fish/config.fish). Кроме того, можно настроить zoxide так, чтобы она вызывалась при вводе классической команды cd, добавив eval «$(zoxide init bash —cmd cd)» в ~/.bashrc.

Быстрая настройка базы данных
Чтобы zoxide сразу стала эффективной, не дожидаясь накопления истории посещений, можно добавить нужные директории вручную командой zoxide add:
- zoxide add ~/Documents/»How to Geek»/Articles
- zoxide add ~/Projects ~/Documents ~/Downloads
Если вы не уверены, какие пути используете чаще всего, поможет история bash: history | grep -E ‘(^|[[:space:]])cd[[:space:]]’. Вы можете присвоить важным директориям высокий начальный рейтинг с помощью опции —score, например: zoxide add —score 100 ~/Documents/»How to Geek». Для тонкой настройки базы данных также предусмотрена команда zoxide edit, которая открывает графический интерфейс терминала (TUI) для управления списком сохраненных путей.

Почему традиционный cd замедляет работу
Команда cd остается стандартным способом навигации уже десятилетиями, однако сам процесс управления файловой системой через нее во многом архаичен. Суть проблемы заключается в том, что cd не является «поисковой» утилитой. Она требует от пользователя предоставления строгого абсолютного или относительного пути. Это заставляет держать в голове не только структуру каталогов, но и их точное местоположение в дереве файлов.
Рассмотрим наглядный пример: если вы работаете внутри директории Documents и хотите перейти в папку Articles, вам придется ввести относительный путь: cd «How to Geek/Articles». Если же вы находитесь в другой части системы, например, в Pictures, потребуется ввод полного абсолютного пути: cd «$HOME/Documents/How to Geek/Articles».

Конечно, многие пользователи привыкли полагаться на автодополнение по клавише Tab, но даже это не решает фундаментальную проблему: вам все равно нужно знать достаточно много о структуре системы, чтобы указать направление. Если вы забыли, как именно вложен конкретный каталог, вам приходится комбинировать cd с командами вроде ls или tree, чтобы визуализировать иерархию и «вычислить» путь. Это делает рабочий процесс в терминале излишне громоздким — вместо того чтобы просто думать о том, в какую папку вы хотите попасть, вы вынуждены тратить время на мысли о том, где именно она лежит.
Нюансы интеллектуальной навигации
Помимо того, что zoxide автоматически «обучается» на ваших предпочтениях, важно понимать логику её работы с поисковыми запросами. Когда вы вводите несколько ключевых слов, например z forbes articles, утилита ищет их в базе данных. Здесь критически важно помнить, что порядок терминов имеет значение: zoxide ожидает, что поисковые фразы будут идти в той же последовательности, в которой они записаны в иерархии пути. Если вы введете z articles forbes, поиск не принесет результата или не приведет к желаемой папке, так как «articles» в структуре пути стоит после «forbes» (или, напротив, не встречается перед ним в соответствии с логикой пути).

Также стоит отметить, что при инициализации оболочки для замены cd командой zoxide, вы не теряете функциональность, а лишь расширяете её. Использование eval «$(zoxide init bash —cmd cd)» превращает привычную вам команду в мощный инструмент, который сохраняет старую «мышечную память», но добавляет интеллектуальный поиск.
Быстрый старт и управление базой данных
Если вы хотите ускорить процесс перехода на zoxide и не ждать, пока утилита самостоятельно соберет статистику, вы можете не только вручную добавлять пути, но и более гибко управлять ими. Команда zoxide add позволяет добавлять сразу несколько каталогов за один раз:

zoxide add ~/Projects ~/Documents ~/Downloads
Если вы хотите провести «ревизию» путей, которые уже есть в базе данных, воспользуйтесь командой zoxide edit. Она открывает полноценный текстовый интерфейс (TUI) прямо в терминале. В этом меню вы можете не только удалить пути, которые стали неактуальными, но и вручную изменить вес (рейтинг) каждой записи, тем самым отдавая приоритет самым важным рабочим проектам.

Использование history | grep -E ‘(^|[[:space:]])cd[[:space:]]’ для анализа истории — это лучший способ вспомнить свои старые привычки и перенести их в базу zoxide за пару минут. Сочетание этого метода с опцией —score дает вам полный контроль над тем, какие папки терминал должен предлагать в первую очередь.
Важно дополнить, что если вы не хотите полагаться на автоматическое ранжирование zoxide при поиске по нескольким критериям, утилита позволяет полностью игнорировать этот механизм для конкретного запроса. В таких случаях на помощь приходит интеграция с fzf. Выполнение команды zi [термин] открывает интерактивное меню, где отображаются все сохраненные пути, содержащие указанное слово в любой части пути. Это избавляет от необходимости угадывать, какой именно из результатов с одинаковыми именами предложит алгоритм в данный момент.

Также стоит уточнить технические аспекты настройки для пользователей других оболочек, помимо Bash. Процесс инициализации для Zsh и Fish идентичен логике Bash: вам необходимо добавить команду eval «$(zoxide init zsh)» в файл ~/.zshrc или команду zoxide init fish | source в конфигурационный файл ~/.config/fish/config.fish соответственно. Это обеспечивает бесшовную интеграцию утилиты в окружение сразу после перезапуска сессии терминала.
Отдельного внимания заслуживает возможность «принудительного» обучения zoxide, что особенно полезно при переходе с многолетнего использования стандартного cd. Использование команды zoxide add —score [число] [путь] позволяет задать начальный приоритет директории, искусственно «подняв» её в базе данных. Это гарантирует, что даже при первом запуске утилиты самые важные для вашего рабочего процесса каталоги будут иметь максимальный вес и первыми попадать в выдачу при вводе коротких команд.





