Дерево каталогов в терминале обычно показывают через tree или find, но это односторонний вывод: чтобы перейти в найденный каталог, приходится копировать путь. broot решает другую задачу — это интерактивный обзор файловой системы, из которого можно выйти сразу в нужном каталоге, открыть файл редактором или выполнить команду над выбранным элементом.

Чем broot отличается от tree

broot написан на Rust, распространяется одним бинарником и не требует демона. Он строит дерево вокруг текущего каталога и подгружает ветки по мере раскрытия, поэтому даже на домашнем каталоге с десятками тысяч файлов старт остаётся быстрым. В отличие от файлового менеджера, здесь нет мыши и панелей: управление идёт с клавиатуры, а список фильтруется набором символов. Строка состояния показывает размер, дату, права и git-статус, если включить соответствующие флаги.

Главная особенность — связка с оболочкой. При выходе broot может выполнить cd в родительском shell, поэтому найденный каталог не нужно набирать повторно. Для этого при установке добавляется функция br: она перехватывает результат и применяет его к текущей сессии. Без такой функции broot остаётся удобным просмотрщиком, но теряет половину смысла.

Установка

В Debian, Ubuntu и Fedora пакет есть в основных репозиториях. Если нужна свежая версия, собирайте через cargo.

sudo apt install broot
sudo dnf install broot
cargo install --locked broot
broot --version

Пакет из дистрибутива отстаёт на несколько релизов, но для навигации этого достаточно. Сборка из исходников требует rustup и займёт пару минут; бинарник появится в ~/.cargo/bin, поэтому убедитесь, что каталог есть в PATH. На сервере без компилятора берите готовый пакет: тянуть цепочку инструментов ради одного просмотрщика обычно не стоит.

Первый запуск и функция для оболочки

Перед использованием установите функцию для оболочки. Без неё broot работает, но команда cd меняет каталог только внутри процесса и теряется после выхода.

broot --install
source ~/.bashrc
br
br -c :pt

Команда —install дописывает в ~/.bashrc, ~/.zshrc или config.fish небольшую функцию br, которая запускает broot и применяет возвращённый каталог. После этого вызывайте br вместо broot. Для fish и zsh установщик сам определяет файл; если оболочка нестандартная, функцию можно добавить вручную. В каталоге ~/.config/broot появится conf.hjson с настройками по умолчанию, а история переходов сохранится между сеансами.

Навигация и основные команды

После запуска вы видите каталоги и файлы, отсортированные по имени. Стрелки перемещают выделение, Enter входит в каталог или открывает файл системным приложением. Esc сбрасывает фильтр, повторное нажатие выходит, :q закрывает broot. Двоеточие открывает командную строку, и это главный способ работать с файлами, не покидая дерево.

  • :cd — перейти в каталог и завершить работу с применением пути в shell.
  • :e — открыть файл в редакторе из переменной EDITOR.
  • :cp и :mv — копировать и переместить выбранное.
  • :rm — удалить файл или каталог после подтверждения.
  • :mkdir — создать каталог в текущей позиции.
  • :focus — оставить в дереве только выбранную ветку.

Клавиша ? открывает справку со всеми активными командами и горячими клавишами. Список зависит от конфигурации, поэтому справка точнее любой статьи: после правки conf.hjson он меняется.

Поиск и фильтры

Фильтр начинает работать, как только вы печатаете: broot ищет по нечёткому совпадению и подсвечивает буквы. Пробел разделяет условия, минус исключает. Префикс c/ переключает поиск на содержимое файлов, а r/ — на регулярное выражение. Остальные типы шаблонов описаны в справке.

br -s
br -h
br --only-folders
br -c :pt

Флаг -s показывает размеры, -h добавляет скрытые файлы, —only-folders оставляет в дереве только каталоги в стиле tree. Команда br -c :pt печатает дерево в stdout и сразу выходит: удобно для скриптов и документации, хотя для больших каталогов вывод лучше ограничивать. Если нужен неинтерактивный список без цветов, перенаправьте вывод в файл и проверьте, что в нём нет управляющих последовательностей.

Размеры, даты и git

Для повседневной работы полезны флаги, которые добавляют в строку метаданные. Они не меняют навигацию, но избавляют от отдельных вызовов ls и du.

br -d
br -p
br --git-status
br -w

-d добавляет дату изменения, -p — права доступа, —git-status помечает изменённые и новые файлы, -w включает режим whale spotting с сортировкой по размеру. Комбинация br -s -d -p даёт компактный отчёт по каталогу. На медленных сетевых дисках не включайте одновременно размеры и git-статус: каждый запуск будет обходить дерево и заметно тормозить.

Свои команды в conf.hjson

Файл conf.hjson — это HJSON, диалект JSON с комментариями и необязательными запятыми. В нём настраивают скин, стартовые флаги и собственные действия. Верб описывает команду, которая получает выбранный файл или каталог.

verbs: [
  {
    invocation: "code"
    execution: "code {file}"
    from_shell: true
  }
]

После сохранения верб вызывается как :code и передаёт путь в VS Code. Поле from_shell запускает команду через оболочку, поэтому работают подстановки и алиасы; без него процесс запускается напрямую, что безопаснее для путей с пробелами. Для терминальных программ указывайте from_shell: false и отдельные аргументы, чтобы не собирать строку вручную. Синтаксическая ошибка приведёт к сообщению при старте, а broot продолжит работу с настройками по умолчанию.

Практические сценарии

  • br -c :pt > tree.txt — зафиксировать структуру проекта для отчёта.
  • br -w — найти тяжёлые файлы без перебора du -sh по всем каталогам.
  • br —git-status — увидеть новые файлы перед коммитом.
  • :cd — перейти в найденный каталог, не набирая длинный путь.
  • :cp и :mv — разложить файлы, оставаясь в дереве.

Когда broot не нужен

В скриптах и на удалённом сервере без нормального терминала broot избыточен: там достаточно find и обычного ls. Для одной операции поиска запускать интерактивное дерево дольше, чем выполнить точную команду. Он также не заменяет midnight commander при работе с архивами и не умеет монтировать удалённые ресурсы. Его ниша — быстрый обзор и переход, а не управление файлами целиком.

Итог

broot стоит установить, если вы часто ходите по проекту и устали копировать пути из вывода tree. Установите пакет, выполните broot —install, привыкните к :cd и :e, затем добавьте два-три своих верба под редактор и просмотрщик. Дальше настройка не требуется: инструмент остаётся быстрым, не тянет зависимости и одинаково работает в локальном терминале и по SSH.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте