Возможности
Короткие команды
Эта страница переведена с английского машинным способом. Исправления приветствуются. Редактировать эту страницу на GitHub
Короткая команда представляет собой команду с выбранным вами именем, которая запускает Claude Code от имени одного аккаунта: ccwork --resume делает то же, что и ccam work --resume. Это ссылка на ccam в ~/.local/bin, поэтому она работает в 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 не принимает аргументов и отклоняет --dry-run с сообщением ccam: --dry-run is not supported by `ccam shims install`; nothing was changed.
Правила для имени, проверяемые в таком порядке:
- от 1 до 64 символов из
a-z,0-9,.,-и_, начинается с буквы или цифры; - не
ccam, неclaudeи не команда ccam, напримерrunилиusage; - не короткая команда другого аккаунта;
- не файл в
~/.local/bin, который ещё не является ссылкой на ccam; - не имя другой исполняемой программы в вашем
PATH.
Если указать и команду, и --remove, выполнение останавливается с сообщением give a command or --remove, not both. Если задать имя, которое у аккаунта уже есть, выводится work: ccwork (unchanged), а отсутствующая ссылка создаётся заново.
Как это работает
Задание имени запускает checkShortcut, который вызывает shim.Check с папкой bin и реальным путём к исполняемому файлу ccam:
Имя проходит проверки по порядку. Рядом с каждой проверкой показано имя, которое она отклоняет: 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. Он вызываетos.Lstatдля~/.local/bin/<name>, а для каждой другой папки вPATHвызываетos.Statи отклоняет исполняемый файл, который не является ссылкой на ccam.- ccam сохраняет
config.tomlчерезfsutil.AtomicWrite(временный файл,fsync, переименование). shim.Removeудаляет ссылку старой короткой команды, но только если это ссылка на ccam.shim.Installсоздаёт ссылку для каждой настроенной короткой команды, у которой её нет, черезos.Symlinkна исполняемый файл ccam, путь к которому определяется черезos.Executableиfilepath.EvalSymlinks. Он никогда ничего не удаляет.
Ссылка считается собственной ссылкой ccam, если os.Readlink возвращает путь к ccam или если ссылка и путь к ccam указывают на один и тот же файл. Каждое удаление и каждая проверка перед перезаписью проходят через эту проверку, поэтому ccam не трогает файлы, которые создал не он.
Когда вы запускаете короткую команду, ccam нужно только набранное вами имя:
Оболочка находит ccwork в PATH, ядро следует по ссылке и запускает исполняемый файл ccam, а argv[0] по-прежнему равен ccwork. В app.Main любое имя, кроме ccam, один раз загружает config.toml и вызывает shim.Lookup, который находит аккаунт, у которого shortcut равен filepath.Base(argv[0]). Затем launcher.LaunchWith выполняет те же шаги, что и ccam <name>, с уже загруженной конфигурацией и передаёт argv[1:] в claude без изменений.
Почему символическая ссылка, а не псевдоним оболочки или скрипт-обёртка: символическая ссылка работает в любой оболочке и в скриптах, не добавляет лишнего запуска оболочки (около 1–2 мс), а запуск по-прежнему читает один файл. scripts/perf-check.sh измеряет короткую команду с помощью hyperfine с тем же пределом 10 мс (p95), что и для ccam <name>.
Безопасность и особые случаи
- Ссылка, которая не принадлежит ни одному аккаунту. Если у ссылки на ccam в
~/.local/binимя, которое не использует ни один аккаунт, например после ручного измененияshortcutвconfig.toml, 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создаёт отсутствующие ссылки.