Домой Софт и приложения Linux Zoxide: современная альтернатива команде cd для навигации в Linux

Zoxide: современная альтернатива команде cd для навигации в Linux

Устали вводить полные пути в терминале? Утилита zoxide на базе Rust делает навигацию по файловой системе Linux быстрее, предлагая умный поиск вместо стандартной команды cd.

3
0

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

Монитор с открытым терминалом Linux, где показаны команды cd и pwd
Команда zoxide позволяет переключаться между директориями без ввода полных путей

Как работает интеллектуальный переход по директориям

Современной альтернативой является 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:

команда cd — иллюстрация 2 к материалу
  • 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.

команда cd — иллюстрация 3 к материалу

Быстрая настройка базы данных

Чтобы 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 — иллюстрация 4 к материалу

Почему традиционный cd замедляет работу

Команда cd остается стандартным способом навигации уже десятилетиями, однако сам процесс управления файловой системой через нее во многом архаичен. Суть проблемы заключается в том, что cd не является «поисковой» утилитой. Она требует от пользователя предоставления строгого абсолютного или относительного пути. Это заставляет держать в голове не только структуру каталогов, но и их точное местоположение в дереве файлов.

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

команда cd — иллюстрация 5 к материалу

Конечно, многие пользователи привыкли полагаться на автодополнение по клавише Tab, но даже это не решает фундаментальную проблему: вам все равно нужно знать достаточно много о структуре системы, чтобы указать направление. Если вы забыли, как именно вложен конкретный каталог, вам приходится комбинировать cd с командами вроде ls или tree, чтобы визуализировать иерархию и «вычислить» путь. Это делает рабочий процесс в терминале излишне громоздким — вместо того чтобы просто думать о том, в какую папку вы хотите попасть, вы вынуждены тратить время на мысли о том, где именно она лежит.

Нюансы интеллектуальной навигации

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

команда cd — иллюстрация 6 к материалу

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

Быстрый старт и управление базой данных

Если вы хотите ускорить процесс перехода на zoxide и не ждать, пока утилита самостоятельно соберет статистику, вы можете не только вручную добавлять пути, но и более гибко управлять ими. Команда zoxide add позволяет добавлять сразу несколько каталогов за один раз:

команда cd — иллюстрация 7 к материалу

zoxide add ~/Projects ~/Documents ~/Downloads

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

команда cd — иллюстрация 8 к материалу

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

Важно дополнить, что если вы не хотите полагаться на автоматическое ранжирование zoxide при поиске по нескольким критериям, утилита позволяет полностью игнорировать этот механизм для конкретного запроса. В таких случаях на помощь приходит интеграция с fzf. Выполнение команды zi [термин] открывает интерактивное меню, где отображаются все сохраненные пути, содержащие указанное слово в любой части пути. Это избавляет от необходимости угадывать, какой именно из результатов с одинаковыми именами предложит алгоритм в данный момент.

команда cd — иллюстрация 9 к материалу

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

Отдельного внимания заслуживает возможность «принудительного» обучения zoxide, что особенно полезно при переходе с многолетнего использования стандартного cd. Использование команды zoxide add —score [число] [путь] позволяет задать начальный приоритет директории, искусственно «подняв» её в базе данных. Это гарантирует, что даже при первом запуске утилиты самые важные для вашего рабочего процесса каталоги будут иметь максимальный вес и первыми попадать в выдачу при вводе коротких команд.

Источник: https://www.howtogeek.com