命令行小技巧(命令行常用工具的替代品)

程序员离不开命令行,许多经典命令是每天必用的,比如lscd

虽然它们很好用,但是由于历史原因,往往也有一些缺点,比如用法不符合直觉、难以配置,有些速度也不快。

这些年,它们的替代品开始出现,而且越来越多,大家开始尝试使用现代语言,重新实现这些经典命令。本文总结一下这些替代品,其中有些真的很不错,值得你在自己的计算机上安装。

命令行小技巧(命令行常用工具的替代品)(1)

一、exa

exa[1]ls命令的替代品,可以彩色输出目录内容,更容易辨识。

$ exa --long --Git

命令行小技巧(命令行常用工具的替代品)(2)

上面命令中,参数--git表示输出文件的 Git 状态。

N:新文件•M:文件有变动•I:该文件被忽略

除了平铺显示,exa还支持目录的树状显示。

$ exa --tree --level=2

命令行小技巧(命令行常用工具的替代品)(3)

exa本身是一个二进制文件,不需要安装,下载后直接使用,速度也相当快。

同类软件还有 lsd[2],这里就不详细介绍了。

二、broot

broot[3]可以看作增强版的ls替代品,实际是一个终端里面的文件管理器。

使用时,可以先列出当前目录的文件信息。

$ br -sdph

上面命令中,参数含义如下。

-s:显示文件体积•-d:显示文件时间•-p:显示文件权限•-h:显示隐藏文件。

命令行小技巧(命令行常用工具的替代品)(4)

可以看到,它默认以树状结构,展开子目录。

然后,在这个界面中,可以完成各种文件操作。

•搜索:输入搜索词•复制:输入:cp <复制后的文件名>•删除:输入:rm•改名:输入:mv <新文件名>•退出:输入:q

甚至还可以预览文件:通过上下箭头选中文件,然后按下右箭头,就会打开外部关联程序;按下ctrl →,则在当前窗口预览文件。

命令行小技巧(命令行常用工具的替代品)(5)

三、zoxide

zoxide[4]是 cd 命令的替代品,用来切换目录。

它的用法与cd完全一样,进入目录/tmp就是下面的命令。

$ z /tmp

它的特色是部分匹配,可以只写路径的一部分,它自动找到最经常使用的匹配项。

比如,你经常用它进入目录/tmp,那么以后只要输入z t,它就会自动将t匹配为/tmp,从而进入该目录。

$ z t

四、bat,fx,hexyl

bat[5]cat命令的替代品,输出文本文件的内容,并且带有cat所没有的代码高亮和行号。

$ bat README.md

命令行小技巧(命令行常用工具的替代品)(6)

如果浏览的是 JSON 文件,还可以使用 fx[6]或者 jq[7]

$ fx data.json

命令行小技巧(命令行常用工具的替代品)(7)

如果浏览的是二进制文件,使用 hexyl[8]

$ hexyl example.jpg

命令行小技巧(命令行常用工具的替代品)(8)

五、diff-so-fancy

diff-so-fancy[9]是 git diff 的替代品,使得命令行的 diff 操作具有类似 GitHub 的页面效果。

命令行小技巧(命令行常用工具的替代品)(9)

安装后,参考官方文档,将它配置为 Git 的默认 diff 工具就可以了。以后每次执行git diff,就会输出它的执行结果。

同类项目还有 delta[10]

六、fd,fzf

fd[11]find命令的替代品,用于文件名搜索。

它的用法比find更符合直觉。下面例子是搜索目录/tmp里面(包括子目录),所有含有dog的文件名。

# find 的写法$ find /tmp -iname '*dog*'# fd 的写法$ fd dog /tmp

上面两条命令一比较,就会发现fd简单很多。

命令行小技巧(命令行常用工具的替代品)(10)

fd内部采用正则搜索,如果想使用模糊搜索,比如找出包含三个字符dog的文件名,则需要另外安装fzf[12]

$ find . -type f | fzf

执行上面命令以后,再输入dog就可以了。

七、ripgrep

ripgrep[13]grep命令的替代品,用来搜索文件内容。

它跟grep的用法类似。下面例子是搜索当前目录里面,所有内容包含字符串foo的 Markdown 文件。

# grep 的写法$ grep foo *.md# ripgrep 的写法$ rg foo *.md

ripgrep的主要优势在于,默认带有行号和搜索词高亮,速度也更快。

命令行小技巧(命令行常用工具的替代品)(11)

同类项目还有 ag[14]

八、McFly

McFly[15]ctrl-r的替代品,用来搜索 Shell 的操作历史。

安装以后,只要按下ctrl-r,就会出现一个更好用的搜索界面。

命令行小技巧(命令行常用工具的替代品)(12)

九、choose

choose[16]cut命令的替代品,用来选中指定的栏位。

它的优势主要是语法更简单,比如输出文件的第一列。

# cut 的写法$ cat data.txt | cut -d " " -f 1# or$ cut -d " " -f 1 data.txt# choose 的写法$ cat data.txt | choose 0# or$ choose 0 -i data.txt

更多例子看下图。

命令行小技巧(命令行常用工具的替代品)(13)

十、duf,ncdu

duf[17]df命令的替代品,用来显示磁盘占用情况。

$ duf

它是彩色的表格输出,更容易查看。

命令行小技巧(命令行常用工具的替代品)(14)

ncdu[18]du命令的替代品,用来显示每个目录占用的大小。

$ ncdu

你还可以上下移动,选中指定目录查看。

命令行小技巧(命令行常用工具的替代品)(15)

同类项目还有 dust[19]

十一、htop,procs

htop[20]top命令的替代品,用来显示系统的实时状态。它带有高亮输出,并可以切换不同的选项卡。

$ htop

命令行小技巧(命令行常用工具的替代品)(16)

同类项目还有 glances[21]、gtop[22]、bottom[23]

procs[24]ps命令的替代品,用来高亮显示进程信息。

$ procs

命令行小技巧(命令行常用工具的替代品)(17)

十二、httpie,dog

httpie[25]是 curl 的替代品,用来发出 HTTP 请求。

它的特点是语法更简单,并且服务器的返回内容会格式化高亮显示。

命令行小技巧(命令行常用工具的替代品)(18)

下面是发出 PUT 请求的例子。

# curl 的写法$ curl -X PUT -d hello=world example.com# httpie 的写法$ http PUT example.com hello=world

同类项目还有 curlie[26]、xh[27]

dog[28]dig命令的替代品,用来发出 DNS 查询。它的用法比dig简单多了。

# 默认查询 A 记录$ dog example.net# 查询多个记录$ dog example.net A NS MX

命令行小技巧(命令行常用工具的替代品)(19)

(完)

References

[1]exa:https://github.com/ogham/exa

[2]lsd:https://github.com/Peltoche/lsd

[3]broot:https://github.com/Canop/broot

[4]zoxide:https://github.com/ajeetdsouza/zoxide

[5]bat:https://github.com/sharkdp/bat

[6]fx:https://github.com/antonmedv/fx

[7]jq:https://github.com/stedolan/jq

[8]hexyl:https://github.com/sharkdp/hexyl

[9]diff-so-fancy:https://github.com/so-fancy/diff-so-fancy

[10]delta:https://github.com/dandavison/delta

[11]fd:https://github.com/sharkdp/fd

[12]fzf:https://github.com/junegunn/fzf

[13]ripgrep:https://github.com/BurntSushi/ripgrep

[14]ag:https://github.com/ggreer/the_silver_searcher

[15]McFly:https://github.com/cantino/mcfly

[16]choose:https://github.com/theryangeary/choose

[17]duf:https://github.com/muesli/duf

[18]ncdu:https://dev.yorhel.nl/ncdu

[19]dust:https://github.com/bootandy/dust

[20]htop:https://github.com/htop-dev/htop

[21]glances:https://github.com/nicolargo/glances

[22]gtop:https://github.com/aksakalli/gtop

[23]bottom:https://github.com/ClementTsang/bottom

[24]procs:https://github.com/dalance/procs

[25]httpie:https://github.com/httpie/httpie

[26]curlie:https://github.com/rs/curlie

[27]xh:https://github.com/ducaale/xh

[28]dog:https://dns.lookup.dog/

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页