Announcement

👇Official Account👇

Welcome to join the group & private message

Article first/tail QR code

Skip to content

Broot:终端里的文件导航神器

说实话,每次在终端里用 cd 命令一层层往下翻目录的时候,我都有种在迷宫里找出口的感觉。尤其是那种嵌套了七八层的项目目录,找个文件能把人找到怀疑人生。tree 命令倒是能看到整体结构,但输出一大堆文本,眼睛都看花了。

直到我遇到了 Broot,这玩意儿算是拯救了我的终端生活。

Broot 是个啥?

简单说,Broot 就是用 Rust 写的一个终端文件管理器。它能把你的目录用树状结构展示出来,而且可以边看边搜索、边操作。关键是速度快得飞起,再大的目录都不在话下。

它能干啥?

速度是真的快

我试过在一个有几万个文件的项目里用它,秒开。那种复杂的目录结构,Broot 能瞬间给你展示出来,不像 tree 命令那样哗啦哗啦刷屏半天。

搜索很聪明

你可以模糊搜索(就是输几个字母就能找到),也可以用正则表达式(适合有强迫症的同学),甚至能搜文件内容。找个文件真的是秒秒钟的事儿。

界面看着舒服

树状结构一目了然,你在哪层目录、文件关系是啥,清清楚楚。再也不用 pwd 一下看看自己在哪了。

文件预览挺方便

选中文件按个快捷键就能预览,代码还有高亮。不用每次都打开编辑器看一眼再关掉,省事。

批量操作不在话下

复制、移动、删除文件都支持,再也不用写那种一行能绕地球三圈的 shell 脚本了。

双面板操作

就像以前 Windows 上用的 Total Commander,左右两个窗口,文件想怎么搬就怎么搬。

Git 集成真香

这个功能我太爱了。直接能看到哪些文件改了、加了、删了,提交代码前扫一眼,心里有数。

哪都能用

Windows、macOS、Linux 都支持,不管你用啥系统都能用。

想怎么配就怎么配

快捷键、配色、命令都能自己定制。反正我是把常用的操作都绑到顺手的键位上了。

怎么装?

安装很简单,看你用啥系统:

如果你装了 Rust

一行命令搞定:

bash
cargo install broot

macOS 用户

Homebrew 走起:

bash
brew install broot

Debian/Ubuntu

APT 就行:

bash
sudo apt install broot

其他 Linux 发行版

GitHub Releases 下载编译好的二进制文件就行。

第一次跑要注意

装完第一次运行 broot 的时候,它会问你要不要装个 shell 函数。这个一定要装,不然后面用起来不方便。跟着提示走就行,一般是让你在 .bashrc.zshrc 里加一行:

bash
source ~/.config/broot/launcher/bash/br

加完之后重启下终端,或者 source 一下配置文件。

怎么用?

启动很简单

终端里敲个 br 就行(记得前面配置 shell 函数了):

bash
br

基本操作

启动后就能看到树状的目录结构了。

移动光标

  • 方向键或者 h/j/k/l 都行(vim 党狂喜)
  • Enter 进入目录
  • EscBackspace 返回上一级
  • Ctrl + ↓/↑ 可以快速在目录层级间跳转

搜索文件

直接在底部输入框打字就能搜,实时过滤的那种。

  • 想模糊搜索?直接打几个字母
  • 想精确搜索?用正则表达式,比如 /\.md$ 找所有 Markdown 文件
  • 想搜文件内容?加个 c/ 前缀

预览文件

选中文件按 Ctrl + → 就能看到内容,代码还有高亮。看一眼就知道是不是要找的文件,省得打开编辑器。

常用命令记一下

底部输入框按 : 就能输命令:

  • :q - 退出(这个必须会)
  • :h - 显示/隐藏那些以点开头的隐藏文件
  • :size - 看文件大小
  • :dates - 看修改日期
  • :git_status - 看 Git 状态(开发者必备)
  • :cp - 复制
  • :mv - 移动
  • :rm - 删除(小心点用)
  • :mkdir - 新建目录

操作文件也简单

比如复制个文件:选中 → 输入 :cp → 输入目标路径 → 搞定

移动文件也一样,:mv 就行。

删除的话用 :rm,不过删之前它会让你确认,还算比较安全。

进阶玩法

双面板模式

Ctrl + → 能打开第二个面板,就像以前用 Total Commander 那样。

  • Ctrl + ←/→ 在面板之间切换
  • 两个面板之间直接拖文件(当然,是用命令"拖")
  • Ctrl + w 关掉当前面板

这个模式整理文件特别爽,左边源目录,右边目标目录,想怎么搬就怎么搬。

排序功能

找大文件或者最近改的文件,排个序就行:

  • :sort_by_size - 按大小排
  • :sort_by_date - 按日期排
  • :sort_by_name - 按名字排

清理磁盘空间的时候,:sort_by_size 一用,大文件一目了然。

看磁盘占用

:sizes 这个命令挺实用的,能看到每个目录占了多少空间。比 du 命令直观多了,你能直接在树状结构里看哪个目录最占地方。

调用外部命令

Broot 里还能直接跑外部命令。选中文件后输入 :!命令,比如:

bash
:!cat {file}      # 直接看文件内容
:!code {file}     # 用 VS Code 打开
:!vim {file}      # vim 党专用

{file} 会自动替换成你选中的文件路径。

自定义配置

配置文件在 ~/.config/broot/conf.hjson,想怎么改就怎么改。

我一般会加个快捷命令,比如一键用 VS Code 打开:

json
{
    invocation: "code",
    execution: "code {file}",
    leave_broot: false
}

这样选中文件后直接输入 code 回车就能打开了。

Git 状态查看

在 Git 仓库里用 Broot,输入 :git_status 就能看到所有文件的状态:

  • M - 改了
  • A - 新加的
  • D - 删了
  • ?? - 还没加到 Git 里

提交代码前看一眼,哪些文件动过,清清楚楚。

几个实用技巧

快速跳转项目目录

.bashrc.zshrc 里加个别名:

bash
alias brp='br ~/projects'

以后想看项目目录,直接 brp 就行。

配合 cd 使用

这是个很妙的功能。用 br 命令(不是 broot)启动,选好目录按 Alt+Enter 退出,终端会自动 cd 到那个目录。

bash
br  # 选个目录,退出后就在那个目录了

再也不用一层层 cd 了。

搜索特定文件类型

用正则表达式能快速筛选文件:

  • 找 JS 文件:/\.js$
  • 找图片:/\.(png|jpg|gif)$
  • 找配置:/\.config

习惯了这个,找文件快到飞起。

清理磁盘的时候

:sizes + :sort_by_size,组合拳下去,最占空间的目录立马现形。

设置书签

常用目录可以设个快捷键。在配置文件里加:

json
{
    key: "ctrl-p",
    execution: ":goto ~/projects"
}

按个 Ctrl+P 就能跳到项目目录,贼方便。

实际场景举几个例子

大项目里找文件

有次在一个几千个文件的项目里找一个组件,传统方法是 IDE 全局搜索,等半天。用 Broot:

  1. br 启动
  2. 输入 header(组件名的关键词)
  3. 实时过滤出所有匹配文件
  4. 方向键选一下
  5. Ctrl + → 预览确认
  6. 输入 :code 打开

全程不到 5 秒。

清理 node_modules

前端项目搞久了,满硬盘都是 node_modules。用 Broot 找出来:

  1. br 启动
  2. 输入 node_modules 过滤
  3. :sizes 看看哪个最占地方
  4. 选中不用的
  5. :rm 删掉

几个 GB 就这么省出来了。

提交代码前检查

提交代码之前想看看改了啥:

  1. 在仓库里 br
  2. :git_status 一看,所有改动的文件都出来了
  3. 逐个 Ctrl + → 预览一下
  4. 心里有数了再提交

git status 好用多了。

批量操作文件

虽然 Broot 没有内置批量重命名,但可以配合外部命令。比如找出所有 .js 文件,然后用 :! 调用自己写的脚本批量处理。

和其他工具比比

对比 ls

ls 只能看当前目录,想看子目录得一层层进去。Broot 直接树状结构展开,还能实时搜索。

对比 tree

tree 命令在大目录里会刷屏刷到你怀疑人生。Broot 自动折叠,还能交互,体验完全不同。

对比 Midnight Commander

MC 功能是强大,但学习成本也高。Broot 界面更现代,上手快,该有的功能也都有。

对比图形化文件管理器

GUI 文件管理器要鼠标点来点去,在终端环境下还得切来切去。Broot 纯键盘操作,不用离开终端,效率高。

性能怎么样?

因为是 Rust 写的,性能没得说:

  • 大目录秒开,我试过几万文件的项目,瞬间就出来了
  • 内存占用很低,常驻也不心疼
  • 搜索是实时的,打字就能看结果
  • 处理大量文件毫无压力

我测过一个 5 万+ 文件的目录,不到 1 秒就索引完了。传统工具根本做不到。

写在最后

用了 Broot 几个月,真的回不去了。

以前在终端里找文件,cdcd 去,ls 看半天,现在直接 br 一开,搜一下,秒到位。特别是处理那种层级巨深的项目,Broot 简直就是救星。

Git 集成也是真香,提交代码前 :git_status 扫一眼,哪些文件动过、改了啥,清清楚楚。配合预览功能,连 IDE 都不用开。

最爽的是双面板模式,整理文件的时候特别爽。左边源目录,右边目标目录,想怎么搬就怎么搬,比写 shell 脚本快多了。

性能方面也没话说,Rust 写的就是快。几万个文件的目录秒开,搜索也是实时的,用起来一点都不卡。

如果你也经常在终端里干活,或者被复杂的目录结构折磨过,试试 Broot 吧。装上之后记得配置好 shell 函数,不然体验会打折扣。

反正我是装上之后,cd 命令用得越来越少了。😄

相关链接


有啥问题欢迎留言交流~

上次更新于: