خصوصیات
شارٹ کٹ کمانڈز
اس صفحے کا انگریزی سے مشینی ترجمہ کیا گیا ہے۔ اصلاحات کا خیرمقدم ہے۔ اس صفحے میں GitHub پر ترمیم کریں
شارٹ کٹ ایک کمانڈ ہے جس کا نام آپ خود رکھتے ہیں اور جو ایک اکاؤنٹ کے طور پر Claude Code شروع کرتی ہے: ccwork --resume وہی کرتا ہے جو ccam work --resume کرتا ہے۔ یہ ~/.local/bin میں ccam کا ایک لنک ہے، اس لیے یہ 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`)ایک اکاؤنٹ کا زیادہ سے زیادہ ایک شارٹ کٹ ہوتا ہے، جو ~/.config/ccam/config.toml میں shortcut کے طور پر محفوظ ہوتا ہے۔ 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 کے ساتھ مسترد کرتا ہے۔
نام کے اصول، جو اسی ترتیب سے جانچے جاتے ہیں:
a-z،0-9،.،-اور_کے 1 سے 64 حروف، جو کسی حرف یا ہندسے سے شروع ہوں؛ccam،claudeیا کوئی ccam کمانڈ جیسےrunیاusageنہیں؛- کسی دوسرے اکاؤنٹ کا شارٹ کٹ نہیں؛
~/.local/binمیں کوئی ایسی فائل نہیں جو پہلے سے ccam کا لنک نہ ہو؛- آپ کے
PATHپر کسی دوسرے قابلِ عمل پروگرام کا نام نہیں۔
کمانڈ اور --remove ایک ساتھ دینے پر give a command or --remove, not both کے ساتھ عمل رک جاتا ہے۔ وہی نام دوبارہ دینے پر جو اکاؤنٹ کا پہلے سے ہے، work: ccwork (unchanged) پرنٹ ہوتا ہے اور لنک غائب ہو تو دوبارہ بن جاتا ہے۔
یہ کیسے کام کرتا ہے
نام مقرر کرنے پر checkShortcut چلتا ہے، جو bin فولڈر اور ccam بائنری کے اصل راستے کے ساتھ shim.Check کو کال کرتا ہے:
نام ترتیب سے ہر جانچ سے گزرتا ہے۔ ہر جانچ کے ساتھ ایک ایسا نام ہے جسے وہ مسترد کرتی ہے: 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سے ملاتا ہے۔ یہ~/.local/bin/<name>پرos.Lstatکال کرتا ہے، اورPATHکے ہر دوسرے فولڈر کے لیےos.Statکال کر کے ایسی قابلِ عمل فائل کو مسترد کرتا ہے جو ccam کا لنک نہ ہو۔- ccam،
config.tomlکوfsutil.AtomicWriteسے محفوظ کرتا ہے (عارضی فائل،fsync، rename)۔ shim.Removeپرانے شارٹ کٹ کا لنک حذف کرتا ہے، لیکن صرف تب جب وہ ccam کا لنک ہو۔shim.Installہر مقرر شدہ شارٹ کٹ کا غائب لنک بناتا ہے، ccam بائنری کی طرفos.Symlinkکے ساتھ، جس کا راستہos.Executableاورfilepath.EvalSymlinksسے حل کیا جاتا ہے۔ یہ کبھی کچھ نہیں ہٹاتا۔
لنک تب ccam کا اپنا شمار ہوتا ہے جب os.Readlink، ccam کا راستہ لوٹائے، یا جب لنک اور ccam کا راستہ ایک ہی فائل تک پہنچیں۔ ہر حذف اور ہر اوور رائٹ کی جانچ اسی ٹیسٹ سے گزرتی ہے، اس لیے ccam ان فائلوں کو نہیں چھیڑتا جو اس نے نہیں بنائیں۔
جب آپ شارٹ کٹ چلاتے ہیں تو ccam کو صرف وہ نام چاہیے جو آپ نے ٹائپ کیا:
شیل PATH پر ccwork تلاش کرتا ہے، کرنل لنک کے پیچھے جا کر ccam بائنری شروع کرتا ہے، اور argv[0] اب بھی ccwork ہوتا ہے۔ app.Main میں، ccam کے سوا کوئی بھی نام config.toml ایک بار لوڈ کرتا ہے اور shim.Lookup کو کال کرتا ہے، جو وہ اکاؤنٹ تلاش کرتا ہے جس کا shortcut، filepath.Base(argv[0]) کے برابر ہو۔ پھر launcher.LaunchWith پہلے سے لوڈ شدہ کنفیگ کے ساتھ وہی مراحل اٹھاتا ہے جو ccam <name>، اور argv[1:] کو بغیر چھیڑے claude کو دیتا ہے۔
شیل alias یا wrapper اسکرپٹ کے بجائے symlink کیوں: symlink ہر شیل اور اسکرپٹس میں کام کرتا ہے، کوئی اضافی شیل شروع نہیں کرتا (تقریباً 1 سے 2 ms)، اور لانچ اب بھی ایک ہی فائل پڑھتا ہے۔ scripts/perf-check.sh، hyperfine سے شارٹ کٹ کو اسی 10 ms (p95) کی حد کے مقابلے میں ناپتا ہے جو ccam <name> کی ہے۔
حفاظت اور خاص صورتیں
- ایسا لنک جو کسی اکاؤنٹ کا نہ ہو۔ اگر
~/.local/binمیں ccam کے کسی لنک کا نام کوئی اکاؤنٹ استعمال نہ کرتا ہو، مثلاً جب آپ نےconfig.tomlمیںshortcutہاتھ سے بدلا ہو، تو 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غائب لنکس بنا دیتا ہے۔