常用 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 客户端,使用 http
和 https
命令发起 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
它是使用 bash
和 awk
编写的对标准 ping
工具的封装,但是输出更加的漂亮、彩色、紧凑和便于阅读。所以需要依赖 ping
、bash
和 awk
。
安装
# 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}