Navi项目:命令行速查表语法详解
痛点:命令行记忆负担太重?
你是否经常遇到这样的情况:明明记得某个命令的功能,却想不起具体的参数和选项?或者需要在多个命令之间来回切换,不断复制粘贴输出结果?命令行工具虽然强大,但记忆各种命令的语法和参数组合确实是个挑战。
Navi(导航)项目就是为了解决这个问题而生——它是一个交互式命令行速查表工具,让你无需死记硬背命令,通过智能提示和动态参数填充,大幅提升命令行使用效率。
读完本文,你将掌握:
- ✅ Navi速查表文件(.cheat)的完整语法结构
- ✅ 变量定义和高级参数配置技巧
- ✅ 多行命令和代码片段的编写方法
- ✅ 变量依赖和扩展功能的实战应用
- ✅ 最佳实践和常见用例解析
Navi速查表基础语法
文件结构和基本元素
Navi速查表使用.cheat或.cheat.md扩展名,采用简洁的标记语法:
% git, version-control # 标签定义(必选)
# 查看当前分支状态 # 命令描述(可选)
git status
# 切换到指定分支 # 另一个命令
git checkout <branch>
$ branch: git branch | awk '{print $NF}' # 变量定义
语法元素速查表
| 元素类型 | 语法标记 | 功能描述 | 是否必需 |
|---|---|---|---|
| 标签定义 | % | 定义命令的标签和分类 | 必需 |
| 命令描述 | # | 提供命令的功能说明 | 可选 |
| 注释 | ; | 编辑器注释,Navi会忽略 | 可选 |
| 变量定义 | $ | 预定义变量的值生成命令 | 可选 |
| 扩展标签 | @ | 扩展其他cheat的上下文 | 可选 |
| 执行命令 | 无标记 | 实际要执行的命令 | 必需 |
变量系统:智能提示的核心
基础变量定义
变量使用<变量名>格式在命令中定义,通过$行提供建议值:
# 删除Docker镜像
docker rmi <image_id>
$ image_id: docker images | awk 'NR>1 {print $3}'
高级变量选项
Navi支持丰富的变量配置选项,通过---分隔符添加:
# 提取特定列数据
docker rmi <image_id>
$ image_id: docker images --- --column 3 --header-lines 1 --delimiter '\s\s+'
完整参数支持表
| 参数 | 功能描述 | 示例 |
|---|---|---|
--column <n> | 提取第n列数据 | --column 2 |
--header-lines <n> | 跳过前n行标题 | --header-lines 1 |
--delimiter <regex> | 自定义列分隔符 | --delimiter ';' |
--multi | 允许多选 | --multi |
--map <code> | 映射处理值 | --map "echo \$1 | tr 'a-z' 'A-Z'" |
--preview <code> | 预览功能 | --preview 'cat {}' |
变量依赖和关联
隐式依赖
变量可以引用其他变量,构建复杂的值生成逻辑:
# 构建完整路径
echo "<wallpaper_folder>"
$ pictures_folder: echo "/my/pictures"
$ wallpaper_folder: echo "<pictures_folder>/wallpapers"
显式依赖
使用$变量名语法建立显式依赖关系:
# 动态生成关联选项
echo <x> <y>
$ x: echo "hello hi" | tr ' ' '\n'
$ y: echo "$x foo;$x bar" | tr ';' '\n'
多行命令和代码片段
基础多行命令
使用反斜杠续行符编写复杂命令:
% system, monitoring
# 显示系统负载信息
echo "系统负载:"
uptime | awk '{print $8,$9,$10,$11,$12}'
df -h | grep -E '(/|boot)' \
| awk '{print $1": "$3"/"$2" ("$5")"}'
Markdown代码块格式
使用三重反引号定义代码块,提高可读性:
% git, advanced
# 复杂的Git操作流程
```bash
git fetch --all --prune
git checkout <branch>
git reset --hard origin/<branch>
git clean -fd
```
$ branch: git branch -r | grep -v '\->' | sed 's/origin\///'
扩展功能和代码复用
使用@标签扩展上下文
通过@标签复用其他cheat的变量定义:
% base-config, common
$ config_path: echo "~/.config/myapp"
$ log_path: echo "/var/log/myapp"
% main-config
@ base-config, common
# 主配置文件路径
echo "<config_path>/main.conf"
% log-config
@ base-config, common
# 日志配置文件路径
echo "<config_path>/logging.conf"
多参数变量处理
变量可以返回多个参数,用于复杂命令:
# 批量处理JSON文件
cat <json_files>
$ json_files: find . -name '*.json' -type f --- --multi --expand
实战案例解析
案例1:Docker容器管理
% docker, container
# 停止所有运行中的容器
docker stop <running_containers>
# 删除所有已停止的容器
docker rm <stopped_containers>
$ running_containers: docker ps -q --- --multi
$ stopped_containers: docker ps -a -q -f status=exited --- --multi
案例2:系统监控仪表板
% system, dashboard, monitoring
# 系统状态仪表板
echo "=== 系统监控 ==="
echo "CPU使用率: $(top -bn1 | grep "Cpu(s)" | awk '{print $2}')%"
echo "内存使用: $(free -h | awk '/Mem:/ {print $3"/"$2}')"
echo "磁盘空间:"
df -h | grep -E '(/|boot)' | awk '{print $1"\t"$3"/"$2" ("$5")"}'
# 进程监控
echo "=== 进程监控 ==="
ps aux --sort=-%cpu | head -5 | awk '{print $11, $3"% CPU", $4"% MEM"}'
案例3:Git工作流自动化
% git, workflow, automation
# 功能分支开发工作流
git checkout -b <feature_branch>
git add .
git commit -m "<commit_message>"
git push -u origin <feature_branch>
# 创建Pull Request
echo "创建PR: https://github.com/<repo>/compare/main...<feature_branch>"
$ feature_branch: echo "feature/$(date +%Y%m%d)-$(whoami)-update"
$ commit_message: echo "更新功能: 修复了相关问题"
$ repo: git remote get-url origin | sed 's/.*github.com[:/]\(.*\)\.git/\1/'
最佳实践和技巧
组织结构建议
性能优化技巧
- 缓存频繁使用的命令:对于执行较慢的命令,考虑使用缓存机制
- 限制返回结果数量:使用
head或limit减少建议项数量 - 预处理数据:在变量命令中进行数据清洗和格式化
错误处理策略
% error-handling, robust
# 带错误处理的命令执行
if command -v <tool> >/dev/null 2>&1; then
<tool> <arguments>
else
echo "错误: <tool> 未安装" >&2
exit 1
fi
$ tool: echo -e "docker\npodman\nnerdctl" --- --prevent-extra
$ arguments: echo "run --rm -it alpine"
总结
Navi的速查表语法设计既强大又灵活,通过合理的结构设计和变量系统,可以创建出高度交互式的命令行工具。关键要点:
- 🎯 标签系统:使用
%定义清晰的命令分类 - 🎯 变量智能提示:通过
$行提供动态建议值 - 🎯 依赖管理:支持变量间的隐式和显式依赖
- 🎯 扩展复用:使用
@标签实现代码复用 - 🎯 多行支持:支持复杂命令和代码片段
掌握这些语法特性后,你将能够创建出真正智能的命令行速查表,大幅提升工作效率,告别命令行记忆负担。
下一步行动:开始创建你的第一个.cheat文件,从简单的系统命令开始,逐步构建个性化的命令行知识库!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



