一些命令行工具的增强版

最近在 HN 有一篇《Cli improved》比较火,讲的是一些命令行工具的增强版,我觉得比较好,替换掉了我之前用的一些工具,在这里分享一下。内容基本上是从原文中意译过来的。

首先本文要介绍的工具基本都是原来工具的增强版,也就是说原来工具有的,增强版也都有。因为习惯很难改变,所以完全可以用 alias 替换掉。但是如果某些情况下想用原版的程序的话,可以使用下面的命令:

1
2
\cat # ignore aliases named "cat" - explanation: https://stackoverflow.com/a/16506263/22617
command cat # ignore functions and aliases

安装方法我就不说了,Mac 所有的软件都可以通过 brew 来安装,Linux 参考项目主页吧。

Powerlevel10k:随心定制的shell主题

Powerlevel10k是经典的zsh主题Powerlevel9k的一个fork,相比Powerlevel9k,它提升了性能,更新也更加及时。相比于一般的shell主题提供的固定格式,Powerlevel10k可以定制包括前缀,后缀,目录格式,形状等等各种shell元素,

imgPowerlevel10k的各种可用元素(来自:https://github.com/romkatv/powerlevel10k)

而且通过一个简单的wizard就可以方便地拼装出自己喜欢的shell主题。

imgPowerlevel10k configuration wizard(来自https://github.com/romkatv/powerlevel10k)

甚至还可以用Powerlevel10k复刻其它的主题😂。

img用Powerlevel10k复刻各种主题(来自https://github.com/romkatv/powerlevel10k)

Powerlevel10k也可以说是一款用了就回不去了的工具,赶紧来试试定制属于你自己的主题吧!

lsd:豪华版ls

替换了cd命令,我们现在要对ls下手了!lsd堪称豪华版ls,它能将各种文件和目录根据文件类型,访问权限等等渲染成不同颜色,还增加了各种文件类型的图标,配合prezto提供的各种自动补全和Enhancd的方便跳转,在shell里的文件操作方便程度堪比各种文件管理器。

imglsd(来自https://github.com/Peltoche/lsd)

类似功能的还有exacolorls,大家可以根据自己的喜好酌情挑选。
服务器用的是Centos7,yum库里没有lsd,幸好官方有编译二进制文件

1
2
3
4
5
wget https://github.com/Peltoche/lsd/releases/download/0.16.0/lsd-0.16.0-x86_64-unknown-linux-musl.tar.gz
tar zxvf lsd-0.16.0-x86_64-unknown-linux-musl.tar.gz
cd lsd-0.16.0-x86_64-unknown-linux-musl
cp ./lsd /usr/local/bin/

bat 替换 cat

cat 做的事情就是把文件内容打印出来,但是没有颜色高亮,很不方便(没有颜色我基本看不懂代码 > <)。ccat (Go语言写的)是有颜色的 cat。但是 bcat 不仅有颜色,还有行号、分页、git 加加减减的整合、类似 less 那样的搜索。下图是我自己的展示,最后两行带 + 的是新增的行,非常酷炫。

img

建议 alias cat=bat

prettyping 替代 ping

这个不用多介绍了,直接看下效果吧。

img

fzf 替换 Ctrl+R

Ctrl+R 可以在 history 搜索命令,不过用起来很反人类。fzf 使用效果如下,非常方便,从此再也不用畏惧长命令了。

img

除了查找历史命令,fzf 可以用来模糊查找文件,也很好用,直接设置一个命令,fzf 查找的结果调用 vim 编辑,效率很高。

htop 替换 top

这个应该很多人都知道,htop 提供的信息更明确,熟悉了快捷键效率很高,比如按 P 按照 CPU 排序,t 展示树形,k 来 kill 选中的进程等等。

img

diff-so-fancy 替换 diff

diff-so-fancy 带有高亮,代码的变更等,配合 git 使用可以让你的 git diff 显示效果和 github 上面的 diff 页面一样。

img

fd 替换 find

又一个 Rust 写出来的好东西:fd。find 的语法太难记了,fd 好用很多,显示还带高亮。效果如图。

img

ncdu 替换 du

ncdu 将参数配置好,显示的效果如下。我用的是原作者的的 alias,文件夹是 CPython 的源代码。

1 alias du=”ncdu –color dark -rr -x –exclude .git –exclude node_modules”

img

Ack 或 ag 替换 grep

这俩我都没用过,介绍一个我用的 rg 吧,主要是速度快。效果如下:

img

jq

操作 json 的一个命令行工具。再也不用组合复杂的 sed,awk,grep 来处理 json 了,我不确定是不是 jmespath 的语法。教程可以看下官方的,很好学。

类似的 for csv 的有一个叫 csvkit

z

一个根据你的路径历史来 fuzzy 跳转的东西,有一个竞品叫 autojump。不过我习惯了用 z 了,用了很久没有什么痛点。使用效果如图。

img

fpp

根据前一个命令的输入,自动识别输入中的文件名,然后可以使用快捷键打开。

比如 git status | fpp 的效果如下:

img

未完待续…… 不定期更新,欢迎补充。