常用 CLI 工具下 - 拥抱命令行系列之工具篇

常用 CLI 工具下 - 拥抱命令行系列之工具篇
Photo by Gabriel Heinzer / Unsplash

前言

紧接上篇:常用 CLI 工具上 - 拥抱命令行系列之工具篇

主要聚焦在全仿行工具,一些基础内容如终端的选择 iTerm2(macOS only)/Alacritty/Hyper/Tabby,各种的 shell 环境 bash/zsh/fish 等不在本文范围。

BASH:基础功能、高效、通用
ZSH:语法高亮、自动补全、自定制(插件、主题等)、生态
FISH:default 配置足够,POSIX 不兼容

本文聚焦已经有了基础环境,通过下面的命令行工具提高日常的效率。主要以 macOS 的 zsh + oh-my-zsh 为基础环境。下面大部分工具都支持 macOS 和各种版本的 Linux,部分支持 Windows。

替换原用工具方法

使用编辑工具打开 ~/.bashrc 或者 ~/.zshrc 在文件中增加别名映射,如

alias ls='lsd'

使用 lsd 命令替换原有 ls,当输入 ls 时会自动调用 lsd,如需临时使用原命令在前面加上 \ 输入 \ld 即可。

⚠️ 使用别名后,由于参数和输出和原命令不能完全兼容,可能会造成部分 shell 脚本执行出错,按需使用。

常用工具

fzf

{Windows/macOS/Linux | 免费/开源}
Github:  https://github.com/junegunn/fzf

命令行的模糊查询器。可以非常方便的过滤各种各样的列表,如文件列表、历史命令、进程等等,而且速度非常非常的快。

安装

# macOS
brew install fzf

Windows 及各种 Linux 可查看官方安装方式

使用

常用参数:

--reverse 反转显示,过滤条在顶部
--multi 可通过 Shift + Tab 进行内容多选
--query 从参数传入过滤条件

进入 fzf 后的一些常用操作:

<Enter> 回车选择文件
<ESC> 退出
${str}$ 过滤显示以 ${str} 结尾的内容
'${str} 过滤显示以 ${str} 开头的内容
${con_a} | ${con_b} 或,满足条件 A 或者满足条件 B
${con_a} ${con_b} (空格)和,满足条件 A 且满足条件 B

同时也支持管道(pipline)操作:

# 对进程进行模糊匹配
ps aux | fzf
# 对历史命令进行模糊匹配
history | fzf
# 查找路径下的文件作为输入,在 fzf 中进行多选后生成文件
find ${path} -type f | fzf --multi > ${filename}

可选配置

可与 Vim/NeoVim 通过插件 fzf.vim 进行深度集成。

thefuck

{Windows/macOS/Linux | 免费/开源}
Github: https://github.com/nvbn/thefuck

名字取得十分的不和谐,实际功能就是自动订正前一条命令。

安装

# macOS
brew install thefuck

Windows 及各种 Linux 可查看官方安装方式

使用

直接输入 fuck 回车,完事。

可选配置

oh-my-zsh 内置有 thefuck 插件,在 ~/.zshrc 文件中启用该插件:

plugins=(
    thefuck
	# sudo
	...
)

启用后双击 ESC 就可以自动订正前一条命令。

⚠️  因为都使用 ESC-ESC 快捷键,所以 omz 的 the fuck 插件与 sudo 插件有冲突,需要禁用掉 sudo 插件。

httpie

{Windows/macOS/Linux | 免费/开源}
Github: https://github.com/httpie/httpie

人性化的命令行 HTTP 客户端,使用 httphttps 命令发起 HTTP 请求。主要的特性:直观的语法、格式化和彩色化的终端输出、内置 JSON 支持、文件上传、持久会话、插件支持等。

安装

# macOS
brew install httpie

Windows 及各种 Linux 可查看官方安装方式

使用

# 请求 http[s]://undefapp.com
http[s] undefapp.com

# 请求本地 http://localhost:8080/hello
http :8080/hello

# 下载 httpie master.tar.gz
http --download https://github.com/httpie/httpie/archive/master.tar.gz

# 提交文件
cat ${file} | http --compress pie.dev/post

prettyping

{macOS/Linux | 免费/开源}
Github: https://github.com/denilsonsa/prettyping

它是使用 bashawk 编写的对标准 ping 工具的封装,但是输出更加的漂亮、彩色、紧凑和便于阅读。所以需要依赖 pingbashawk

安装

# macOS
brew install prettyping

各种 Linux 可查看官方安装方式

使用

prettyping ${host}

可选配置

替换 ping 命令

# 增加 --nolegend 参数就不会出现顶部的图示
alias ping='prettyping --nolegend'

类似工具

gping

{Windows/macOS/Linux | 免费/开源}
Github: https://github.com/orf/gping

同样是彩色的图形化展示,还支持同时 ping 多个主机,但是因为是全屏显示所以没有主力使用。

安装
# macOS
brew install gping

Windows 及各种 Linux 可查看官方安装方式

htop

{macOS/Linux | 免费/开源}
官网: https://htop.dev/
Github: https://github.com/htop-dev/htop

跨平台的交互式进程查询器。

安装

# macOS
brew install htop

各种 Linux 可查看官方安装方式,官方介绍的安装是自己编译的方式,但该工具很多 Linux 的源里面已经包含了,所以可以先使用系统源安装试一下。

使用

输入 htop 直接用起来,常用功能都有提示
? 显示帮助内容
F3 / 搜索内容
F4 \ 过滤内容
F6 . 以某列排序
F9 k 杀进程
F10 q 退出

类似工具

btop

{macOS/Linux | 免费/开源}
Github: https://github.com/aristocratos/btop

显示的信息更加的全面(电池、磁盘、IO、网络等),还有 UI 菜单进行配置,更多的主题和定制化内容,长得要比 htop 好看。但是平时使用场景以看进程居多,反而不是太直观,日常使用还是以 htop 为主力。

安装
# macOS
brew install btop

各种 Linux 可查看官方安装方式

glances

{Windows/macOS/Linux | 免费/开源}
Github: https://github.com/nicolargo/glances

功能和外观上没有太多特别的,由于用 python 编写,所以可以全平台运行。但是它有一个特殊的技能,提供了XML-RPC 和 RESTful 的 API,除了在终端运行外还支持浏览器和远程监控。

安装
# macOS
brew install glances

Windows 及各种 Linux 可查看官方安装方式

使用
# Web server 模式运行,可通过 http://ip:61208 进行访问
# 该功能需要依赖 bottle 模块,默认不会安排,需在安装时显示的指明
glaces -w

# 客户端和服务端模式
# 服务端
glances -s 
# 客户端
glances -c ${ip}