bcmr v0.7.1
docs / 指南 / Shell 整合

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)"

選項

參數說明
--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

bcmr 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