功能
快捷指令
本頁由英文機器翻譯而成,歡迎提供修正。 在 GitHub 上編輯此頁
快捷指令是你自己命名、用來以某個帳號啟動 Claude Code 的指令:ccwork --resume 的效果和 ccam work --resume 相同。它是 ~/.local/bin 中指向 ccam 的連結,所以在 bash、zsh、腳本以及任何從 PATH 執行程式的地方都能使用。快捷指令是選用的;請為你常啟動的帳號建立一個。
用法
ccam shortcut work ccwork # create the shortcut ccwork for work
ccam shortcut 2 ccside # the account with number 2
ccam shortcut work # show it
ccam shortcut work ccw # rename it; the old link is removed
ccam shortcut work --remove # delete it
ccam add side --shortcut ccside
ccam shims install # recreate missing links of all accounts
ccwork -p "summarise" --output-format jsonccam 會確認每項變更:
$ ccam shortcut work ccwork
✓ shortcut for work: ccwork
$ ccam shortcut work ccw
✓ shortcut for work: ccw (was ccwork)
$ ccam shortcut work --remove
✓ ccw removed; work has no shortcut now
$ ccam shortcut work
work: none (add one with `ccam shortcut work ccwork`)一個帳號最多只有一個快捷指令,以 shortcut 儲存在 ~/.config/ccam/config.toml 中。ccam add 設定精靈會詢問 Create a shortcut command for <name>? [y/N],接著詢問 Shortcut name [cc<name>]:。在設定精靈之外,ccam add 只有加上 --shortcut 時才會建立快捷指令。ccam list 會顯示每個帳號的快捷指令,沒有時顯示 -。
快捷指令會把所有參數傳給 Claude Code,方式和 ccam <name> 處理名稱後面的參數相同。這也包括 --dry-run 和 --help:若要預覽啟動,請使用 ccam --dry-run work。
選項
| 選項 | 作用 | 預設值 |
|---|---|---|
--remove |
刪除帳號的快捷指令及其連結 | 關閉 |
-h、--help |
指令的說明 | |
--dry-run |
ccam shortcut 支援它:會檢查名稱並印出 Would set the shortcut of work to ccwork. 或 Would remove ccwork, the shortcut of work.,但不儲存也不建立連結 |
關閉 |
ccam shims install 不接受參數,並會以 ccam: --dry-run is not supported by `ccam shims install`; nothing was changed 拒絕 --dry-run。
名稱規則,依以下順序檢查:
- 1 到 64 個字元,可使用
a-z、0-9、.、-和_,並以字母或數字開頭; - 不能是
ccam、claude,或run、usage這類 ccam 指令; - 不能是其他帳號的快捷指令;
- 不能是
~/.local/bin中尚未連結到 ccam 的檔案; - 不能和你
PATH上的其他執行檔同名。
同時指定指令和 --remove 會以 give a command or --remove, not both 停止。設定帳號已有的名稱時,會印出 work: ccwork (unchanged),並在連結不存在時重新建立。
運作方式
設定名稱時會執行 checkShortcut,它以 bin 資料夾和 ccam 執行檔的實際路徑呼叫 shim.Check:
名稱會依序通過各項檢查。每項檢查旁邊都有一個會被它拒絕的名稱:Work 不符合格式,run 是 ccam 指令,ccside 屬於另一個帳號,ccfile 是 ~/.local/bin 中已存在的檔案,git 則會遮蔽 /usr/bin/git。只有通過所有檢查的名稱才會被儲存並建立連結。
shim.Check先把名稱和^[a-z0-9][a-z0-9._-]{0,63}$比對,再比對config.Reserved,然後是cfg.FindShortcut。它對~/.local/bin/<name>呼叫os.Lstat,並對PATH上的其他每個資料夾呼叫os.Stat,拒絕不是指向 ccam 連結的執行檔。- ccam 以
fsutil.AtomicWrite(暫存檔、fsync、rename)儲存config.toml。 shim.Remove刪除舊快捷指令的連結,但只在它是指向 ccam 的連結時才刪除。shim.Install為每個已設定但缺少連結的快捷指令建立連結,以os.Symlink指向 ccam 執行檔;執行檔路徑以os.Executable和filepath.EvalSymlinks解析。它絕不移除任何東西。
當 os.Readlink 傳回 ccam 的路徑,或連結和 ccam 路徑解析到同一個檔案時,這個連結就算是 ccam 自己的。每次移除和每次覆寫檢查都會經過這項測試,所以 ccam 不會碰它沒有建立的檔案。
執行快捷指令時,ccam 唯一需要的就是你輸入的名稱:
shell 在 PATH 上找到 ccwork,核心跟隨連結啟動 ccam 執行檔,而 argv[0] 仍然是 ccwork。在 app.Main 中,ccam 以外的任何名稱都會載入一次 config.toml 並呼叫 shim.Lookup,找出 shortcut 等於 filepath.Base(argv[0]) 的帳號。接著 launcher.LaunchWith 會在設定已載入的情況下執行和 ccam <name> 相同的步驟,並把 argv[1:] 原封不動地傳給 claude。
為什麼用符號連結,而不是 shell 別名或包裝腳本:符號連結在每種 shell 和腳本中都能運作,不會多啟動一次 shell(大約 1 到 2 ms),而且啟動時仍然只讀取一個檔案。scripts/perf-check.sh 會用 hyperfine 測量快捷指令,標準和 ccam <name> 一樣是 10 ms(p95)。
安全性和特殊情況
- 沒有帳號認領的連結。 如果
~/.local/bin中某個指向 ccam 的連結名稱沒有任何帳號使用(例如你手動編輯了config.toml中的shortcut之後),ccam 不會改用預設帳號,而是以ccam: ccold is not the shortcut of any account (see `ccam list`, `ccam shortcut`)停止。請用ccam shortcut重新設定名稱,或刪除該連結。 - 已存在的檔案。 ccam 絕不取代它沒有建立的檔案。
ccam shims install會以<path> already exists and is not a ccam link, so it was left alone停止。 - 移動過的 ccam 執行檔。 這時舊的連結會指向已不存在的路徑,ccam 不會把它們視為自己的連結。請刪除它們,然後執行
ccam shims install。 - 重新命名和移除。
ccam rename會保留快捷指令的名稱,連結也繼續有效,因為它指向 ccam,而 ccam 會在config.toml中查詢名稱。ccam remove會刪除帳號的連結。ccam shortcut <account> <new>會先刪除舊連結再建立新連結。 - PATH。 當 ccam 建立連結而
~/.local/bin不在你的PATH上時,它會印出Note: /home/me/.local/bin is not in PATH. Add it to ~/.bashrc or ~/.zshrc:,後面接著要加入的export PATH=...那一行。 - 事後檢查。
ccam doctor會回報missing shortcuts in /home/me/.local/bin: ccwork,並在該資料夾不在PATH上時發出警告。ccam doctor --fix會建立缺少的連結。