今天就来聊聊我折腾“dree”这玩意儿的经历。我也没想着要专门搞这个,就是平时项目文件一多,那目录结构,看得我眼花缭乱。每次想找个都得一层一层 `cd` 进去,再 `ls` 一下,效率贼低,有时候还把自己给绕晕了。
起因:乱糟糟的文件夹
大伙儿都知道,现在做点啥项目,那文件动不动就成百上千的。尤其是一些前端项目,`node_modules` 那家伙,简直就是个无底洞。我之前带个小团队,新人交过来的东西,目录结构五花八门,有的人喜欢按功能分,有的人喜欢按类型分,每次合并代码或者review的时候,光是理解他那个目录是啥意思就得半天。我就寻思,有没有啥法子能直观点儿把这目录结构给亮出来?
初识与安装
后来有一次,无意中看到别人终端里唰唰唰打出来一个树状的目录,我说这个当时也没记住具体是啥命令,就记得大概是跟“树”有关。我就去搜了一下,,原来Linux和Mac底下大多都有个叫 `tree` 的命令。我这主力机是Mac,试了一下,还真有!Windows系统好像默认不带,不过也能装,这个咱今天先不细说。
有些系统可能精简掉了,要是你敲了 `tree` 没反应,那就得自个儿装一下。像我用的Ubuntu服务器,有时候最小化安装就没了,就得 `sudo apt install tree` 这么来一下。Mac上要是没有,用 `brew install tree` 也能搞定。反正就是几秒钟的事儿。
上手体验:基本用法
装好了,咱就得用起来不是?
我先找了个项目文件夹,不大不小的那种,直接在终端里,进到那个项目目录的上一级,然后敲了个 `tree 项目名`。哗一下,整个目录结构,带文件名,全都跟树枝似的列出来了。清爽!太清爽了!
比如我有个项目叫 `my_project`,里面结构是这样的:
- css/
- js/
用 `tree my_project` 一跑,输出大概就是这样(实际是带线条的):
my_project
├── *
├── css
│ └── *
├── *
└── js
├── *
└── *
这不就一目了然了嘛 比起原来 `ls -R` 那种滚屏滚半天,还看得费劲的体验,简直是天上地下。
进阶一点的玩法
光是这样列出来,有时候文件太多还是显得乱。我又琢磨着,能不能只看目录?或者只看几层?
然后我就去 `man tree` 或者 `tree --help` 瞅了瞅它的说明文档。这一看,发现这小东西还挺多讲究的。
- 只看目录不要文件: 用 `-d` 参数就行。比如 `tree -d my_project`,这样输出就只有文件夹了,看整体骨架特别方便。
- 控制显示层级: 有时候项目太深,全显示出来屏幕都装不下。可以用 `-L level` 来指定,比如 `tree -L 2 my_project` 就只显示到第二层目录。这个在看大型项目的时候特别有用,能帮你快速抓住主干。
- 显示隐藏文件: 默认 `tree` 是不显示那些点 `.` 开头的隐藏文件的,比如 `.git` 目录。如果要看,加上 `-a` 参数。
- 带上文件权限、大小啥的: 还可以加上 `-p` (权限)、`-s` (大小)、`-u` (用户)、`-g` (组)这些,不过我平时用得少,感觉信息太多反而乱。
- 过滤文件: 有时候只想看特定类型的文件,或者排除某些文件/目录(比如庞大的 `node_modules`)。可以用 `-P pattern` 来指定想看的内容,或者用 `-I pattern` 来排除不想看的内容。比如 `tree -I "node_modulesdist"` 就能把这两个烦人的目录给忽略掉,输出结果干净多了。
我特别喜欢 `-L` 和 `-I` 这俩参数的组合。比如我要看一个项目的结构,又不想被 `node_modules` 刷屏,还只想看个大概,就用 `tree -L 3 -I "node_modules"`,这样出来的结果就非常符合我的预期。
实践成果与感受
自从我开始用这个“dree”(就是 `tree`,我叫顺口了就当是我的实践代号)之后,感觉工作顺畅了不少。
第一,理解项目结构快多了。 无论是自己的老项目,还是接手别人的项目,跑一下这个命令,基本就能对整体布局有个数,不用再像无头苍蝇一样到处乱翻。
第二,沟通也方便了。 有时候给别人解释项目模块,或者写文档的时候需要展示目录结构,直接把 `tree` 命令的输出稍微整理下贴上去,比自己手动打字或者截图强太多了,又准确又专业。
第三,代码审查也用得上。 看看提交上来的代码,目录是不是合理,有没有放错地方的文件,用 `tree -L 2 -d` 扫一眼,心里就有底了。
`tree` 基本上成了我日常检查和展示目录结构的标配工具了。虽然是个小命令,但解决的可是大问题。有时候琢磨这些小工具,还真能给工作带来不少便利。这种“dree”一下的实践,我觉得挺值的。
还没有评论,来说两句吧...