引言
命令行是开发者的主战场。在 2026 年,一批用 Rust 重写的现代 CLI 工具正在悄然替换 Unix 经典命令——它们更快、更聪明、更好看。本文推荐三个 GitHub 高星项目:bat 让你重新认识 cat,Starship 统一你的终端提示符,Atuin 把 shell 历史变成可搜索的数据库。三者各管一摊,组合起来能让终端体验焕然一新。
一、bat:带语法高亮与 Git 标记的 cat 替代
项目地址:https://github.com/sharkdp/bat Star 数:约 50.4k 开发语言:Rust 协议:MIT / Apache-2.0
cat 是 Unix 最古老的命令之一,但它在语法高亮、行号、Git 集成方面几乎为零。bat 用 Rust 重写了这一切——它不是简单的 cat 增强版,而是一个把终端文件查看体验拉到现代水准的工具。
核心功能
- 语法高亮:自动识别文件类型,对代码、配置文件、Markdown 等进行彩色高亮,支持上百种语言。
- 行号与分页:默认显示行号,长文件自动分页,支持
--paging=never关闭。 - Git 标记:在行号旁显示 Git 改动状态(新增、修改、删除),查看 diff 时一目了然。
- 生态集成:与 fzf(模糊查找)、fd(文件查找)、ripgrep(内容搜索)无缝配合,让模糊搜索中的文件预览自带高亮。
- 可作为替换:设置
alias cat="bat"即可全局替换,无需改变肌肉记忆。
安装方式
macOS:
brew install bat
Ubuntu / Debian:
sudo apt install bat
# 注意:Debian 上命令是 batcat,可 alias bat="batcat"
Windows(Scoop):
scoop install bat
使用示例
查看代码并显示 Git 改动:
bat --style=numbers,changes src/main.py
作为 ripgrep 的预览器,在搜索结果中高亮文件:
rg --files | fzf --preview 'bat --color=always {}'
适用场景
任何需要查看文件内容的场景:阅读代码、检查配置、预览 Markdown。尤其适合搭配 fzf 做模糊文件浏览——bat 的高亮让预览面板瞬间可读。
二、Starship:一份配置,通吃所有 Shell 的提示符
项目地址:https://github.com/starship/starship Star 数:约 46k 开发语言:Rust 协议:ISC
终端提示符(prompt)是开发者每秒都在看的东西,但不同 shell 的配置互不兼容——bash 用 PS1,zsh 用主题框架,fish 有自己的体系。Starship 用一个 Rust 二进制和一份 TOML 配置统一了这一切。
核心功能
- 跨 Shell 一致:在 bash、zsh、fish、PowerShell、cmd 上表现完全相同,换机器换 shell,配置照搬。
- 上下文感知:自动显示当前 Git 分支与改动状态、语言运行时版本(Node、Python、Rust 等)、Docker 上下文、Kubernetes 命名空间。
- 极快:Rust 实现,提示符渲染延迟通常在毫秒级,不会拖慢输入。
- 零配置可用:开箱即用的默认主题已覆盖大多数需求,进阶可自定义
~/.config/starship.toml。 - 模块化:每个上下文(git、node、python、docker…)都是一个可开关的模块,按需启用。
安装方式
macOS:
brew install starship
安装后在 shell 配置中加一行初始化:
# ~/.bashrc 或 ~/.zshrc
eval "$(starship init bash)" # bash
eval "$(starship init zsh)" # zsh
# fish
starship init fish | source
使用示例
自定义配置让提示符显示 Git 状态和 Python 版本:
# ~/.config/starship.toml
[directory]
truncation_length = 3
truncate_to_repo = false
[git_status]
ahead = "↑"
behind = "↓"
modified = "!"
[python]
format = '[py ${pyenv_prefix}(${version})]($style) '
适用场景
适合频繁切换 shell、跨多台机器工作、或对默认提示符信息量不满意的开发者。如果你受够了每个 shell 配一套主题,Starship 的一次配置永久生效是最大卖点。
三、Atuin:把 Shell 历史变成可搜索的 SQLite 数据库
项目地址:https://github.com/atuinsh/atuin Star 数:约 22k 开发语言:Rust 协议:MIT
Ctrl+R 反向搜索是 shell 历史的标准用法,但它只能按字符串模糊匹配,而且换台机器历史就没了。Atuin 把每条命令存进 SQLite 数据库,记录执行目录、退出码、时间,并支持端到端加密的多设备同步。
核心功能
- 结构化存储:每条历史记录关联目录、退出码、耗时、主机名,支持按维度过滤——"上周在 /opt 项目里成功执行的 docker 命令"。
- 全文搜索:替代
Ctrl+R,支持按目录、退出码、时间范围精确查找,比反向搜索更准。 - 加密同步:可选开启端到端加密的多设备同步,公司台式机和家里笔记本共享历史,数据全程加密。
- 不改变习惯:替换
Ctrl+R绑定即可,原有history命令仍可用。 - 统计与导出:支持历史统计、导出,方便做命令使用分析。
安装方式
macOS:
brew install atuin
安装后绑定到 shell:
# bash / zsh
eval "$(atuin init bash)" # 或 zsh
# fish
atuin init fish | source
使用示例
搜索在特定目录执行过的成功命令:
atuin search --cwd ~/projects --exit 0 "docker"
交互式搜索(替代 Ctrl+R):
# 直接按 Ctrl+R 即可弹出 Atuin 搜索界面
查看历史统计:
atuin stats # 显示最常用命令排行
适用场景
适合长期在命令行工作、有多台设备、或需要回顾"我上次是怎么解决的"的开发者和运维人员。如果你经常想不起某条命令在哪个目录跑过、是否成功,Atuin 能帮你找回这些上下文。
功能对比
| 维度 | bat | Starship | Atuin |
|---|---|---|---|
| 替换对象 | cat |
shell 提示符 | Ctrl+R / history |
| Star | ~50.4k | ~46k | ~22k |
| 语言 | Rust | Rust | Rust |
| 核心价值 | 文件查看体验 | 提示符信息量 | 历史可搜索 |
| 跨 Shell | 不涉及 | 是(核心卖点) | 是 |
| 推荐搭配 | fzf / ripgrep | 任意 shell | Starship |
总结
bat、Starship、Atuin 这三个 Rust 工具恰好覆盖终端体验的三个高频触点:看文件、看提示符、查历史。它们都以"替换一个古老 Unix 命令"为起点,却把现代开发所需的高亮、上下文感知和结构化数据带进了终端。装上这三个工具,你的命令行会从"能用"变成"好用"——而且配置一次,跨 shell、跨机器都生效。如果你还没试过,先从 brew install bat starship atuin 开始,你会立刻感受到差异。

评论(0)
暂无评论,来抢沙发~
请 登录 后发表评论