这些相见恨晚的命令行工具,你用过几个?
不管你是一个程序猿,亦或是一个运维人员,工作中的很多时间都会跟命令行工具打交道。下面介绍一下我在工作中常用的几个非常好用的命令行工具,废话少说,直接上干货!
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 的工具,它可以将pyenv,nodenv,rbenv及其他 env 进行统一管理。它提供了几乎所有编程语言的版本管理,如果你也有版本管理的需求,一定记得尝试使用一下。
4. htop
htop是top
的升级版。top
工具是非常基础的监控工具,提供的功能有限,因此很多人转去使用htop
。htop
比起top
,优势很明显——除了功能更加完善以外,它的色彩搭配也很丰富,整体上使用起来更加友好。PS:还有常用的用于监控 IO 和网络的iotop
以及iftop
工具,感兴趣的朋友可以试一下。
5. glances
glance展示的信息比 htop
更加全面。它是一个跨平台的监控工具,除了支持命令行使用以外,它还提供 API 接口,Web UI 以及支持各种数据导出格式,因此你可以将系统监控提高到一个新档次。因此我在这里强烈推荐一波!
6. fzf
fzf— fuzzy finder,即模糊查找器。它是一种通用工具,可让你使用模糊搜索来查找文件、历史命令、进程、git 提交等。你键入一些字母,它会尝试匹配结果列表中任何位置的字母。输入的字母越多,结果也就越准确。
7. axel
axel使用了多线程加速下载文件,并且还可以平衡不同服务器之间的负载。它支持 HTTP,HTTPS,FTP 和 FTPS 协议,下载大型文件时可以替代curl
、wget
。
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!
版权声明: 本文为 InfoQ 作者【王坤祥】的原创文章。
原文链接:【http://xie.infoq.cn/article/48a653074217b411be7bd1819】。文章转载请联系作者。
评论