ZSHROADMAP(1) General Commands Manual ZSHROADMAP(1)

zshroadmap - آشنایی غیررسمی با کتابچه راهنمای zsh کتابچه راهنمای Zsh، همانند خود این پوسته، گسترده و اغلب پیچیده است. این بخش از کتابچه راهنما نکاتی را درباره بخش‌هایی از پوسته که احتمالاً برای کاربران تازه‌کار جالب‌توجه خواهد بود ارائه می‌دهد، و مشخص می‌کند که مستندات تفصیلی را در کجای باقی کتابچه راهنما می‌توان یافت.

هنگامی که پوسته راه‌اندازی می‌شود، دستورها را از فایل‌های گوناگونی می‌خواند. این فایل‌ها را می‌توان جهت سفارشی‌سازی پوسته ایجاد یا ویرایش کرد. بخش Startup/Shutdown Files را در zsh(1) ببینید.

اگر هیچ فایل مقداردهی اولیه شخصی برای کاربر فعلی وجود نداشته باشد، تابعی اجرا می‌شود تا به شما در تغییر برخی از متداول‌ترین تنظیمات کمک کند. در صورتی که مدیر سیستم شما ماژول zsh/newuser را غیرفعال کرده باشد، این عملکرد ظاهر نخواهد شد. این تابع به‌گونه‌ای طراحی شده است که خودتوضیح باشد. می‌توانید آن را به صورت دستی با `autoload -Uz zsh-newuser-install; zsh-newuser-install -f' اجرا کنید. همچنین بخش `User Configuration Functions' را در zshcontrib(1) ببینید.

تعامل با پوسته از طریق ویرایشگر خط فرمان توکار Zsh یا همان ZLE صورت می‌گیرد. این ویژگی با جزئیات کامل در zshzle(1) شرح داده شده است.

نخستین تصمیمی که یک کاربر باید اتخاذ کند این است که از حالت ویرایشی Emacs استفاده کند یا Vi، زیرا کلیدهای ویرایش در این دو حالت تفاوت‌های بنیادی دارند. حالت ویرایش Emacs احتمالاً برای افراد تازه‌کار طبیعی‌تر است و می‌توان آن را به‌طور صریح با دستور bindkey -e برگزید.

یک سازوکار تاریخچه برای بازیابی خطوط تایپ‌شده پیشین (به ساده‌ترین روش با کلیدهای جهت‌نمای بالا یا پایین) در دسترس است؛ توجه داشته باشید که برخلاف سایر پوسته‌ها، zsh این خطوط را در هنگام خروج پوسته ذخیره نخواهد کرد مگر آنکه متغیرهای مناسب را تنظیم کرده باشید، و تعداد خطوط تاریخچه که به‌طور پیش‌فرض نگهداری می‌شوند بسیار اندک است (۳۰ خط). توضیحات متغیرهای پوسته (که در مستندات از آنها با عنوان پارامتر یاد می‌شود) یعنی HISTFILE، HISTSIZE و SAVEHIST را در zshparam(1) ببینید. دقت داشته باشید که در حال حاضر خواندن و نوشتن فایل‌های ذخیره تاریخچه تنها هنگامی امکان‌پذیر است که پوسته در حالت تعاملی باشد؛ یعنی این قابلیت از درون اسکریپت‌ها عمل نمی‌کند.

پوسته اکنون از مجموعه نویسه‌های UTF-8 (و در صورت پشتیبانی سیستم‌عامل، از سایر مجموعه‌ها) پشتیبانی می‌کند. این مسئله (عمدتاً) به‌طور شفاف توسط پوسته مدیریت می‌شود، اما میزان پشتیبانی در شبیه‌سازهای ترمینال متفاوت است. در بخش سوالات متداول (FAQ) پوسته در نشانی https://www.zsh.org/FAQ مباحثی پیرامون این موضوع مطرح شده است. به‌ویژه در نظر داشته باشید که برای پردازش نویسه‌های ترکیبی، گزینه COMBINING_CHARS باید فعال باشد. از آنجا که پوسته اکنون نسبت به تعریف مجموعه نویسه‌ها حساس‌تر است، توجه فرمایید که چنانچه در حال ارتقا از نسخه‌های قدیمی‌تر پوسته هستید، باید اطمینان حاصل کنید که متغیر مناسب، یعنی LANG (برای اعمال اثر بر تمامی ابعاد عملکرد پوسته) یا LC_CTYPE (برای اعمال اثر صرفاً بر مدیریت مجموعه نویسه‌ها) روی مقدار مناسبی تنظیم شده باشد. این امر حتی در صورت استفاده از یک مجموعه نویسه تک‌بایتی، شامل ضمیمه‌های ASCII نظیر ISO-8859-1 یا ISO-8859-15، صادق است. توضیحات مربوط به LC_CTYPE را در zshparam(1) ببینید.

تکمیل خودکار قابلیتی است که در بسیاری از پوسته‌ها وجود دارد. این ویژگی به کاربر امکان می‌دهد تنها بخشی (معمولاً پیشوند) از یک کلمه را تایپ کرده و پوسته مابقی آن را پر کند. سامانه تکمیل در zsh قابل برنامه‌ریزی است. به عنوان مثال، پوسته می‌تواند به‌گونه‌ای تنظیم شود که نشانی‌های ایمیل در آرگومان‌های دستور mail را از روی ~/.abook/addressbook شما، نام‌های کاربری، نام‌های میزبان و حتی مسیرهای راه دور را در آرگومان‌های دستور scp، و غیره تکمیل کند. هر آنچه را که بتوان در zsh نوشت یا با آن پیوند داد، می‌تواند منبع ورودی پیشنهادهایی باشد که ویرایشگر خط فرمان به عنوان تکمیل‌های احتمالی عرضه می‌دارد.

پوسته Zsh مجهز به دو سامانه تکمیل است: یک سامانه قدیمی موسوم به تکمیل compctl (نام‌گذاری‌شده بر اساس دستور توکاری که به عنوان رابط کاربری یگانه و کامل آن عمل می‌کند)، و سامانه جدیدی با نام compsys که به صورت کتابخانه‌ای از توابع توکار و تعریف‌شده توسط کاربر ساماندهی شده است. این دو سامانه در واسط خود برای تعیین رفتار تکمیل با یکدیگر تفاوت دارند. سامانه جدید انعطاف‌پذیری و قابلیت سفارشی‌سازی بیشتری دارد و همراه با تعاریف تکمیل برای بسیاری از دستورهای پرکاربرد ارائه می‌شود؛ از این رو استفاده از آن اولویت دارد.

سامانه تکمیل باید هنگام شروع به کار پوسته به‌طور صریح فعال گردد. جهت کسب اطلاعات بیشتر به zshcompsys(1) مراجعه کنید.

گذشته از قابلیت تکمیل، ویرایشگر خط فرمان به وسیله توابع پوسته تا حد زیادی قابل توسعه است. برخی توابع سودمند همراه با خود پوسته عرضه شده‌اند؛ این توابع امکاناتی نظیر موارد زیر را مهیا می‌سازند:

insert-composed-char
ترکیب و نوشتن نویسه‌هایی که روی صفحه‌کلید موجود نیستند
پیکربندی آنچه ویرایشگر خط فرمان هنگام جابه‌جایی یا حذف کلمه‌به‌کلمه، به عنوان یک کلمه تلقی می‌کند
روش‌های جایگزین جهت جستجو در تاریخچه پوسته
توابعی برای جایگزینی سراسری رشته‌ها یا الگوها در خط فرمان
ویرایش خط فرمان با استفاده از یک ویرایشگر خارجی.

برای توضیحات مربوط به این توابع، بخش `ZLE Functions' را در zshcontrib(1) ببینید.

پوسته دارای گزینه‌های بی‌شماری جهت تغییر دادن رفتار خود است. این گزینه‌ها تمامی جنبه‌های پوسته را در بر می‌گیرند؛ بررسی و مطالعه کامل مستندات، تنها راهکار مطلوب جهت آشنایی با امکانات متعدد آن است. به zshoptions(1) مراجعه کنید.

پوسته از مجموعه توانمندی از الگوها برخوردار است که برای تطبیق فایل (که در مستندات با نام «تولید نام فایل» یا `filename generation' توصیف شده و بنا به علل تاریخی تحت عنوان `globbing' نیز شناخته می‌شود) و همچنین کاربرد در هنگام برنامه‌نویسی قابل استفاده هستند. این موارد در بخش `Filename Generation' در zshexpn(1) تشریح شده‌اند.

الگوهای زیر که معمولاً در سایر سامانه‌های تطبیق الگو پشتیبانی نمی‌شوند، از جذابیت ویژه‌ای برخوردارند:

**
برای تطبیق پیمایشی در چندین دایرکتوری
|
جهت تطبیق با یکی از دو حالت جایگزین
~، ^
قابلیت استثنا کردن الگوها از فرایند تطبیق هنگامی که گزینه EXTENDED_GLOB فعال باشد
(...)
توصیف‌کننده‌های glob، محصور در پرانتز در انتهای الگو، که فایل‌ها را بر اساس نوع (مانند دایرکتوری‌ها) یا صفت (مانند اندازه) تفکیک و انتخاب می‌کنند.

اگرچه نحو دستوری zsh از جهاتی با پوسته Korn و در نتیجه تا حدودی با پوسته اصلی یونیکس یعنی پوسته Bourne شباهت دارد، با این حال رفتار پیش‌فرض آن به‌طور کامل با این پوسته‌ها منطبق نیست. قواعد دستوری عمومی پوسته در بخش `Shell Grammar' در zshmisc(1) معرفی شده است.

یکی از تفاوت‌های معمول این است که متغیرهای جایگزین‌شده در خط فرمان، به کلمات مجزا شکسته نمی‌شوند. توضیحات مربوط به گزینه پوسته SH_WORD_SPLIT را در بخش `Parameter Expansion' در zshexpn(1) مشاهده کنید. در zsh، می‌توانید صراحتاً شکستن کلمات را درخواست کنید (برای مثال با استفاده از ${=foo}) یا هرگاه بخواهید متغیری به بیش از یک کلمه بسط داده شود از یک آرایه بهره بگیرید. بخش `Array Parameters' را در zshparam(1) مطالعه فرمایید.

ساده‌ترین شیوه برای افزودن قابلیت‌های شخصی‌سازی به پوسته، معمولاً نوشتن یک تابع پوسته و تنظیم آن جهت بارگذاری خودکار (autoload) است. توابع در بخش `Functions' در zshmisc(1) تشریح گشته‌اند. کاربرانی که از پوسته C و شاخه‌های آن به zsh روی می‌آورند باید به این نکته دقت کنند که نام‌های مستعار (alias) در zsh کاربرد کمتری دارند، زیرا آنها توانایی جایگزینی آرگومان را نداشته و صرفاً یک جایگزینی متنی ساده انجام می‌دهند.

علاوه بر موارد مربوط به ویرایشگر خط فرمان که در بالا ذکر شد، چند تابع عمومی دیگر نیز همراه با پوسته ارائه شده و در zshcontrib(1) تشریح شده‌اند. این امکانات شامل موارد زیر است:

promptinit
سامانه مدیریت تم اعلان برای تغییر آسان قالب اعلان‌های متنی، بخش `Prompt Themes' را ببینید
سامانه مدیریت MIME که دستورها را بسته به پسوند فایل اجرا می‌کند، دقیقاً مانند رویکردی که در نرم‌افزارهای مدیریت فایل گرافیکی رایج است
یک ابزار ماشین‌حساب خط فرمان
نگارشی از دستور xargs که اجرای دستور find را بی‌نیاز می‌سازد
دستوری کارآمد جهت تغییر نام گروهی فایل‌ها به کمک الگوهای پوسته.
July 12, 2026 zsh 5.9.2