Funciones
Atajos
Esta página se tradujo automáticamente del inglés. Las correcciones son bienvenidas. Editar esta página en GitHub
Un atajo es un comando al que tú le pones nombre y que inicia Claude Code con una cuenta concreta: ccwork --resume hace lo mismo que ccam work --resume. Es un enlace a ccam en ~/.local/bin, así que funciona en bash, zsh, scripts y cualquier otra cosa que ejecute programas desde PATH. Los atajos son opcionales; crea uno para las cuentas que inicias a menudo.
Uso
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 confirma cada cambio:
$ 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`)Una cuenta tiene como máximo un atajo, guardado como shortcut en ~/.config/ccam/config.toml. El asistente de ccam add pregunta Create a shortcut command for <name>? [y/N] y luego Shortcut name [cc<name>]:. Fuera del asistente, ccam add solo crea uno con --shortcut. ccam list muestra el atajo de cada cuenta, o -.
Un atajo pasa todos los argumentos a Claude Code, igual que ccam <name> después del nombre. Eso incluye --dry-run y --help: para previsualizar un inicio, usa ccam --dry-run work.
Opciones
| Opción | Qué hace | Valor predeterminado |
|---|---|---|
--remove |
Elimina el atajo de la cuenta y su enlace | desactivada |
-h, --help |
Ayuda del comando | |
--dry-run |
ccam shortcut la respeta: comprueba el nombre e imprime Would set the shortcut of work to ccwork. o Would remove ccwork, the shortcut of work. sin guardar ni enlazar |
desactivada |
ccam shims install no acepta argumentos y rechaza --dry-run con ccam: --dry-run is not supported by `ccam shims install`; nothing was changed.
Reglas de los nombres, comprobadas en este orden:
- de 1 a 64 caracteres entre
a-z,0-9,.,-y_, empezando con una letra o un dígito; - no puede ser
ccam,claudeni un comando de ccam comorunousage; - no puede ser el atajo de otra cuenta;
- no puede ser un archivo de
~/.local/binque no sea ya un enlace a ccam; - no puede ser el nombre de otro ejecutable que esté en tu
PATH.
Indicar un comando y --remove a la vez se detiene con give a command or --remove, not both. Establecer el nombre que una cuenta ya tiene imprime work: ccwork (unchanged) y vuelve a crear su enlace si falta.
Cómo funciona
Establecer un nombre ejecuta checkShortcut, que llama a shim.Check con la carpeta bin y la ruta real del binario de ccam:
El nombre pasa por las comprobaciones en orden. Junto a cada comprobación hay un nombre que rechaza: Work no cumple el patrón, run es un comando de ccam, ccside pertenece a otra cuenta, ccfile es un archivo existente en ~/.local/bin y git ocultaría /usr/bin/git. Solo un nombre que pasa todas las comprobaciones se guarda y se enlaza.
shim.Checkcompara el nombre con^[a-z0-9][a-z0-9._-]{0,63}$, luego conconfig.Reservedy luego concfg.FindShortcut. Llama aos.Lstatsobre~/.local/bin/<name>y, para cada otra carpeta dePATH, llama aos.Staty rechaza un archivo ejecutable que no sea un enlace a ccam.- ccam guarda
config.tomlconfsutil.AtomicWrite(archivo temporal,fsync, cambio de nombre). shim.Removeelimina el enlace del atajo anterior, pero solo si es un enlace a ccam.shim.Installcrea el enlace de cada atajo configurado que falta, conos.Symlinkhacia el binario de ccam, resuelto conos.Executableyfilepath.EvalSymlinks. Nunca quita nada.
Un enlace cuenta como propio de ccam cuando os.Readlink devuelve la ruta de ccam, o cuando el enlace y la ruta de ccam se resuelven al mismo archivo. Cada eliminación y cada comprobación de sobrescritura pasa por esta prueba, así que ccam no toca archivos que no creó.
Cuando ejecutas un atajo, el nombre que escribiste es lo único que ccam necesita:
La shell encuentra ccwork en PATH, el kernel sigue el enlace e inicia el binario de ccam, y argv[0] sigue siendo ccwork. En app.Main, cualquier nombre distinto de ccam carga config.toml una vez y llama a shim.Lookup, que busca la cuenta cuyo shortcut es igual a filepath.Base(argv[0]). Después, launcher.LaunchWith sigue los mismos pasos que ccam <name> con la configuración ya cargada, y pasa argv[1:] a claude sin tocarlo.
Por qué un enlace simbólico y no un alias de shell o un script envoltorio: un enlace simbólico funciona en todas las shells y en scripts, no agrega el inicio de una shell adicional (de 1 a 2 ms aproximadamente) y el inicio sigue leyendo un solo archivo. scripts/perf-check.sh mide un atajo con hyperfine contra el mismo límite de 10 ms (p95) que ccam <name>.
Seguridad y casos límite
- Un enlace que ninguna cuenta reclama. Si un enlace a ccam en
~/.local/bintiene un nombre que ninguna cuenta usa, por ejemplo después de editarshortcuta mano enconfig.toml, ccam no recurre a la cuenta predeterminada. Se detiene conccam: ccold is not the shortcut of any account (see `ccam list`, `ccam shortcut`). Vuelve a establecer el nombre conccam shortcuto elimina el enlace. - Archivos existentes. ccam nunca reemplaza un archivo que no creó.
ccam shims installse detiene con<path> already exists and is not a ccam link, so it was left alone. - Un binario de ccam movido. En ese caso, los enlaces antiguos apuntan a una ruta que ya no existe, y ccam no los considera propios. Elimínalos y luego ejecuta
ccam shims install. - Cambiar el nombre y quitar.
ccam renameconserva el nombre del atajo, y el enlace sigue funcionando, porque apunta a ccam y ccam busca el nombre enconfig.toml.ccam removeelimina el enlace de la cuenta.ccam shortcut <account> <new>elimina el enlace anterior antes de crear el nuevo. - PATH. Cuando ccam crea un enlace y
~/.local/binno está en tuPATH, imprimeNote: /home/me/.local/bin is not in PATH. Add it to ~/.bashrc or ~/.zshrc:seguido de la líneaexport PATH=...que debes agregar. - Comprobar más tarde.
ccam doctorinformamissing shortcuts in /home/me/.local/bin: ccworky avisa cuando la carpeta no está enPATH.ccam doctor --fixcrea los enlaces que faltan.