Shell 集成
BCMR 提供类似 zoxide 的 shell 集成。你可以创建带自定义前缀、后缀的别名,或完全替换原生命令。
设置
zsh 的复制和移动包装命令会设置专用 noglob 别名,让 bcmr 展开远程源路径的 *,避免 zsh 先按本地文件匹配而报错。升级后重新执行初始化即可:
eval "$(bcmr init zsh --cmd b)"
bcp mini_m2:/Users/snaix/Downloads/deecamp中期检查* ~/Downloads/
该设置不改变全局 Shell 选项和删除命令。直接调用 bcmr copy 时,源模式仍应加引号。
在 shell 配置文件中添加以下内容:
# 使用 'b' 前缀 → bcp, bmv, brm
eval "$(bcmr init zsh --cmd b)"# 使用 'b' 前缀 → bcp, bmv, brm
eval "$(bcmr init bash --cmd b)"# 使用 'b' 前缀 → bcp, bmv, brm
bcmr init fish --cmd b | source# 使用 'b' 前缀 → bcp, bmv, brm
bcmr init powershell --cmd b | Out-String | Invoke-Expression选项
| 参数 | 说明 |
|---|---|
--cmd <前缀> | 设置命令前缀(如 b 创建 bcp、bmv、brm) |
--prefix <前缀> | 显式设置前缀(覆盖 --cmd) |
--suffix <后缀> | 设置命令后缀 |
--no-cmd | 不创建命令别名 |
--path <路径> | 添加目录到 PATH |
示例
# 替换原生命令(创建 cp, mv, rm)
eval "$(bcmr init zsh --cmd '')"
# 自定义前缀(创建 testcp, testmv, testrm)
eval "$(bcmr init zsh --cmd test)"
# 前缀 + 后缀(创建 pcp+, pmv+, prm+)
eval "$(bcmr init zsh --cmd --prefix p --suffix +)"
支持的 Shell
- Bash
- Zsh
- Fish
- PowerShell
Shell 补全
BCMR 通过 bcmr completions 提供所有命令和参数的 tab 补全。
# 添加到 ~/.zshrc;需要时会自动初始化 zsh 补全系统。
eval "$(bcmr init zsh --cmd b)"
# 可选:安装生成的补全文件,供 fpath 加载。
bcmr completions zsh --install
# 只打印实际安装路径,不写入文件:
bcmr completions zsh --install --print# 添加到 ~/.bashrc
eval "$(bcmr completions bash)"
# 或生成到系统补全目录
bcmr completions bash > /etc/bash_completion.d/bcmrbcmr completions fish > ~/.config/fish/completions/bcmr.fish# 如果 profile 目录不存在则先创建,再追加
New-Item -Path (Split-Path $PROFILE) -ItemType Directory -Force | Out-Null
bcmr completions powershell >> $PROFILE
# 或仅在当前会话加载
bcmr completions powershell | Out-String | Invoke-Expressionbcmr init zsh --cmd b 会创建 bcp、bmv 和 brm,仅在需要时初始化 compinit,并加载本地及远程路径补全。可重复执行;已有的 zsh 补全设置应放在此行之前。--no-cmd 保持仅配置 PATH 的行为,不初始化补全。
--install 只写入文件,不会激活当前 shell 的补全,也不会修改配置文件。命令会打印实际安装目录,包括未设置 XDG_DATA_HOME 时的默认目录。使用文件加载时,请先将该目录加入 fpath,再执行 autoload -Uz compinit; compinit。上面的独立 init 配置已足够启用命令包装及补全。
若 compinit 提示目录不安全,请用 compaudit 检查并修正目录所有权或权限后重试。初始化保留这些安全检查;补全失败时会给出诊断,命令包装仍可使用。
设置后即可 tab 补全命令和参数:
bcmr co<TAB> → bcmr copy
bcmr copy -<TAB> → --recursive --preserve --force --verify ...
远程主机不可用时,Tab 补全默认保持安静。可直接执行隐藏的补全命令查看错误,或为 Tab 补全开启诊断:
bcmr __complete-remote '[email protected]:/path/'
export BCMR_COMPLETION_DEBUG=1
# 关闭诊断输出:
unset BCMR_COMPLETION_DEBUG