Tính năng
Lệnh tắt
Trang này được dịch máy từ tiếng Anh. Mọi góp ý chỉnh sửa đều được hoan nghênh. Sửa trang này trên GitHub
Lệnh tắt là một lệnh do bạn tự đặt tên, dùng để khởi động Claude Code bằng một tài khoản: ccwork --resume làm đúng những gì ccam work --resume làm. Nó là một liên kết đến ccam trong ~/.local/bin, nên nó hoạt động trong bash, zsh, script và mọi thứ khác chạy chương trình từ PATH. Lệnh tắt là tùy chọn; hãy tạo cho các tài khoản bạn hay khởi động.
Cách dùng
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 xác nhận từng thay đổi:
$ 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`)Mỗi tài khoản có tối đa một lệnh tắt, được lưu dưới dạng shortcut trong ~/.config/ccam/config.toml. Trình hướng dẫn ccam add hỏi Create a shortcut command for <name>? [y/N] rồi Shortcut name [cc<name>]:. Ngoài trình hướng dẫn, ccam add chỉ tạo lệnh tắt khi có --shortcut. ccam list hiển thị lệnh tắt của từng tài khoản, hoặc -.
Lệnh tắt chuyển mọi đối số cho Claude Code, giống như ccam <name> làm với các đối số sau tên. Điều đó bao gồm cả --dry-run và --help: để xem trước một lần khởi động, hãy dùng ccam --dry-run work.
Tùy chọn
| Tùy chọn | Tác dụng | Mặc định |
|---|---|---|
--remove |
Xóa lệnh tắt của tài khoản cùng liên kết của nó | tắt |
-h, --help |
Trợ giúp cho lệnh | |
--dry-run |
ccam shortcut hỗ trợ nó: kiểm tra tên và in ra Would set the shortcut of work to ccwork. hoặc Would remove ccwork, the shortcut of work. mà không lưu hay tạo liên kết |
tắt |
ccam shims install không nhận đối số và từ chối --dry-run với ccam: --dry-run is not supported by `ccam shims install`; nothing was changed.
Quy tắc đặt tên, được kiểm tra theo thứ tự sau:
- từ 1 đến 64 ký tự gồm
a-z,0-9,.,-và_, bắt đầu bằng một chữ cái hoặc chữ số; - không phải
ccam,claudehay một lệnh của ccam nhưrunhoặcusage; - không phải lệnh tắt của tài khoản khác;
- không phải một tệp trong
~/.local/binmà chưa phải là liên kết đến ccam; - không phải tên của một chương trình khác trong
PATHcủa bạn.
Đưa cả tên lệnh lẫn --remove cùng lúc sẽ dừng với give a command or --remove, not both. Đặt đúng tên mà tài khoản đã có sẽ in ra work: ccwork (unchanged) và tạo lại liên kết nếu nó bị thiếu.
Cách hoạt động
Việc đặt tên chạy checkShortcut, hàm này gọi shim.Check với thư mục bin và đường dẫn thật của tệp thực thi ccam:
Tên đi lần lượt qua các bước kiểm tra. Bên cạnh mỗi bước là một tên bị từ chối ở đó: Work không khớp mẫu, run là một lệnh của ccam, ccside thuộc về tài khoản khác, ccfile là một tệp đã có trong ~/.local/bin, và git sẽ che mất /usr/bin/git. Chỉ tên vượt qua mọi bước kiểm tra mới được lưu và liên kết.
shim.Checkso khớp tên với^[a-z0-9][a-z0-9._-]{0,63}$, rồi vớiconfig.Reserved, rồi vớicfg.FindShortcut. Nó gọios.Lstattrên~/.local/bin/<name>, và với mọi thư mục khác trongPATH, nó gọios.Statvà từ chối một tệp thực thi không phải là liên kết đến ccam.- ccam lưu
config.tomlbằngfsutil.AtomicWrite(tệp tạm,fsync, đổi tên). shim.Removexóa liên kết của lệnh tắt cũ, nhưng chỉ khi đó là liên kết đến ccam.shim.Installtạo liên kết cho mọi lệnh tắt đã cấu hình mà còn thiếu, bằngos.Symlinktới tệp thực thi ccam, được xác định bằngos.Executablevàfilepath.EvalSymlinks. Nó không bao giờ xóa thứ gì.
Một liên kết được coi là của ccam khi os.Readlink trả về đường dẫn ccam, hoặc khi liên kết và đường dẫn ccam trỏ tới cùng một tệp. Mọi thao tác xóa và mọi kiểm tra ghi đè đều đi qua phép thử này, nên ccam không động đến các tệp nó không tạo ra.
Khi bạn chạy một lệnh tắt, tên bạn gõ là thứ duy nhất ccam cần:
Shell tìm thấy ccwork trong PATH, nhân hệ điều hành đi theo liên kết và khởi động tệp thực thi ccam, và argv[0] vẫn là ccwork. Trong app.Main, mọi tên khác ccam đều tải config.toml một lần và gọi shim.Lookup, hàm này tìm tài khoản có shortcut bằng filepath.Base(argv[0]). Sau đó launcher.LaunchWith đi qua cùng các bước như ccam <name> với cấu hình đã được tải, và chuyển nguyên vẹn argv[1:] cho claude.
Vì sao dùng liên kết tượng trưng mà không dùng alias của shell hay script bao bọc: liên kết tượng trưng hoạt động trong mọi shell và trong script, không phải khởi động thêm một shell (khoảng 1 đến 2 ms), và lần khởi động vẫn chỉ đọc một tệp. scripts/perf-check.sh đo một lệnh tắt bằng hyperfine với cùng giới hạn 10 ms (p95) như ccam <name>.
An toàn và các trường hợp đặc biệt
- Liên kết không thuộc tài khoản nào. Nếu một liên kết đến ccam trong
~/.local/bincó tên mà không tài khoản nào dùng, chẳng hạn sau khi bạn sửashortcuttrongconfig.tomlbằng tay, ccam không quay về tài khoản mặc định. Nó dừng vớiccam: ccold is not the shortcut of any account (see `ccam list`, `ccam shortcut`). Hãy đặt lại tên bằngccam shortcut, hoặc xóa liên kết. - Tệp đã có. ccam không bao giờ thay thế một tệp nó không tạo ra.
ccam shims installdừng với<path> already exists and is not a ccam link, so it was left alone. - Tệp thực thi ccam bị di chuyển. Khi đó các liên kết cũ trỏ tới một đường dẫn không còn tồn tại, và ccam không coi chúng là của mình. Hãy xóa chúng, rồi chạy
ccam shims install. - Đổi tên và xóa.
ccam renamegiữ nguyên tên lệnh tắt, và liên kết vẫn hoạt động, vì nó trỏ tới ccam và ccam tra tên trongconfig.toml.ccam removexóa liên kết của tài khoản.ccam shortcut <account> <new>xóa liên kết cũ trước khi tạo liên kết mới. - PATH. Khi ccam tạo một liên kết mà
~/.local/binkhông nằm trongPATHcủa bạn, nó in raNote: /home/me/.local/bin is not in PATH. Add it to ~/.bashrc or ~/.zshrc:theo sau là dòngexport PATH=...cần thêm. - Kiểm tra về sau.
ccam doctorbáomissing shortcuts in /home/me/.local/bin: ccworkvà cảnh báo khi thư mục không nằm trongPATH.ccam doctor --fixtạo các liên kết còn thiếu.