工具栈概要
当前终端栈以 zsh 为入口,Oh My Zsh 提供框架和插件,Starship 负责提示符。
现代搜索和导航工具通过 ~/.local/bin、~/.zfunc 以及 .zshrc 集成。
zsh 启动链
~/.zshenv
└─ 设置 EDITOR=nvim 等全局环境
~/.zshrc
├─ 整理 PATH、fpath
├─ 初始化 fnm
├─ 加载 zsh-completions 路径
├─ 加载 Oh My Zsh
│ ├─ git 插件
│ ├─ zsh-autosuggestions
│ └─ zsh-syntax-highlighting
├─ 加载 fnm 补全
├─ 初始化 fzf
├─ 初始化 Starship
├─ 初始化 zoxide
└─ 定义 eza 的 ll / lt 别名Oh My Zsh 负责 compinit。不要在它之后再次无条件运行 compinit,否则可能重复生成补全缓存或拖慢启动。
推荐组合
搜索代码并打开
rg --line-number --color=always 'TODO|FIXME' |
fzf --ansi --delimiter : \
--preview 'batcat --color=always {1} --highlight-line {2}' |
cut -d: -f1-2rg 负责内容搜索,fzf 负责交互筛选,batcat 负责预览。最终结果可以交给 Neovim:
nvim "$(rg -l 'TODO' | fzf)"找文件并预览
fd --type f --hidden --exclude .git |
fzf --preview 'batcat --color=always --line-range :300 {}'快速跳转目录
z project
ziz 使用历史权重选择目录;zi 通过 fzf 交互选择。
基础命令流水线
基础命令适合组合成小型、可检查的文本流水线:
curl -fsS https://example.com/api | jq '.items[]'
cut -d, -f2 data.csv | sort | uniq -c | sort -nr | head
tail -F app.log | grep --line-buffered 'ERROR'
sha256sum -c SHA256SUMS推荐让每一步只负责一件事,并在用于自动化前检查退出状态、空输入和特殊文件名。
网络诊断与远程访问
网络问题按“接口与地址 → 路由 → DNS → 监听端口 → 目标端口 → 应用协议”逐层检查:
ip -br addr
ip route
dig example.com A +short
ss -lntup
nc -vz -w 3 example.com 443
curl -fsS -I --max-time 10 https://example.com/命令选择和常见组合见 网络命令速查;完整的 Linux 网络配置、SSH 服务端与防火墙说明见 Linux 网络与 SSH。
文件管理
Yazi 适合浏览、预览、批量选择和文件操作。当前配置还加载了 Starship、智能进入和智能粘贴插件。
需要脚本化、可重复的操作时,仍应优先使用 fd、find、rsync 或 Git。
Git 工作流
- 日常暂存、提交、分支和交互式 rebase:Lazygit。
- 需要精确脚本或自动化:Git CLI。
- 重写整个仓库历史:git-filter-repo,并只在备份或新克隆中执行。
运行时管理
- Node.js:fnm 管理版本;项目中使用
.node-version或.nvmrc。 - Python 项目和依赖:uv。
- 一次性 Python CLI:优先
uvx。 - 长期安装 Python CLI:
uv tool install。
代码理解
在已经运行过 codegraph init 的项目中,优先使用:
codegraph explore "认证请求如何到达处理器"
codegraph impact UserRepository
codegraph affectedCodeGraph 是项目级索引。仅安装 CLI 或接入 Codex 并不会自动为所有仓库建立索引。
工具选择建议
| 场景 | 首选 | 说明 |
|---|---|---|
| 搜索文件内容 | rg | 默认尊重 .gitignore |
| 搜索文件名 | fd | 语法比 find 简洁 |
| 复杂 POSIX 文件条件 | find | 表达能力更完整 |
| 交互筛选 | fzf | 可接收任意文本流 |
| 常用目录跳转 | zoxide | 基于访问频率 |
| 查看目录 | eza | 图标、Git、树形展示 |
| 查看文件 | batcat | 高亮、行号、Git 标记 |
| 交互文件管理 | yazi | TUI 和预览 |
| 终端复用 | tmux / Zellij | tmux 生态成熟;Zellij 更易发现 |
| 下载和调用 HTTP API | curl | 状态码、请求头、重试控制 |
| 下载文件或镜像站内容 | wget | 断点续传和递归下载 |
| 查看地址与路由 | ip | 接口、地址、路由和邻居表 |
| 查看监听端口与连接 | ss | 替代旧式 netstat 的常用选择 |
| 测试 TCP/UDP 端口 | nc | TCP 结果可靠;UDP 探测只能作为线索 |
| 查询 DNS 记录 | dig | 可指定记录类型和 DNS 服务器 |
| 查看路径与 MTU | tracepath | 通常不需要 root |
| 抓取并过滤数据包 | tcpdump | 可能包含敏感数据,谨慎保存和分享 |
| 远程登录与隧道 | ssh | 同时支持跳板机和端口转发 |
更新原则
- APT 工具通过 APT 更新。
- Git 克隆通过
git pull --ff-only或项目自己的更新命令更新。 - uv、npm 管理的工具使用原包管理器升级。
- 独立二进制从官方 release 或本地离线包更新。
- 当前若干离线安装器采用“已存在则跳过”,不能直接当升级器使用。