跳转到内容

cnb-rs alias

cnb-rs alias <subcommand>

用户自定义命令别名,让重复操作大幅缩短。对齐 gh alias 全集 4 子命令 + 5 个高级特性

Alias 存储在 ~/.cnb/config.toml[aliases] 段,跨 shell 持久化。

可用命令

高级特性

#特性示例
1位置 placeholderset epicsBy 'issue list --author="$1" --label=epic'cnb-rs epicsBy vilmibm 替换 $1
2shell 模式set --shell ll 'ls -la' 或 expansion 以 ! 开头 → 走 sh -c(Windows cmd /C
3stdin 读 expansionset 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 aliascnb-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.rscompletion::handle_invocation 之后、Cli::parse 之前调 expand_alias

  1. 检查 args[0] 是否在 [aliases]
  2. 找到 → expansion ! 开头走 shell 模式(sh -c / cmd /C),否则 split + 替换 $N placeholder + append extras
  3. 未找到 → 原 args 走 clap parse

含 placeholder 时 extras 不再 append(placeholder 已经消化);不含时 extras 自动追加到末尾。

另请参阅

Released under the MIT License.