工具栈概要

当前终端栈以 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-2

rg 负责内容搜索,fzf 负责交互筛选,batcat 负责预览。最终结果可以交给 Neovim:

nvim "$(rg -l 'TODO' | fzf)"

找文件并预览

fd --type f --hidden --exclude .git |
  fzf --preview 'batcat --color=always --line-range :300 {}'

快速跳转目录

z project
zi

z 使用历史权重选择目录;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 affected

CodeGraph 是项目级索引。仅安装 CLI 或接入 Codex 并不会自动为所有仓库建立索引。

工具选择建议

场景首选说明
搜索文件内容rg默认尊重 .gitignore
搜索文件名fd语法比 find 简洁
复杂 POSIX 文件条件find表达能力更完整
交互筛选fzf可接收任意文本流
常用目录跳转zoxide基于访问频率
查看目录eza图标、Git、树形展示
查看文件batcat高亮、行号、Git 标记
交互文件管理yaziTUI 和预览
终端复用tmux / Zellijtmux 生态成熟;Zellij 更易发现
下载和调用 HTTP APIcurl状态码、请求头、重试控制
下载文件或镜像站内容wget断点续传和递归下载
查看地址与路由ip接口、地址、路由和邻居表
查看监听端口与连接ss替代旧式 netstat 的常用选择
测试 TCP/UDP 端口ncTCP 结果可靠;UDP 探测只能作为线索
查询 DNS 记录dig可指定记录类型和 DNS 服务器
查看路径与 MTUtracepath通常不需要 root
抓取并过滤数据包tcpdump可能包含敏感数据,谨慎保存和分享
远程登录与隧道ssh同时支持跳板机和端口转发

更新原则

  • APT 工具通过 APT 更新。
  • Git 克隆通过 git pull --ff-only 或项目自己的更新命令更新。
  • uv、npm 管理的工具使用原包管理器升级。
  • 独立二进制从官方 release 或本地离线包更新。
  • 当前若干离线安装器采用“已存在则跳过”,不能直接当升级器使用。