写点什么

这些相见恨晚的命令行工具,你用过几个?

用户头像
王坤祥
关注
发布于: 2021 年 04 月 11 日
这些相见恨晚的命令行工具,你用过几个?

不管你是一个程序猿,亦或是一个运维人员,工作中的很多时间都会跟命令行工具打交道。下面介绍一下我在工作中常用的几个非常好用的命令行工具,废话少说,直接上干货!

1. tldr

tldr是 Too long,Don't read 首字母缩写,它是简化版的 man pages 查看工具。有些命令长时间不使用时有生疏,通常情况下,这些命令常用的使用场景和高频使用参数固定那么几个。这个时候,我们当然可以使用man命令进行查阅,但更多的时候,我们使用 tldr 命令就够了。如下图所示,图片左半部分是man指令查询到的tar指令使用说明,太长不想读,除非你是想详细了解下命令的使用;右半部分是tldr命令给出的使用说明,内容一目了然,十分清爽。该命令的安装也很简单,一行命令搞定,开箱即用。

2. fish shell

毋庸置疑,shell 是使用最频繁也最重要的工具。颜值即正义。目前我正使用的就是fish shell。它是一个非常优秀的终端 shell。拥有很多开箱即用的功能,比如:语法自动推荐和补全、语法高亮,基于网页进行可视化配置,修改主题、命令提示符等。


fish shell 非常适合初学者,因为我们几乎无需进行任何复杂的设置即可安装使用。但它有一个缺点,由于它使用的脚本语法与其他 Shell 有所差异,因此通常用户不能把拷贝自网上的脚本直接粘贴使用。你必须将不兼容的命令更改为合法的脚本,或者启动一个 Bash 会话以运行 Bash 脚本。即便如此,我还是强烈推荐去使用它。如果你是一个爱折腾星人,自己添加相关插件来扩展 Fish Shell 的功能折腾去吧,三个插件管理工具推荐给大家, Fisher, Oh My Fish, 以及 fundle

3. pyenv, nodenv 以及 rbenv

pyenv可以轻松实现 Python 版本的切换。官方网站有详细的使用教程。或者你可以直接使用前面提到的tldr来查阅常用命令。


不同的项目 Python 版本以及开发环境会有差异,Python 的版本管理相对复杂,如果你不小心的话,很容易弄乱配置关系。该工具可以十分优雅地解决上面的问题,它可以全局或“按项目文件夹”切换 Python 版本,而且每个版本都是相互隔离的。


对了,有一个名为 asdf 的工具,它可以将pyenvnodenvrbenv及其他 env 进行统一管理。它提供了几乎所有编程语言的版本管理,如果你也有版本管理的需求,一定记得尝试使用一下。

4. htop

htoptop的升级版。top工具是非常基础的监控工具,提供的功能有限,因此很多人转去使用htophtop比起top,优势很明显——除了功能更加完善以外,它的色彩搭配也很丰富,整体上使用起来更加友好。PS:还有常用的用于监控 IO 和网络的iotop以及iftop工具,感兴趣的朋友可以试一下。

5. glances

glance展示的信息比 htop更加全面。它是一个跨平台的监控工具,除了支持命令行使用以外,它还提供 API 接口,Web UI 以及支持各种数据导出格式,因此你可以将系统监控提高到一个新档次。因此我在这里强烈推荐一波!


6. fzf

fzffuzzy finder,即模糊查找器。它是一种通用工具,可让你使用模糊搜索来查找文件、历史命令、进程、git 提交等。你键入一些字母,它会尝试匹配结果列表中任何位置的字母。输入的字母越多,结果也就越准确。

7. axel

axel使用了多线程加速下载文件,并且还可以平衡不同服务器之间的负载。它支持 HTTP,HTTPS,FTP 和 FTPS 协议,下载大型文件时可以替代curlwget


8. jq

jq可以在终端中将 json 数据处理以及格式化显示,支持高亮,可以替代python -m json.tool

9. fd

fd类似于系统自带的 find 命令,但使用起来更简单,查找速度更快,并且具有良好的默认设置。它的输出颜色配置很漂亮,简直是颜值党的福音,而且根据基准测试,它的执行速度甚至比find命令的还要快。


不管你想找到一个名为“target”的文件,但是不确定文件的扩展名,还是查找一个存放所有 target 的目录,而不单是一个文件。你可以撸起袖子,开始为 find 命令编写那些复杂的正则表达式,也可以直接命令行运行 fd target。反正对我来说,当然选择最简单的那个啦。


默认情况下,fd会忽略隐藏的以及在.gitignore列出的文件和目录。大多数时候,这是比较合理的。但是在极少数特殊情况下需要禁用此功能,我会给该命令设置一个别名: fda='fd -IH',这样一来就方便多了。

10. multitail

multitail是个用来实现同时监控多个文档、类似 tail 命令的功能的终端工具。它与 tail 的最大区别就是它会在控制台中打开多个窗口,这样使同时监控多个日志文档成为可能。

11. bat

类似于在终端中常用的用于显示文件内容的cat命令,但是bat效果更佳。它增加了语法高亮显示,git gutter 标记(如果适用),自动分页(如果文件很大)等功能,并且使得输出的内容阅读起来更加友好。

12. ctop 和 lazydocker

当你使用 Docker 并对其监控时,这两个工具会很有帮助。ctop使用了 Docker 容器的顶级接口。它可以为你:

  • 展示正在运行和已停止的容器列表。

  • 展示统计信息,例如内存、CPU 使用率以及针对每个容器的其他详细信息窗口(例如绑定的端口等其他信息)。

  • 提供快捷菜单,方便快速停止、杀掉指定容器进程或显示给定容器的日志。

ctop 的实时监控示例


这比你尝试从docker ps命令中找出所有这些信息要方便多了。但是,lazydocker才是我最喜欢的 Docker 工具。

lazydocker 的实时监控示例


如果你认为ctop很酷,请你尝试使用lazydocker后再做决定!它是一个非常成熟的拥有终端 UI 界面的工具,提供了非常丰富的功能用于管理 Docker,非常值得各位去体验。


以上就是我要推荐的几个比较使用的终端工具,如果有新的推荐,我会实时更新。

To be continued!

发布于: 2021 年 04 月 11 日阅读数: 46
用户头像

王坤祥

关注

日拱一卒,功不唐捐。 2017.10.17 加入

不懂热能的低温工程师不是好程序猿

评论

发布
暂无评论
这些相见恨晚的命令行工具,你用过几个?