外观
Shell 与命令行工具
Shell 是把 Git、服务器、实验脚本和部署串起来的接口。先保证命令透明可读,再用补全、模糊搜索和别名减少重复输入。
Bash 与 Zsh
Bash 是服务器和脚本中最常见的默认选择;Zsh 更强调交互补全和可定制体验。项目脚本应显式声明解释器,不要假设所有机器都使用你的交互式 Shell。
bash
#!/usr/bin/env bash
set -euo pipefail环境变量放在项目的 .env 示例或部署配置中,密钥只放受控的实际环境;不要把个人 PATH、别名和主题混进项目脚本。
Oh My Zsh
Oh My Zsh 管理 Zsh 的主题和插件。在 ~/.zshrc 中只启用真正使用的插件,数量过多会增加启动耗时和命令冲突。
zsh
plugins=(git sudo extract command-not-found web-search copyfile copypath)
source $ZSH/oh-my-zsh.sh修改后用 exec zsh 重新加载。第三方插件通常要求先安装项目本体,再把插件放入 ~/.oh-my-zsh/custom/plugins/;以各项目当前安装说明为准。
Git plugin
Git 插件的别名以当前 Oh My Zsh 源码为准,升级后可能变化。高频别名如下:
| 别名 | 展开 | 用途 |
|---|---|---|
gst | git status | 查看状态 |
gaa | git add --all | 暂存全部修改 |
gcmsg | git commit -m | 带消息提交 |
gco | git checkout | 切换分支或路径 |
gsw | git switch | 切换分支 |
gswc | git switch -c | 创建并切换分支 |
gl | git pull | 拉取并合并 |
gp | git push | 推送 |
gpsup | git push --set-upstream origin $(git_current_branch) | 首次推送当前分支 |
gd | git diff | 查看未暂存差异 |
gdca | git diff --cached | 查看已暂存差异 |
glog | 图形化 git log | 查看提交图 |
gsta | git stash push | 暂存工作区 |
gstp | git stash pop | 恢复最近 stash |
别名能加速输入,但交接和文档中优先写完整命令,让不使用相同配置的人也能执行。
sudo plugin
按两次 Esc 可在当前命令前添加或移除 sudo。它只减少重输,不代表命令应以 root 身份运行;安装项目依赖、启动普通服务和修改用户文件通常不需要 sudo。
extract plugin
extract archive.tar.gz 根据扩展名选择解压命令,适合日常使用。处理来源不明的归档前先列出内容,避免路径穿越或覆盖文件。
command-not-found
当命令不存在时,它根据系统包索引建议安装包。建议只是线索:安装前核对软件包名、来源和系统版本。
web-search、copyfile 与 copypath
bash
google pytorch distributed checkpoint
copyfile pyproject.toml
copypath results/table.csvweb-search 在浏览器中打开搜索;copyfile 复制文件内容;copypath 复制绝对路径。复制密钥文件或包含隐私的数据前要确认剪贴板的去向。
zsh-autosuggestions
输入时会依据历史记录显示建议,通常用右箭头接受。历史中可能包含误输入和敏感参数,因此不要盲目接受;密钥应通过环境变量或标准输入传递,而不是直接出现在命令行。
zsh-syntax-highlighting
插件在执行前标记有效命令、路径和错误输入。它应当放在插件加载顺序的靠后位置,但颜色只是一层反馈,不能替代阅读即将执行的命令。
fzf
fzf 从标准输入读取候选并返回选择结果。Shell 集成通常提供:
| 快捷键 | 作用 |
|---|---|
Ctrl-R | 模糊搜索历史命令 |
Ctrl-T | 搜索文件并插入路径 |
Alt-C | 搜索并进入目录 |
也可以组合任意命令:git branch --format='%(refname:short)' | fzf。
fzf-tab
fzf-tab 接管 Zsh 的 Tab 补全展示。输入命令前缀后按 Tab,在候选中继续模糊搜索;若补全结果异常,先检查 Zsh 补全系统和插件加载顺序。
zoxide
zoxide 记录目录访问频率,用 z 关键词 跳转,用 zi 交互选择。刚安装时数据库为空,需要正常访问几次目录后才有明显效果。
bash
z research
zi
zoxide query researchThe Fuck
上一条命令失败后运行 fuck,工具会给出修正候选。执行前必须阅读候选,尤其是涉及权限、删除、覆盖和远程资源的命令。项目当前处于何种维护状态也应在安装前查看官方仓库。
ripgrep、fd 与 jq
bash
rg -n 'TODO|FIXME' src tests
fd -e json . results
jq '.metrics.accuracy' results/run.json
jq -r '.items[] | [.name, .score] | @tsv' data.jsonrg 搜内容,fd 找路径,jq 处理 JSON。它们可组合在脚本中,但复杂数据处理进入 Python 后通常更易测试。
curl 与 wget
curl 更适合 API 和单次请求,wget 更偏下载。调试 API 时用 -i 查看响应头,用 -f 让 HTTP 错误导致命令失败;不要把 Authorization Token 直接粘进会被保存的 Shell 历史。
bash
curl -fsS https://example.com/health
wget -c https://example.com/checkpoint.bin