Funkcje
Polecenia skrótów
Ta strona została przetłumaczona maszynowo z angielskiego. Poprawki są mile widziane. Edytuj tę stronę na GitHub
Skrót to polecenie o nazwie wybranej przez ciebie, które uruchamia Claude Code jako jedno konto: ccwork --resume robi to samo co ccam work --resume. Jest to link do ccam w ~/.local/bin, więc działa w bash, zsh, skryptach i wszędzie tam, gdzie programy są uruchamiane z PATH. Skróty są opcjonalne; utwórz je dla kont, które uruchamiasz często.
Użycie
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 potwierdza każdą zmianę:
$ 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`)Konto ma najwyżej jeden skrót, zapisany jako shortcut w ~/.config/ccam/config.toml. Kreator ccam add pyta Create a shortcut command for <name>? [y/N], a potem Shortcut name [cc<name>]:. Poza kreatorem ccam add tworzy skrót tylko z --shortcut. ccam list pokazuje skrót każdego konta albo -.
Skrót przekazuje każdy argument do Claude Code, tak samo jak ccam <name> po nazwie. Dotyczy to także --dry-run i --help: aby podejrzeć uruchomienie, użyj ccam --dry-run work.
Opcje
| Opcja | Działanie | Domyślnie |
|---|---|---|
--remove |
Usuwa skrót konta i jego link | wyłączone |
-h, --help |
Pomoc dla polecenia | |
--dry-run |
ccam shortcut ją respektuje: sprawdza nazwę i wypisuje Would set the shortcut of work to ccwork. lub Would remove ccwork, the shortcut of work. bez zapisywania i linkowania |
wyłączone |
ccam shims install nie przyjmuje argumentów i odrzuca --dry-run komunikatem ccam: --dry-run is not supported by `ccam shims install`; nothing was changed.
Zasady nazw, sprawdzane w tej kolejności:
- od 1 do 64 znaków spośród
a-z,0-9,.,-i_, zaczynając od litery lub cyfry; - nie
ccam,claudeani polecenie ccam, takie jakrunczyusage; - nie skrót innego konta;
- nie plik w
~/.local/bin, który nie jest już linkiem do ccam; - nie nazwa innego pliku wykonywalnego w twoim
PATH.
Podanie polecenia razem z --remove kończy się błędem give a command or --remove, not both. Ustawienie nazwy, którą konto już ma, wypisuje work: ccwork (unchanged) i odtwarza link, jeśli go brakuje.
Jak to działa
Ustawienie nazwy uruchamia checkShortcut, które wywołuje shim.Check z folderem bin i rzeczywistą ścieżką pliku binarnego ccam:
Nazwa przechodzi kolejno przez sprawdzenia. Obok każdego sprawdzenia jest nazwa, którą ono odrzuca: Work nie pasuje do wzorca, run jest poleceniem ccam, ccside należy do innego konta, ccfile to istniejący plik w ~/.local/bin, a git przesłoniłby /usr/bin/git. Zapisywana i linkowana jest tylko nazwa, która przejdzie wszystkie sprawdzenia.
shim.Checkdopasowuje nazwę do^[a-z0-9][a-z0-9._-]{0,63}$, potem doconfig.Reserved, potem docfg.FindShortcut. Wywołujeos.Lstatna~/.local/bin/<name>, a dla każdego innego folderu zPATHwywołujeos.Stati odrzuca plik wykonywalny, który nie jest linkiem do ccam.- ccam zapisuje
config.tomlprzezfsutil.AtomicWrite(plik tymczasowy,fsync, zmiana nazwy). shim.Removeusuwa link starego skrótu, ale tylko jeśli jest linkiem do ccam.shim.Installtworzy brakujący link każdego skonfigurowanego skrótu przezos.Symlinkdo pliku binarnego ccam, odnalezionego przezos.Executableifilepath.EvalSymlinks. Nigdy niczego nie usuwa.
Link uznaje się za należący do ccam, gdy os.Readlink zwraca ścieżkę ccam albo gdy link i ścieżka ccam prowadzą do tego samego pliku. Każde usunięcie i każde sprawdzenie przed nadpisaniem przechodzi przez ten test, więc ccam nie rusza plików, których nie utworzył.
Gdy uruchamiasz skrót, wpisana nazwa to jedyne, czego ccam potrzebuje:
Powłoka znajduje ccwork w PATH, jądro podąża za linkiem i uruchamia plik binarny ccam, a argv[0] nadal ma wartość ccwork. W app.Main każda nazwa inna niż ccam raz wczytuje config.toml i wywołuje shim.Lookup, które znajduje konto, którego shortcut jest równy filepath.Base(argv[0]). launcher.LaunchWith wykonuje następnie te same kroki co ccam <name> z już wczytaną konfiguracją i przekazuje argv[1:] do claude bez zmian.
Dlaczego dowiązanie symboliczne, a nie alias powłoki czy skrypt opakowujący: dowiązanie działa w każdej powłoce i w skryptach, nie dodaje uruchomienia kolejnej powłoki (około 1 do 2 ms), a uruchomienie nadal odczytuje jeden plik. scripts/perf-check.sh mierzy skrót za pomocą hyperfine względem tego samego limitu 10 ms (p95) co ccam <name>.
Bezpieczeństwo i przypadki brzegowe
- Link, do którego nie przyznaje się żadne konto. Jeśli link do ccam w
~/.local/binma nazwę, której nie używa żadne konto, na przykład po ręcznej edycjishortcutwconfig.toml, ccam nie przechodzi na domyślne konto. Zatrzymuje się z komunikatemccam: ccold is not the shortcut of any account (see `ccam list`, `ccam shortcut`). Ustaw nazwę ponownie przezccam shortcutalbo usuń link. - Istniejące pliki. ccam nigdy nie zastępuje pliku, którego nie utworzył.
ccam shims installzatrzymuje się z komunikatem<path> already exists and is not a ccam link, so it was left alone. - Przeniesiony plik binarny ccam. Stare linki wskazują wtedy ścieżkę, która już nie istnieje, i ccam nie uznaje ich za swoje. Usuń je, a potem uruchom
ccam shims install. - Zmiana nazwy i usuwanie.
ccam renamezachowuje nazwę skrótu, a link dalej działa, bo wskazuje na ccam, a ccam szuka nazwy wconfig.toml.ccam removeusuwa link konta.ccam shortcut <account> <new>usuwa stary link, zanim utworzy nowy. - PATH. Gdy ccam tworzy link, a
~/.local/binnie ma w twoimPATH, wypisujeNote: /home/me/.local/bin is not in PATH. Add it to ~/.bashrc or ~/.zshrc:, a po tym wierszexport PATH=...do dodania. - Późniejsze sprawdzenie.
ccam doctorzgłaszamissing shortcuts in /home/me/.local/bin: ccworki ostrzega, gdy folderu nie ma wPATH.ccam doctor --fixtworzy brakujące linki.