ฟีเจอร์
คำสั่งลัด
หน้านี้แปลด้วยเครื่องจากภาษาอังกฤษ ยินดีรับการแก้ไข แก้ไขหน้านี้บน 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แล้ว rename) shim.Removeลบลิงก์ของคำสั่งลัดเดิม แต่เฉพาะเมื่อเป็นลิงก์ไปยัง ccamshim.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 โดยไม่เปลี่ยนแปลง
ทำไมจึงใช้ลิงก์สัญลักษณ์แทน alias ของเชลล์หรือสคริปต์ครอบ: ลิงก์สัญลักษณ์ใช้ได้ในทุกเชลล์และในสคริปต์ ไม่ต้องเริ่มเชลล์เพิ่ม (ประมาณ 1 ถึง 2 ms) และการเริ่มยังคงอ่านเพียงไฟล์เดียว scripts/perf-check.sh วัดคำสั่งลัดด้วย hyperfine เทียบกับขีดจำกัด 10 ms (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.tomlccam 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จะสร้างลิงก์ที่หายไป