cnb-rs alias
cnb-rs alias <subcommand>用户自定义命令别名,让重复操作大幅缩短。对齐 gh alias 全集 4 子命令 + 5 个高级特性。
Alias 存储在 ~/.cnb/config.toml 的 [aliases] 段,跨 shell 持久化。
可用命令
- cnb-rs alias list — 列出全部 alias(visible alias:
ls) - cnb-rs alias set — 创建 / 覆盖 alias
- cnb-rs alias delete — 删除单个 / 全部
- cnb-rs alias import — 从 TOML 文件或 stdin 批量导入
高级特性
| # | 特性 | 示例 |
|---|---|---|
| 1 | 位置 placeholder | set epicsBy 'issue list --author="$1" --label=epic' → cnb-rs epicsBy vilmibm 替换 $1 |
| 2 | shell 模式 | set --shell ll 'ls -la' 或 expansion 以 ! 开头 → 走 sh -c(Windows cmd /C) |
| 3 | stdin 读 expansion | set co - 从 stdin 读避免 shell quoting |
| 4 | --clobber 覆盖 | 已存在时必须显式带 --clobber,避免误覆盖 |
| 5 | 冲突检测 | NAME 与内置子命令同名(如 repo/auth)时 friendly bail |
一分钟上手
bash
# 简单别名
$ cnb-rs alias set co 'pr checkout'
✓ alias 已设置:co = "pr checkout"
$ cnb-rs co 123 # = cnb-rs pr checkout 123
# 带位置参数
$ cnb-rs alias set bug 'issue list --labels="$1"'
$ cnb-rs bug urgent # = cnb-rs issue list --labels="urgent"
# 我的 Issue
$ cnb-rs alias set mine 'issue list --assignees=@me'
$ cnb-rs mine
# shell 模式:组合管道
$ cnb-rs alias set --shell igrep 'cnb-rs issue list --labels="$1" | grep "$2"'
$ cnb-rs igrep bug critical
# 列出全部 alias
$ cnb-rs alias list
bug = "issue list --labels=\"$1\""
co = "pr checkout"
igrep = "!cnb-rs issue list --labels=\"$1\" | grep \"$2\""
mine = "issue list --assignees=@me"
共 4 个 alias
# 删除某个
$ cnb-rs alias delete bug
# 一次清空
$ cnb-rs alias delete --all与 gh 对照
| 能力 | gh alias | cnb-rs alias |
|---|---|---|
| list (alias ls) | ✓ | ✓ |
| set + placeholder | ✓ | ✓ |
| set --shell | ✓ | ✓ |
| set --clobber | ✓ | ✓ |
set 从 stdin 读 expansion (-) | ✓ | ✓ |
| delete + --all | ✓ | ✓ |
| import 文件/stdin | ✓ (YAML) | ✓ (TOML) |
| 冲突检测(与内置子命令) | ✓ | ✓ |
多词 alias name ('issue mine') | ✓ | ✗(cnb-rs 端 set 校验 NAME 不含空白) |
| 嵌套 expand(alias 调 alias) | ✗ | ✗(gh / cnb-rs 都不做) |
Expand 工作流程
cnb-rs 在 src/main.rs 的 completion::handle_invocation 之后、Cli::parse 之前调 expand_alias:
- 检查
args[0]是否在[aliases]中 - 找到 → expansion
!开头走 shell 模式(sh -c/cmd /C),否则 split + 替换$Nplaceholder + append extras - 未找到 → 原 args 走 clap parse
含 placeholder 时 extras 不再 append(placeholder 已经消化);不含时 extras 自动追加到末尾。
另请参阅
- cnb-rs config — alias 持久化的
~/.cnb/config.toml