试试那些常用命令行工具的“重写”版本

日常

引言

最近几年,各种地方都能看到那些常用的命令行工具被用某某语言重写,但多数我都没有日常使用过,这次找出一些比较有名的尝试了一下,整理一下用户视角的纯主观感受,不讨论技术。

选取标准一是软件的目标是增强或替代原有命令行工具,二是在 Archlinux 的官方仓库里。

top

htop - an interactive process viewer

  • 语言:C
  • 主页:https://github.com/htop-dev/htop
  • 感想:这个出现得比较早,在我接触 linux 之前。说实话,就像小孩没见过软盘一样,我真没用过原来的top,一直用的都是 htop

cat

bat - A cat(1) clone with wings.

  • 语言:Rust
  • 主页:https://github.com/sharkdp/bat
  • 感想:挺实用的,默认有滚动和代码高亮,确实是不错的现代化替代品
  • P.S.:作者是重写命令行工具的行家,还有其他一些质量也很高星星很多的项目

ls

exa - A modern replacement for ‘ls’.

  • 语言:Rust
  • 主页:https://github.com/ogham/exa
  • 感想:看起来多了些彩色输出,不过乍一看对我来说好像用处不太大?

grep

rg - ripgrep recursively searches directories for a regex pattern while respecting your gitignore

  • 语言:Rust
  • 主页:https://github.com/BurntSushi/ripgrep
  • 感想:企图替代 grep 的软件挺多的,这个在我看来比较出名,其他的我都忘了。虽然我只用 grep 最最基础的用法但看他的 benchmark 还是挺牛的,性能上领先很多,可以日常用。

du

dua - View disk space usage and delete unwanted data, fast.

df

duf - Disk Usage/Free Utility - a better ‘df’ alternative

  • 语言:Go
  • 主页:https://github.com/muesli/duf
  • 感想:这个也好用,df 的输出即使加上-h也要花额外精力找到需要的内容,这个比较直观看着很舒服

find

fd - A simple, fast and user-friendly alternative to ‘find’

  • 语言:Rust
  • 主页:https://github.com/sharkdp/fd
  • 感想:说实话 find 我用得也不多,不过这个确实看起来用法更友好,此外,彩色输出

ps

procs - A modern replacement for ps written in Rust

  • 语言:Rust
  • 主页:https://github.com/dalance/procs
  • 感想:这个也还行,简化了用法,比 ps -ef | grep 一套连招舒服一些,默认输出要是有父进程号就更好了,此外,彩色输出

dig

dog - A command-line DNS client.

curl

httpie - As easy as /aitch-tee-tee-pie/ pie Modern, user-friendly command-line HTTP client for the API era.

  • 语言:Python
  • 主页:https://github.com/httpie/httpie
  • 感想:以前我基本每次用到curl的高级功能都要去查文档看看咋写。这个我看到宣传后就装了但没用过,第一次用是用来发json串,我上来就http POST xxx --json a=b,结果一看不是这么用,不加选项就行,加选项反而必须要加到 method 前面,跟我的直觉不符,还是要看文档

xh - Friendly and fast tool for sending HTTP requests

  • 语言:Rust
  • 主页:https://github.com/ducaale/xh
  • 感想:这个在httpie基础上更符合我直觉了,但还不如httpie成熟,当然,它们都有彩色输出

总结

  • 现代命令行应用彩色输出是标配
  • Rust 程序员最喜欢重写
  • 这些工具对日常熟练用命令行的人来说估计用处不大,但对我这种基本只用到一些基础功能的来说还是挺有意思的
  • 克服使用习惯挺难的,目前我只对其中能显著提高性能以及原来的命令输出确实不方便和不习惯的替代工具感兴趣

更新 21-03-09

shell

nushell - A new type of shell

  • 语言:Rust
  • 主页:https://github.com/nushell/nushell
  • 感想:现代化的 shell 当然也有很多重写,试了一下这个我用这还挺舒服的,亮点是所有操作都像操作数据库一样给出表格作为结果,还有就是跨平台,直接把一些常用命令也用比较现代的实现覆盖了,这样各平台体验就基本一致了。但是还处在早期阶段,API 不稳定,而且版本号感觉挺迷,稳定版 0.44,文档却给的 0.59,GitHub 上现在版本也是 0.59,很多东西都不兼容了。希望早日流行开来,对命令行操作真挺友好的,目前的 shell 脚本我完全不会写。
  • P.S.:我目前日常用的还是zsh+oh my zsh, 最近也试了试新的管理工具 zim 默认用起来也不错,适合懒得配置的人。

terminal emulator

kitty - Cross-platform, fast, feature-rich, GPU based terminal

  • 语言:C + Python
  • 主页:https://github.com/kovidgoyal/kitty
  • 感想:命令行工具要用得舒服不得不提终端模拟器。最近流行用 GPU 加速,最火的几款感觉性能上差别不太大了,就看一些细节是不是符合个人喜好。当然要求功能完善还是用桌面环境自带的或者基于 web 的那些,这个项目就比较个人化,作者主要用键盘工作不用鼠标,他不想要的功能就绝对不会加,比如说滚动条。
  • P.S.:这作者也是电子书阅读器 calibre 的作者,果然大佬们不管写啥类型的软件都做出好东西