跳至内容
liuzhen932 的小窝
返回

命令行必备的小工具和小技巧

必备工具

如今很多人已经离不开命令行,许多命令是每天必用多用的,比如超级经典的 lscd。今天我们来总结一些有意思的 CLI 工具。

更好的实现

近年来,这些经典命令的替代品开始出现,大家开始尝试使用现代且更加安全的语言(更多的是 Rust),重新实现这些经典命令。

ripgrep — grep 的替代品

ripgrep 是一款超快的递归文本搜索工具,默认遵循 .gitignore 规则,自动跳过二进制文件,并支持正则、多线程和彩色输出,是代码搜索场景下最受欢迎的 grep 替代品。

Github: BurntSushi/ripgrep

fd — find 的替代品

fd 是一个速度快、语法直观的文件搜索工具,默认尊重 .gitignore 并使用智能大小写,能够通过简单模式快速查找文件,是传统 find 命令的现代化替代品。

Github: sharkdp/fd

bat — cat 的替代品

bat 是一个带语法高亮、行号显示、Git 修改标记和自动分页的 cat 克隆,支持数百种语言,让查看文件内容变得更加美观和方便。

Github: sharkdp/bat

eza — ls 的现代替代品

eza 是一个用 Rust 编写的现代 ls 替代工具,支持彩色输出、文件图标、Git 状态标记、树状视图和超链接等特性,比传统的 ls 更美观、更强大。相比 exa,eza 更新更频繁,对新功能支持更好。

Github: eza-community/eza

tealdeer — man 的现代替代品

tealdeer 是一个快速且符合社区规范的 tldr 页面客户端,提供简洁、带示例的命令速查手册,加载速度极快,是内置 tldrman 页面的高效替代品。

Github: dbrgn/tealdeer

hexyl — hexdump 替代品

hexyl 是一个色彩丰富、高度可定制的十六进制查看器,用 Rust 编写,支持不同字节分组、面板对比和彩色输出,是传统 hexdumpxxd 的现代化替代品。

Github: sharkdp/hexyl

zoxide — cd 替代品

zoxide 是一个更智能的目录跳转工具,通过记住你最常访问的目录来自动补全路径,支持模糊匹配和多种 Shell 集成,比传统的 cd 命令快得多。

我不喜欢 zoxide。

Github: ajeetdsouza/zoxide

delta — diff 增强工具

delta 是一个带语法高亮、行号和 Git 风格的 diff 查看器,支持并排视图、行内差异高亮和主题定制,让代码对比更加直观可读。

Github: dandavison/delta

dust — du 替代品

dust 是一个更直观的磁盘使用分析工具,用树状结构和彩色条形图展示每个目录所占空间,比传统的 du 命令更容易理解存储占用情况。

Github: bootandy/dust

procs — ps 替代品

procs 是一个用 Rust 编写的现代进程查看器,默认输出带彩色高亮、树状层级和可配置列,比传统 ps 更易读、更人性化。

Github: dalance/procs

sd — sed 替代品

sd 是一个直观的查找替换工具,语法比 sed 更简单自然,支持正则替换、大小写敏感控制和预览模式,大大降低了文本替换的学习成本。

Github: chmln/sd

choose — cut / awk 字段提取替代品

choose 是一个简洁快速的字段提取工具,使用类似 Python 的切片语法按字段或字符范围切分文本,比 cutawk 更直观易记。

Github: theryangeary/choose

xh — httpie / curl 简化替代品

xh 是一个以性能为导向的 HTTP 请求发送工具,语法简洁直观,支持 JSON 美化输出、会话持久化和 HTTP/2,是交互式调试 API 的利器。

Github: ducaale/xh

优秀的程序

除了使用 Rust 等编写的替代品,还有这些推荐的优秀程序,他们弥补了默认命令的诸多空白:

fzf — 通用命令行模糊查找器

fzf 是一个交互式 Unix 过滤器,可对任何列表进行模糊匹配并实时预览,常被用作文件搜索、历史命令、进程查找等场景的交互式选择器,极大提升命令行操作效率。

Github: junegunn/fzf 使用 Golang

fend — 命令行计算器

fend 是一个任意精度的单位感知计算器,支持货币转换、单位运算、数字进制切换和变量赋值,适合在终端中快速完成数值和单位换算。

Github: printfn/fend

yazi — 终端文件管理器

yazi 是一个异步、高性能的终端文件管理器,支持图片预览、代码高亮、多标签页和插件系统,用 Rust 编写,速度极快且功能强大,是 ranger 的现代替代品。

Github: sxyazi/yazi

gum — 交互式 Shell 脚本美化工具

gum 是 Charmbracelet 生态下的工具集,用 Go 编写,让你在 Shell 脚本中轻松添加模糊选择、输入框、确认对话框、进度条等交互式界面,告别枯燥的纯文本交互。

Github: charmbracelet/gum

glow — 终端 Markdown 阅读器

glow 是 Charmbracelet 出品的终端 Markdown 渲染器,用 Go 编写,支持主题切换、自动分页和从本地或远程读取,让在终端中阅读文档变成一种享受。

Github: charmbracelet/glow

atuin — 同步式 Shell 历史

atuin 是一个用 Rust 编写的 Shell 历史记录工具,支持全历史加密云同步、统计分析和模糊搜索,让多设备间的命令历史无缝共享。

Github: atuinsh/atuin

navi 是一个用 Rust 编写的交互式速查表工具,允许你通过模糊搜索浏览和执行代码片段,适合管理复杂的命令模板和速查手册。

Github: denisidoro/navi

lz

自荐一下我用 Golang 编写的快速 CLI 工具,集成了多种编码和转换操作,实现了 All-in-One 工具集。

Git: lz/lz

# 使用 go 一键编译安装
go install git.6l.ink/lz/lz@latest

更多的 CLI 工具可以参考 liuzhen932’s list CLI/TUI Tool


Shell 小技巧

在阅读下面的部分前,强烈建议您打开一个 Shell 亲自体验。这些技巧在 bashzsh 下大多通用,熟练后能明显提升命令行效率。

感叹号(Event Designators 和 Word Designators)

#

# 通常用于注释,不过,配合快捷键:Alt + # 会把当前行整体注释掉,并放入历史,这样你可以先干别的,稍后从历史里调回来继续编辑。

%

两个完全不同的角色:

  1. 作业控制

    sleep 100 &
    %                # 把当前作业调到前台(等同 fg)
    fg %2            # 调出 2 号作业
    kill %1          # 杀掉 1 号作业
  2. 历史单词指定符 % — 最近一次 !?search? 匹配的那个单词

    docker restart container_name
    echo !?restart?:%   # 会展开成 restart(包含搜索词的那个词)

花括号

快捷键

快捷键作用
Ctrl + R反向搜索历史命令(再按一次继续往前搜)
Ctrl + S正向搜索(如果被终端占用,先执行 stty -ixon
Alt + .Esc 后按 .粘贴上一条命令的最后一个参数,可连续按依次上溯
Ctrl + A跳到行首
Ctrl + E跳到行尾
Ctrl + U删除光标前所有字符
Ctrl + K删除光标后所有字符
Ctrl + W删除光标前一个单词
Ctrl + Y粘贴刚才删除的内容

系统内置命令

这些技巧随手用起来,终端操作会顺手很多。如您有更多推荐或本文存在问题,请留言。


分享这篇文章:

上一篇
使用 Forge Actions 拉取 Infisical 机密
下一篇
安全地使用 SSH 进行持续集成和部署

人机验证:请刷新页面以加载评论区