现代化 Shell 使用指南
Shell 作为一个历史悠久的效率工具,它提供了很多方便的工具,提高我们操作计算机的效率。然而被现代各种便利操作熏陶了的我们,可能对一些默认的命令的效率并不满意了。那么如何更好的利用好 Shell 呢?
tl;dr: 一些很好用的命令列表:
tldr
: 查询一个命令的常用用法z
: 快速目录跳转fzf
: 文件模糊搜索ag
:代码快速搜索fuck
: 自动纠正错误命令httpie
: 更好用的 HTTP 请求工具htop
:top
的升级版
本文只挑选了几个好用的工具来介绍,主要想表达的是现在有很多很好用的 shell 工具,它们比之前的古老版本有不少优势和进步,当你觉得你的某些操作效率不高时,可以考虑去了解一下有没有好的替代方案/工具,察觉自己的低效操作并想办法改进总是应该的。
这里有一些好用的命令可以参考:
tldr - 命令备忘
Linux 下有如此多的命令,有时我们会忘记某个命令的常用方法。这时我们通常会通过 man
或者 Google 来查询命令的用法,但这些结果通常并不简洁明了,我们可能需要花费一些时间来找到我们想要的用法。
tldr
就是为了这种场景而生的,它会很简洁的介绍一个命令,并列出它最常用的一些用法。根据二八法则原理,你很少会用到一些命令的高级用法,常用用法已经可以满足你的需求。你可能经常在某些地方看到「tl;dr」这个缩写,它的意思是“Too long, didn’t read”,意思是就是“文章太长不想看?只看这里就行了”。
首先在 mac 下通过 brew 安装 tldr
:
1 | # 安装 tldr |
使用 tldr
:
1 | # 查询 find 的常用用法 |
结果如下:
1 | find |
是不是比 man
的结果好用多了。
z - 便捷目录跳转
每次跳到常用目录,要输入很长的路径?需要在两个/多个目录来回切换?cd
不够好用,pushd/popd/dirs
在一定程度上解决了这个问题,通过将一些目录压到栈中来来回跳转,但还是不够智能。
在这个智能时代,需要一些命令让跳转更加随心所欲,于是一些更加智能的命令被开发出来了。新的命令的主要思路就是,记住你常用的目录,然后等你跳转了一定时间后,就可以用很短的名称(前缀)跳转到常去目录了。
这类工具中比较有名的有 autojump
、z
、fasd
。它们的功能都是类似的,不过整体来说 fasd 功能最强大,不仅支持快速跳转目录,也支持快速打开文件;z 和 autojump 功能基本相同,z 的性能会好一些。我目前主要使用 z
。
安装 z:
1 | brew install z |
在 ~/.bash_profile 中增加配置:
1 | # z enabled |
这里有一段这些工具的比较:
这类工具中最早的应该是大名鼎鼎的autojump,因为它的快捷命令是j,所以大家也都习惯性地称其为j。autojump使用Python编写,对于Bash和Shell的支持都比较好。但是可能是因为是Python写的吧,有的时候会感觉反应有些慢。
有了j之后,又有了z。z的介绍就是”更好的j”。它的功能和j基本是相同的,不过它使用Shell脚本编写,更加简洁,基本上不会拖慢终端的响应速度。我比较喜欢简洁的,现在看来Github上大部分人也是, z得到了3000+的star,超越了它的前辈autojump。
然后人们还不满足,于是又有了大杀器Fasd,Fasd不光会记录目录,还会记录文件,也就是说它可以做到快捷打开某个深层目录的文件。Fasd还可以通过配置,实现更加高级的功能。Fasd与Zsh的结合也非常好,可以使用tab灵活的在几个目录中选择。可能是由于Fasd太强大了,虽然它使用Shell脚本写的,但是在使用的时候还是会感觉拖慢了终端的速度,特别是在执行ls -l的时候,会感觉输出明显慢了一拍。
—— https://skyline75489.github.io/post/2014-12-13_j-z-and-fasd.html
fzf - 快速模糊搜索
fzf
是一个很高效的 fuzzy finder,它提供模糊搜索文件夹/文件的功能。
首先在 mac 下通过 brew 安装 fzf
:
1 | # 安装 fzf |
主要使用场景:
- 查找文件:直接输入
fzf
,或者使用快捷键<ctrl-t>
呼出 fzf。使用快捷键调出的时候,前面可以有已经输入的命令,比如cat <ctrl-t>
。在 fzf 中输入关键字进行模糊搜索,使用<ctrl-p>/<ctrl-n>
来上下选择结果。 - 查找命令历史:安装 shell 的快捷键支持后,
fzf
替换了系统默认的命令搜索<ctrl-r>
,呼出快捷键不变,使用起来更加好用了。 - 命令后参数补全:命令参数中使用
**<TAB>
来触发补全,触发的场景可以参考这里
ag - 代码搜索
ag
用来在文件中搜索关键字,是一个类似于 grep、ack 的命令。它的优点有:
- 比 ack 还要快,这里有一篇效率对比的文章
- 可以忽略 .gitignore 中的文件
- 命名更短,短就是效率…
安装 ag:
1 | brew install the_silver_searcher |
使用方法和 grep 类似,可以用 tldr ag
了解下常用方法:
1 | # Find files containing "foo", and print the line matches in context: |
fuck - 命令纠错
有时候我们会输错一些命令,比如 git brnch
,这时只需要一个简单的命令 fuck
,它会根据它预设的模式给出可能的正确命令,用起来就是这么简单粗暴。
安装 thefuck:
1 | brew install thefuck |
在 ~/.bash_profile 中增加配置:
1 | eval $(thefuck --alias) |
httpie - 友好的 HTTP 请求工具
httpie
是一个对人类友好的 HTTP 请求模拟器,它的命令参数符合直觉,结果显示的也更清晰。curl
的参数就没那么容易记忆了,总是需要去查手册。
安装 httpie:
1 | brew install httpie |
一些基本的用法:
1 | # GET 访问某页面 |
htop - 更直观的系统状态
htop
可以查看当前系统状态,可以当做是 top 的一个增强版本。它的界面更加直观并且支持鼠标操作,用一下你就知道好在哪里了。
安装 htop:
1 | brew install htop |
glances
又是 htop
的一个升级版,它提供更加详细的信息,并且是 C/S 结构的,也就是说你可以监控其他机器的状态。
现代化 Shell 使用指南