.TH "ZSHBUILTINS" "1" "July 12, 2026" "zsh 5\&.9\&.2" .SH "نام (NAME)" zshbuiltins \- دستورهای توکار zsh .\" Yodl file: Zsh/builtins.yo .SH "دستورهای توکار شل (SHELL BUILTIN COMMANDS)" برخی دستورهای توکار شل گزینه‌هایی می‌پذیرند که در مدخل‌های مربوطه شرح داده شده‌اند؛ در فهرست زیر برای جلوگیری از سردرگمی با گزینه‌های شل که ممکن است بر رفتار دستورهای توکار نیز تأثیر بگذارند، اغلب با عنوان `\fBflags\fP\&' (پرچم‌ها) از آن‌ها یاد می‌شود\&. در این بخش مقدماتی، `\fBoption\fP\&' همواره به معنای گزینهٔ یک دستور است که برای بیشتر کاربران خط فرمان آشنا است\&. .PP معمولاً گزینه‌ها تک‌حرفی بوده و پیش از آن‌ها یک خط تیره (\fB\-\fP) می‌آید\&. گزینه‌هایی که آرگومان می‌پذیرند، آن را یا بلافاصله پس از حرف گزینه یا پس از یک فاصله سفید دریافت می‌کنند، برای نمونه `\fBprint \-C3 {1\&.\&.9}\fP\&' و `\fBprint \-C 3 {1\&.\&.9}\fP\&' معادل یکدیگرند\&. آرگومان‌های گزینه‌ها با آرگومان‌های دستور یکسان نیستند؛ مستندات مشخص می‌کند کدام به کدام است\&. گزینه‌هایی که آرگومان نمی‌گیرند را می‌توان در یک کلمه ادغام کرد، برای نمونه `\fBprint \-rca \-\- *\fP\&' و `\fBprint \-r \-c \-a \-\- *\fP' معادل یکدیگرند\&. .PP برخی دستورهای توکار شل گزینه‌هایی نیز می‌پذیرند که به‌جای `\fB\-\fP\&' با `\fB+\fP\&' آغاز می‌شوند\&. فهرست زیر مشخص می‌کند کدام دستورها از این دسته‌اند\&. .PP گزینه‌ها (به همراه آرگومان‌های خاص خود، در صورت وجود) باید پیش از هرگونه آرگومان غیرگزینه‌ای به صورت یک گروه ظاهر شوند؛ به محض یافتن نخستین آرگومان غیرگزینه‌ای، پردازش گزینه‌ها پایان می‌یابد\&. .PP به همهٔ دستورهای توکار به‌جز `\fBecho\fP\&' و پیراینده‌های پیش‌دستور (precommand modifiers)، حتی مواردی که هیچ گزینه‌ای ندارند، می‌توان آرگومان `\fB\-\fP\fB\-\fP\&' را برای خاتمه دادن به پردازش گزینه‌ها داد\&. این کار نشان می‌دهد که کلمات پس از آن آرگومان‌های غیرگزینه‌ای هستند، اما در غیر این صورت نادیده گرفته می‌شود\&. این قابلیت در مواردی مفید است که ممکن است آرگومان‌های دستور با `\fB\-\fP\&' آغاز شوند\&. بنا به دلایل تاریخی، بیشتر دستورهای توکار (از جمله `\fBecho\fP\&') یک `\fB\-\fP\&' تنها را در یک کلمهٔ مجزا نیز برای این منظور شناسایی می‌کنند؛ توجه داشته باشید که این روش استاندارد کمتری دارد و استفاده از `\fB\-\fP\fB\-\fP\&' توصیه می‌شود\&. .PP .PD 0 .TP .PD \fB\-\fP \fIsimple command\fP بخش `Precommand Modifiers\&' را در \fIzshmisc\fP(1) ببینید\&. .TP \fB\&.\fP \fIfile\fP [ \fIarg\fP \&.\&.\&. ] دستورها را از \fIfile\fP خوانده و آن‌ها را در محیط جاری شل اجرا می‌کند\&. .RS .PP اگر \fIfile\fP شامل اسلش نباشد، یا اگر \fBPATH_DIRS\fP تنظیم شده باشد، شل مؤلفه‌های \fB$path\fP را برای یافتن دایرکتوری حاوی \fIfile\fP جستجو می‌کند\&. فایل‌های موجود در دایرکتوری جاری خوانده نمی‌شوند مگر اینکه `\fB\&.\fP\&' در جایی از \fB$path\fP آمده باشد\&. اگر فایلی به نام `\fIfile\fP\fB\&.zwc\fP\&' پیدا شود که تازه‌تر از \fIfile\fP بوده و نگارش کامپایل‌شدهٔ (ایجادشده با دستور توکار \fBzcompile\fP) \fIfile\fP باشد، دستورها به‌جای \fIfile\fP از آن فایل خوانده می‌شوند\&. .PP اگر هرگونه آرگومان \fIarg\fP داده شود، آن‌ها به پارامترهای مکانی تبدیل می‌شوند؛ پس از پایان اجرای \fIfile\fP، پارامترهای مکانی پیشین بازگردانده می‌شوند\&. با این حال، اگر هیچ آرگومانی داده نشود، پارامترهای مکانی همان پارامترهای بافت فراخواننده باقی می‌مانند و هیچ بازگردانی انجام نمی‌شود\&. .PP اگر \fIfile\fP پیدا نشود، وضعیت بازگشتی 127 است؛ اگر \fIfile\fP پیدا شود اما حاوی خطای نحوی باشد، وضعیت بازگشتی 126 است؛ در غیر این صورت، وضعیت بازگشتی همان وضعیت خروج آخرین دستور اجرا شده است\&. .RE .TP \fB:\fP [ \fIarg\fP \&.\&.\&. ] این دستور هیچ کاری انجام نمی‌دهد، هرچند بسط معمول آرگومان‌ها انجام می‌شود که ممکن است بر پارامترهای شل اثر بگذارد\&. وضعیت خروج صفر برگردانده می‌شود\&. .TP \fBalias\fP [ {\fB+\fP|\fB\-\fP}\fBgmrsL\fP ] [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] به ازای هر \fIname\fP دارای \fIvalue\fP متناظر، یک نام مستعار با آن مقدار تعریف می‌کند\&. وجود یک فاصله در انتهای \fIvalue\fP باعث می‌شود کلمهٔ بعدی نیز برای بسط نام مستعار بررسی شود\&. اگر پرچم \fB\-g\fP داده شود، یک نام مستعار سراسری تعریف می‌کند؛ نام‌های مستعار سراسری حتی اگر در جایگاه دستور نباشند نیز بسط داده می‌شوند: .RS .PP .RS .nf \fB% perldoc \-\-help 2>&1 | grep \&'built\-in functions' \-f Search Perl built\-in functions % alias \-g HG=\&'\-\-help 2>&1 | grep' % perldoc HG \&'built\-in functions' \-f Search Perl built\-in functions\fP .fi .RE .PP اگر پرچم \fB\-s\fP داده شود، یک نام مستعار پسوند تعریف می‌کند: اگر کلمهٔ دستور در خط فرمان به صورت `\fItext\fP\fB\&.\fP\fIname\fP\&' باشد، که در آن \fItext\fP هر رشتهٔ غیرخالی است، با متن `\fIvalue\fP \fItext\fP\fB\&.\fP\fIname\fP\&' جایگزین می‌شود\&. توجه داشته باشید که با \fIname\fP به عنوان یک رشتهٔ دقیق (literal) رفتار می‌شود، نه یک الگو\&. فاصله در انتهای \fIvalue\fP در این حالت معنای خاصی ندارد\&. برای نمونه، .PP .RS .nf \fBalias \-s ps=\&'gv \-\-'\fP .fi .RE .PP باعث می‌شود دستور `\fB*\&.ps\fP\&' به `\fBgv \-\- *\&.ps\fP' بسط یابد\&. از آنجا که بسط نام‌های مستعار پیش از الگوخوانی (globbing) انجام می‌شود، سپس `\fB*\&.ps\fP\&' بسط خواهد یافت\&. نام‌های مستعار پسوند یک فضای نام مجزا از سایر نام‌های مستعار تشکیل می‌دهند (بنابراین در مثال بالا همچنان امکان ساخت یک نام مستعار برای دستور \fBps\fP وجود دارد) و این دو دسته هرگز با هم فهرست نمی‌شوند\&. .PP به ازای هر \fIname\fP بدون \fIvalue\fP، مقدار \fIname\fP (در صورت وجود) را چاپ می‌کند\&. بدون هیچ آرگومانی، تمامی نام‌های مستعار تعریف‌شدهٔ کنونی به‌جز نام‌های مستعار پسوند را چاپ می‌کند\&. اگر پرچم \fB\-m\fP داده شود، آرگومان‌ها به عنوان الگو در نظر گرفته می‌شوند (باید نقل‌قول شوند تا از تفسیر شدنشان به عنوان الگوهای glob جلوگیری شود) و نام‌های مستعار منطبق با این الگوها چاپ می‌شوند\&. هنگام چاپ نام‌های مستعار و وجود یکی از پرچم‌های \fB\-g\fP، \fB\-r\fP یا \fB\-s\fP، چاپ به ترتیب به نام‌های مستعار سراسری، عادی یا پسوندی محدود می‌شود؛ یک نام مستعار عادی نامی است که نه سراسری باشد و نه پسوندی\&. استفاده از `\fB+\fP\&' به‌جای `\fB\-\fP\&'، یا پایان دادن به فهرست گزینه‌ها با یک `\fB+\fP\&' تنها، از چاپ مقادیر نام‌های مستعار جلوگیری می‌کند\&. .PP اگر پرچم \fB\-L\fP داده شود، هر نام مستعار را به شیوه‌ای مناسب برای قرار دادن در یک اسکریپت راه‌اندازی چاپ می‌کند\&. اگر یک \fIname\fP (بدون \fIvalue\fP) داده شود که هیچ نام مستعاری برای آن تعریف نشده باشد، وضعیت خروج غیرصفر خواهد بود\&. .PP برای اطلاعات بیشتر درباره نام‌های مستعار، شامل مشکلات رایج، بخش ALIASING را در \fIzshmisc\fP(1) ببینید\&. .RE .TP \fBautoload\fP [ {\fB+\fP|\fB\-\fP}\fBRTUXdkmrtWz\fP ] [ \fB\-w\fP ] [ \fIname\fP \&.\&.\&. ] برای جزئیات کامل بخش `Autoloading Functions\&' را در \fIzshmisc\fP(1) ببینید\&. هنگام ارجاع اولیه به تابع، پارامتر \fBfpath\fP برای یافتن تعریف تابع جستجو خواهد شد\&. .RS .PP اگر \fIname\fP شامل یک مسیر مطلق باشد، تابع به گونه‌ای تعریف می‌شود که از فایل داده‌شده بارگیری شود (با جستجوی معمول برای فایل‌های dump در مکان مشخص‌شده)\&. نام تابع همان بخش نام فایل (basename یا بخش غیردایرکتوری) است\&. به طور معمول اگر تابع در مکان داده‌شده پیدا نشود یک خطا است؛ با این حال، اگر گزینهٔ \fB\-d\fP داده شود، جستجو برای تابع به صورت پیش‌فرض به \fB$fpath\fP محول می‌شود\&. اگر تابعی با مسیر مطلق بارگیری شود، هر تابعی که از درون آن بارگیری شده و بدون مسیر مطلق برای \fBautoload\fP نشانه‌گذاری شده باشد، مسیر بارگیری تابع والد به طور موقت به ابتدای \fB$fpath\fP اضافه می‌شود\&. .PP اگر گزینهٔ \fB\-r\fP یا \fB\-R\fP داده شود، تابع بلافاصله جستجو شده و مکان آن برای استفاده هنگام اجرای تابع به صورت داخلی ثبت می‌شود؛ مسیر نسبی با استفاده از مقدار \fB$PWD\fP بسط داده می‌شود\&. این کار در برابر تغییر در \fB$fpath\fP پس از فراخوانی \fBautoload\fP محافظت می‌کند\&. با \fB\-r\fP، اگر تابع پیدا نشود، تا زمان اجرا در سکوت حل‌نشده باقی می‌ماند؛ با \fB\-R\fP، به محض شکست جستجو یک پیام خطا چاپ شده و پردازش دستور بی‌درنگ متوقف می‌شود، یعنی در زمان دستور \fBautoload\fP نه در زمان اجرای تابع\&. .PP پرچم \fB\-X\fP فقط می‌تواند درون یک تابع شل استفاده شود\&. این پرچم باعث می‌شود تابع فراخواننده برای بارگیری خودکار نشانه‌گذاری شده و سپس بلافاصله بارگیری و اجرا شود، در حالی که آرایهٔ فعلی پارامترهای مکانی به عنوان آرگومان به آن داده می‌شود\&. این کار جایگزین تعریف قبلی تابع می‌شود\&. اگر تعریفی برای تابع یافت نشود، خطایی چاپ می‌شود و تابع تعریف‌نشده و نشانه‌گذاری‌شده برای بارگیری خودکار باقی می‌ماند\&. اگر آرگومانی داده شود، به عنوان دایرکتوری‌ای استفاده می‌شود (یعنی شامل نام تابع نیست) که تابع باید در آن پیدا شود؛ این گزینه می‌تواند با گزینهٔ \fB\-d\fP ترکیب شود تا اگر تابع در مکان داده‌شده نبود، جستجوی تابع به طور پیش‌فرض به \fB$fpath\fP واگذار شود\&. .PP پرچم \fB+X\fP تلاش می‌کند هر \fIname\fP را به عنوان یک تابع بارگیری‌شوندهٔ خودکار بارگیری کند، اما آن را اجرا \fIنمی‌کند\fP\&. وضعیت خروج در صورتی صفر (موفقیت) خواهد بود که تابع از قبل تعریف نشده باشد \fIو\fP تعریفی برای آن پیدا شود\&. این کار هیچ‌یک از تعاریف موجود تابع را جایگزین \fIنمی‌کند\fP\&. اگر تابع از پیش تعریف شده باشد یا وقتی هیچ تعریفی یافت نشود، وضعیت خروج غیرصفر (شکست) خواهد بود\&. در حالت دوم، تابع تعریف‌نشده و نشانه‌گذاری‌شده برای بارگیری خودکار باقی می‌ماند\&. اگر بارگیری خودکار به سبک ksh فعال باشد، تابع ایجادشده حاوی محتویات فایل به همراه فراخوانی به خود تابع خواهد بود که به انتهای آن ضمیمه شده است؛ بنابراین در نخستین فراخوانی تابع، رفتار عادی بارگیری خودکار ksh حاصل می‌شود\&. اگر پرچم \fB\-m\fP نیز داده شود، با هر \fIname\fP مانند یک الگو رفتار می‌شود و تمام توابعی که از قبل برای بارگیری خودکار نشانه‌گذاری شده و با الگو تطابق دارند، بارگیری می‌شوند\&..PP با پرچم \fB\-t\fP، ردیابی اجرای دستورها فعال می‌شود؛ با \fB\-T\fP، ردیابی اجرا فقط برای تابع فعلی فعال می‌گردد و هنگام ورود به هر تابع فراخوانی‌شده‌ای که ردیابی برای آن فعال نشده باشد، غیرفعال می‌شود\&. .PP با پرچم \fB\-U\fP، هنگام بارگذاری تابع از بسط نام‌های مستعار (alias expansion) جلوگیری می‌شود\&. .PP با پرچم \fB\-w\fP، آرگومان‌های \fIname\fP به عنوان نام فایل‌های کامپایل‌شده با دستور درونی \fBzcompile\fP در نظر گرفته می‌شوند و تمامی توابع تعریف‌شده در آن‌ها برای بارگذاری خودکار نشانه‌گذاری می‌شوند\&. .PP پرچم‌های \fB\-z\fP و \fB\-k\fP تابع را به گونه‌ای نشانه‌گذاری می‌کنند که به ترتیب به سبک zsh یا ksh بارگذاری خودکار شود، درست مانند اینکه گزینه \fBKSH_AUTOLOAD\fP به ترتیب غیرفعال یا فعال شده باشد\&. این پرچم‌ها تنظیمات این گزینه را در هنگام بارگذاری تابع بازنویسی (override) می‌کنند\&. .PP توجه داشته باشید که دستور \fBautoload\fP هیچ تلاشی نمی‌کند تا اطمینان حاصل کند گزینه‌های شلِ تنظیم‌شده در حین بارگذاری یا اجرای فایل، مقدار خاصی داشته باشند\&. برای این منظور، می‌توان از دستور \fBemulate\fP استفاده کرد: .PP .RS .nf \fBemulate zsh \-c \&'autoload \-Uz \fIfunc\fP'\fP .fi .RE .PP این دستور ترتیب می‌دهد که هنگام بارگذاری \fIfunc\fP، شل در حالت شبیه‌سازی بومی \fBzsh\fP باشد و این شبیه‌سازی هنگام اجرای \fIfunc\fP نیز اعمال گردد\&. .PP برخی از عملکردهای \fBautoload\fP توسط \fBfunctions \-u\fP یا \fBfunctions \-U\fP نیز ارائه می‌شوند، اما \fBautoload\fP رابط کاربری جامع‌تری است\&. .RE .TP .PD 0 \fBbg\fP [ \fIjob\fP \&.\&.\&. ] .TP .PD \fIjob\fP \&.\&.\&. \fB&\fP هر \fIjob\fP مشخص‌شده، یا در صورت مشخص نشدن، کار فعلی را در پس‌زمینه قرار می‌دهد\&. .TP \fBbindkey\fP بخش `Zle Builtins\&' در \fIzshzle\fP(1) را ببینید\&. .TP \fBbreak\fP [ \fIn\fP ] خروج از یک حلقه محصورکننده \fBfor\fP، \fBwhile\fP، \fBuntil\fP، \fBselect\fP یا \fBrepeat\fP\&. اگر عبارت حسابی \fIn\fP مشخص شده باشد، به جای یک سطح، از \fIn\fP سطح حلقه خارج می‌شود\&. .TP \fBbuiltin\fP \fIname\fP [ \fIargs\fP \&.\&.\&. ] دستور توکار \fIname\fP را با آرگومان‌های داده‌شده \fIargs\fP اجرا می‌کند\&. .TP \fBbye\fP همانند \fBexit\fP\&. .TP \fBcap\fP بخش `The zsh/cap Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP .PD 0 \fBcd\fP [ \fB\-qsLP\fP ] [ \fIarg\fP ] .TP .PD 0 \fBcd\fP [ \fB\-qsLP\fP ] \fIold\fP \fInew\fP .TP .PD \fBcd\fP [ \fB\-qsLP\fP ] {\fB+\fP|\fB\-\fP}\fIn\fP دایرکتوری فعلی را تغییر می‌دهد\&. در حالت اول، دایرکتوری فعلی را به \fIarg\fP تغییر می‌دهد، یا اگر \fIarg\fP مشخص نشده باشد، به مقدار \fB$HOME\fP تغییر می‌یابد\&. اگر \fIarg\fP برابر `\fB\-\fP\&' باشد، به دایرکتوری قبلی تغییر مسیر می‌دهد\&. .RS .PP در غیر این صورت، اگر \fIarg\fP با یک اسلش آغاز شود، برای تغییر مسیر به دایرکتوری ارائه‌شده توسط \fIarg\fP تلاش می‌کند\&. .PP اگر \fIarg\fP با اسلش آغاز نشود، رفتار به این بستگی دارد که آیا دایرکتوری فعلی `\fB\&.\fP\&' در فهرست دایرکتوری‌های موجود در متغیر شل \fBcdpath\fP وجود دارد یا خیر\&. اگر وجود نداشته باشد، ابتدا تلاش می‌کند به دایرکتوری \fIarg\fP در زیر دایرکتوری فعلی برود، و اگر ناموفق بود اما \fBcdpath\fP تنظیم شده و حداقل حاوی یک عضو باشد، تلاش می‌کند به نوبت به دایرکتوری \fIarg\fP در زیر هر جزء از \fBcdpath\fP برود تا موفق شود\&. اگر `\fB\&.\fP\&' در \fBcdpath\fP آمده باشد، \fBcdpath\fP دقیقاً به ترتیب جستجو می‌شود به گونه‌ای که `\fB\&.\fP\&' تنها در نقطه مناسب خود بررسی می‌شود\&. .PP در صورتی که گزینه \fBPOSIX_CD\fP تنظیم شده باشد، ترتیب بررسی \fBcdpath\fP به همان ترتیبی که در مستندات آن گزینه شرح داده شده، تغییر می‌یابد\&. .PP اگر دایرکتوری‌ای یافت نشود، گزینه \fBCDABLE_VARS\fP تنظیم شده باشد، و متغیری به نام \fIarg\fP وجود داشته باشد که مقدار آن با یک اسلش آغاز شود، مقدار آن به عنوان دایرکتوری در نظر گرفته می‌شود\&. در آن حالت، متغیر مذکور به جدول درهم‌سازی (hash table) دایرکتوری‌های نام‌گذاری‌شده اضافه می‌شود\&. .PP حالت دوم \fBcd\fP، رشته \fInew\fP را به جای رشته \fIold\fP در نام دایرکتوری فعلی جایگزین کرده و تلاش می‌کند به این دایرکتوری جدید برود\&. .PP حالت سوم \fBcd\fP یک مدخل را از پشته دایرکتوری‌ها استخراج کرده و به آن دایرکتوری تغییر مسیر می‌دهد\&. آرگومانی به شکل `\fB+\fP\fIn\fP\&' مدخلی از پشته را با شمارش از سمت چپ فهرست نمایش‌داده‌شده توسط دستور \fBdirs\fP، با شروع از صفر، مشخص می‌کند\&. آرگومانی به شکل `\fB\-\fP\fIn\fP\&' از سمت راست شمارش می‌کند\&. اگر گزینه \fBPUSHD_MINUS\fP تنظیم شده باشد، معانی `\fB+\fP\&' و `\fB\-\fP\&' در این زمینه جابجا می‌شوند\&. اگر گزینه \fBPOSIX_CD\fP تنظیم شده باشد، این حالت از \fBcd\fP شناخته نخواهد شد و به عنوان حالت اول تفسیر می‌شود\&. .PP اگر گزینه \fB\-q\fP (بی‌صدا یا quiet) مشخص شده باشد، تابع قلاب \fBchpwd\fP و توابع موجود در آرایه \fBchpwd_functions\fP فراخوانی نمی‌شوند\&. این گزینه برای فراخوانی‌هایی از \fBcd\fP که محیط دیده‌شده توسط یک کاربر تعاملی را تغییر نمی‌دهند، مفید است\&. .PP اگر گزینه \fB\-s\fP مشخص شده باشد، در صورتی که مسیر داده‌شده حاوی پیوندهای نمادین باشد، \fBcd\fP از تغییر دایرکتوری فعلی خودداری می‌کند\&. اگر گزینه \fB\-P\fP داده شود یا گزینه \fBCHASE_LINKS\fP فعال باشد، پیوندهای نمادین به مقادیر واقعی خود وضوح می‌یابند\&. اگر گزینه \fB\-L\fP داده شود، صرف‌نظر از وضعیت گزینه \fBCHASE_LINKS\fP، پیوندهای نمادین در مسیر دایرکتوری حفظ می‌شوند (و حل نمی‌شوند)\&. .RE .TP \fBchdir\fP همانند \fBcd\fP\&. .TP \fBclone\fP بخش `The zsh/clone Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBcommand\fP [ \fB\-pvV\fP ] \fIsimple command\fP آرگومان \fIsimple command\fP به جای اینکه به عنوان یک تابع یا دستور توکار در نظر گرفته شود، به عنوان یک دستور خارجی در نظر گرفته شده و اجرا می‌شود\&. اگر گزینه \fBPOSIX_BUILTINS\fP فعال باشد، دستورات توکار نیز اجرا خواهند شد اما برخی ویژگی‌های خاص آن‌ها سرکوب می‌گردد\&. پرچم \fB\-p\fP باعث می‌شود تا به جای مسیر موجود در \fB$path\fP، یک مسیر پیش‌فرض جستجو شود\&. با پرچم \fB\-v\fP، دستور \fBcommand\fP مشابه \fBwhence\fP عمل می‌کند و با \fB\-V\fP، معادل با \fBwhence \-v\fP است\&. .RS .PP همچنین بخش `Precommand Modifiers\&' در \fIzshmisc\fP(1) را ببینید\&. .RE .TP \fBcomparguments\fP بخش `The zsh/computil Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBcompcall\fP بخش `The zsh/compctl Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBcompctl\fP بخش `The zsh/compctl Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBcompdescribe\fP بخش `The zsh/computil Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBcompfiles\fP بخش `The zsh/computil Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBcompgroups\fP بخش `The zsh/computil Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBcompquote\fP بخش `The zsh/computil Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBcomptags\fP بخش `The zsh/computil Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBcomptry\fP بخش `The zsh/computil Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBcompvalues\fP بخش `The zsh/computil Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBcontinue\fP [ \fIn\fP ] تکرار بعدی حلقه محصورکننده \fBfor\fP، \fBwhile\fP، \fBuntil\fP، \fBselect\fP یا \fBrepeat\fP را از سر می‌گیرد\&. اگر عبارت حسابی \fIn\fP مشخص شده باشد، از \fIn\fP\-1 حلقه خارج شده و کار را در \fIn\fP\-امین حلقه محصورکننده از سر می‌گیرد\&. .TP \fBdeclare\fP همانند \fBtypeset\fP\&. .TP .PD 0 \fBdirs\fP [ \fB\-c\fP ] [ \fIarg\fP \&.\&.\&. ].TP .PD \fBdirs\fP [ \fB\-lpv\fP ] بدون آرگومان، محتویات پشتهٔ دایرکتوری‌ها را چاپ می‌کند\&. دایرکتوری‌ها با دستور \fBpushd\fP به این پشته اضافه می‌شوند، و با دستورهای \fBcd\fP یا \fBpopd\fP حذف می‌گردند\&. اگر آرگومان‌هایی مشخص شوند، آنها را در پشتهٔ دایرکتوری بارگذاری کرده، جایگزین محتوای قبلی آن می‌کند و دایرکتوری کنونی را به پشته اضافه می‌نماید\&. .RS .PP .PD 0 .TP .PD \fB\-c\fP پاک کردن پشتهٔ دایرکتوری‌ها\&. .TP \fB\-l\fP چاپ کامل نام دایرکتوری‌ها به جای استفاده از عبارت‌های \fB~\fP (بخش \fIDynamic\fP و \fIStatic named directories\fP را در \fIzshexpn\fP(1) ببینید)\&. .TP \fB\-p\fP چاپ مدخل‌های دایرکتوری، هر کدام در یک خط جداگانه\&. .TP \fB\-v\fP شماره‌گذاری دایرکتوری‌ها در پشته هنگام چاپ\&. .PP .RE .TP \fBdisable\fP [ \fB\-afmprs\fP ] \fIname\fP \&.\&.\&. موقتاً عناصر یا الگوهای نام‌برده‌شدهٔ (\fIname\fP) جدول درهم‌سازی را غیرفعال می‌کند\&. حالت پیش‌فرض، غیرفعال کردن دستورهای توکار است\&. این به شما اجازه می‌دهد از یک دستور خارجی با نامی مشابه یک دستور توکار استفاده کنید\&. گزینهٔ \fB\-a\fP باعث می‌شود \fBdisable\fP روی نام‌های مستعار عادی یا سراسری عمل کند\&. گزینهٔ \fB\-s\fP باعث می‌شود \fBdisable\fP روی نام‌های مستعار پسوند عمل کند\&. گزینهٔ \fB\-f\fP باعث می‌شود \fBdisable\fP روی توابع پوسته عمل کند\&. گزینهٔ \fB\-r\fP باعث می‌شود \fBdisable\fP روی کلمات رزروشده عمل کند\&. بدون آرگومان، تمام عناصر غیرفعال‌شده از جدول درهم‌سازی متناظر چاپ می‌شوند\&. با پرچم \fB\-m\fP، آرگومان‌ها به عنوان الگو در نظر گرفته می‌شوند (که برای جلوگیری از اعمال بسط نام فایل، باید در نقل‌قول قرار گیرند)، و تمام عناصر جدول درهم‌سازی متناظر که با این الگوها مطابقت داشته باشند غیرفعال می‌شوند\&. اشیاء غیرفعال‌شده را می‌توان با دستور \fBenable\fP مجدداً فعال کرد\&. .RS .PP با گزینهٔ \fB\-p\fP، آرگومان‌های \fIname\fP \&.\&.\&. به عناصر نحو الگوی پوسته، همان‌طور که در بخش «Filename Generation» شرح داده شده است، اشاره دارند\&. برخی عناصر را می‌توان به صورت جداگانه غیرفعال کرد، همان‌طور که در زیر آمده است\&. .PP توجه داشته باشید الگوهایی که با تنظیمات فعلی برای گزینه‌های \fBEXTENDED_GLOB\fP، \fBKSH_GLOB\fP و \fBSH_GLOB\fP مجاز نیستند، صرف‌نظر از تنظیمات اینجا، هرگز فعال نمی‌شوند\&. برای مثال، اگر \fBEXTENDED_GLOB\fP فعال نباشد، الگوی \fB^\fP بی‌اثر است حتی اگر «\fBdisable \-p "^"\fP\&» اجرا نشده باشد\&. فهرست زیر تنظیمات هر گزینه‌ای را که استفاده از الگو را محدود می‌کند نشان می‌دهد\&. لازم به ذکر است که تنظیم \fBSH_GLOB\fP اثر گسترده‌تری نسبت به صرفاً غیرفعال کردن الگوها دارد، چرا که عبارات خاص، به‌ویژه آنهایی که دارای پرانتز هستند، به گونه‌ای متفاوت تجزیه می‌شوند\&. .PP الگوهای زیر را می‌توان غیرفعال کرد؛ تمام رشته‌ها در خط فرمان نیاز به نقل‌قول دارند تا از تفسیر فوری آنها به عنوان الگو جلوگیری شود، و الگوها در زیر به عنوان یادآوری درون نقل‌قول تکی نمایش داده شده‌اند\&. .PP .PD 0 .TP .PD \fB\&'?'\fP نویسهٔ الگوی \fB?\fP در هر کجایی که ظاهر شود، از جمله زمانی که در \fBKSH_GLOB\fP قبل از یک پرانتز قرار گیرد\&. .TP \fB\&'*'\fP نویسهٔ الگوی \fB*\fP در هر کجایی که ظاهر شود، از جمله تطبیق بازگشتی (recursive globbing) و زمانی که در \fBKSH_GLOB\fP قبل از یک پرانتز قرار گیرد\&. .TP \fB\&'['\fP کلاس‌های نویسه (Character classes)\&. .TP \fB\&'<'\fP (\fBNO_SH_GLOB\fP) محدوده‌های عددی\&. .TP \fB\&'|'\fP (\fBNO_SH_GLOB\fP) تناوب (انتخاب بین گزینه‌ها) در الگوهای گروه‌بندی‌شده، دستورهای case، یا عبارت‌های دارای پرانتز در KSH_GLOB\&. .TP \fB\&'('\fP (\fBNO_SH_GLOB\fP) گروه‌بندی با استفاده از پرانتز تکی\&. غیرفعال کردن این مورد، استفاده از پرانتزها را برای \fBKSH_GLOB\fP در جایی که توسط یک نویسهٔ خاص معرفی می‌شوند، و همچنین برای توصیف‌کننده‌های گلوب غیرفعال نمی‌کند (از «\fBsetopt NO_BARE_GLOB_QUAL\fP\&» برای غیرفعال کردن توصیف‌کننده‌های گلوبی که صرفاً از پرانتز استفاده می‌کنند، بهره ببرید)\&. .TP \fB\&'~'\fP (\fBEXTENDED_GLOB\fP) استثنا کردن به شکل \fIA\fP\fB~\fP\fIB\fP\&. .TP \fB\&'^'\fP (\fBEXTENDED_GLOB\fP) استثنا کردن به شکل \fIA\fP\fB^\fP\fIB\fP\&. .TP \fB\&'#'\fP (\fBEXTENDED_GLOB\fP) نویسهٔ الگوی \fB#\fP در هر کجایی که ظاهر شود، هم برای تکرار الگوی قبلی و هم برای نشان دادن پرچم‌های گلوبینگ\&. .TP \fB\&'?('\fP (\fBKSH_GLOB\fP) شکل گروه‌بندی \fB?(\fP\fI\&.\&.\&.\fP\fB)\fP\&. توجه داشته باشید در صورتی که \fB\&'?'\fP غیرفعال باشد، این مورد نیز غیرفعال می‌شود\&. .TP \fB\&'*('\fP (\fBKSH_GLOB\fP) شکل گروه‌بندی \fB*(\fP\fI\&.\&.\&.\fP\fB)\fP\&. توجه داشته باشید در صورتی که \fB\&'*'\fP غیرفعال باشد، این مورد نیز غیرفعال می‌شود\&. .TP \fB\&'+('\fP (\fBKSH_GLOB\fP) شکل گروه‌بندی \fB+(\fP\fI\&.\&.\&.\fP\fB)\fP\&. .TP \fB\&'!('\fP (\fBKSH_GLOB\fP) شکل گروه‌بندی \fB!(\fP\fI\&.\&.\&.\fP\fB)\fP\&. .TP \fB\&'@('\fP (\fBKSH_GLOB\fP) شکل گروه‌بندی \fB@(\fP\fI\&.\&.\&.\fP\fB)\fP\&. .RE .TP .PD 0 \fBdisown\fP [ \fIjob\fP \&.\&.\&. ] .TP .PD 0 \fIjob\fP \&.\&.\&. \fB&|\fP .TP .PD \fIjob\fP \&.\&.\&. \fB&!\fP کارهای مشخص‌شده (\fIjob\fP) را از جدول کارها حذف می‌کند؛ پوسته دیگر وضعیت آنها را گزارش نخواهد داد و در صورتی که تلاش کنید با وجود در حال اجرا یا متوقف بودن آنها از یک پوستهٔ تعاملی خارج شوید، هشداری نخواهد داد\&. اگر هیچ \fIjob\fPی مشخص نشود، کار فعلی سلب مالکیت (disown) می‌شود\&. .RS .PP اگر \fIjob\fPها در حال حاضر متوقف باشند و گزینهٔ \fBAUTO_CONTINUE\fP تنظیم نشده باشد، هشداری حاوی اطلاعاتی در مورد نحوهٔ به اجرا درآوردن آنها پس از سلب مالکیت چاپ می‌شود\&. اگر از یکی از دو شکل آخر استفاده شود، صرف‌نظر از تنظیمات گزینهٔ \fBAUTO_CONTINUE\fP، \fIjob\fPها به طور خودکار به حالت اجرا درمی‌آیند\&. .RE .TP \fBecho\fP [ \fB\-neE\fP ] [ \fIarg\fP \&.\&.\&. ] هر \fIarg\fP را در خروجی استاندارد می‌نویسد و بین هر کدام یک فاصله قرار می‌دهد\&. اگر پرچم \fB\-n\fP وجود نداشته باشد، یک خط جدید در انتها چاپ می‌کند\&. \fBecho\fP توالی‌های گریز زیر را تشخیص می‌دهد: .RS .PP .PD 0 .TP \fB\ea\fP نویسهٔ زنگ (bell) .TP \fB\eb\fP پس‌بر (backspace) .TP \fB\ec\fP جلوگیری از چاپ نویسه‌های بعدی و خط جدید پایانی .TP \fB\ee\fP گریز (escape) .TP \fB\ef\fP برگه‌بر (form feed) .TP \fB\en\fP خط جدید (newline) .TP \fB\er\fP بازگشت به ابتدای سطر (carriage return) .TP \fB\et\fP تب افقی (horizontal tab) .TP \fB\ev\fP تب عمودی (vertical tab) .TP \fB\e\e\fP بک‌اسلش (backslash) .TP \fB\e0\fP\fINNN\fP کد نویسه در مبنای هشت (اکتال).TP \fB\ex\fP\fINN\fP کد نویسه در مبنای شانزده .TP \fB\eu\fP\fINNNN\fP کد نویسه یونیکد در مبنای شانزده .TP \fB\eU\fP\fINNNNNNNN\fP کد نویسه یونیکد در مبنای شانزده .PD .PP می‌توان از پرچم \fB\-E\fP یا گزینهٔ \fBBSD_ECHO\fP برای غیرفعال کردن این توالی‌های گریز استفاده کرد\&. در حالت دوم، می‌توان از پرچم \fB\-e\fP برای فعال‌سازی مجدد آن‌ها بهره برد\&. .PP توجه داشته باشید که برای سازگاری با استانداردها، خط تیره دوگانه پردازش گزینه‌ها را خاتمه نمی‌دهد؛ بلکه مستقیماً چاپ می‌شود\&. با این حال، یک خط تیره تکی پردازش گزینه‌ها را خاتمه می‌دهد، بنابراین نخستین خط تیره (که ممکن است پس از گزینه‌ها بیاید) چاپ نمی‌شود، اما هر چه پس از آن بیاید به عنوان آرگومان چاپ خواهد شد\&. رفتار خط تیره تکی با سایر پوسته‌ها متفاوت است\&. برای روشی با سازگاری و انتقال‌پذیری بیشتر جهت چاپ متن، \fBprintf\fP و برای روشی با کنترل بیشتر در zsh، دستور \fBprint\fP را ببینید\&. .RE .TP \fBechotc\fP بخش «The zsh/termcap Module» در \fIzshmodules\fP(1) را ببینید\&. .TP \fBechoti\fP بخش «The zsh/terminfo Module» در \fIzshmodules\fP(1) را ببینید\&. .TP \fBemulate\fP [ \fB\-lLR\fP ] [ {\fBzsh\fP|\fBsh\fP|\fBksh\fP|\fBcsh\fP} [ \fIflags\fP \&.\&.\&. ] ] بدون هیچ آرگومانی، حالت شبیه‌سازی فعلی را چاپ می‌کند\&. .RS .PP با یک تک‌آرگومان، گزینه‌های zsh را برای شبیه‌سازی پوستهٔ مشخص‌شده تا حد امکان تنظیم می‌کند\&. پوستهٔ \fBcsh\fP هرگز به‌طور کامل شبیه‌سازی نخواهد شد\&. اگر آرگومان یکی از پوسته‌های فهرست‌شده در بالا نباشد، \fBzsh\fP به عنوان پیش‌فرض استفاده خواهد شد؛ دقیق‌تر بگوییم، آزمون‌های انجام‌شده روی آرگومان همان‌هایی هستند که برای تعیین شبیه‌سازی در هنگام راه‌اندازی بر اساس نام پوسته استفاده می‌شوند، بخش COMPATIBILITY در \fIzsh\fP(1) را ببینید\&. علاوه بر تنظیم گزینه‌های پوسته، این دستور همچنین وضعیت دست‌نخوردهٔ فعال‌سازی الگوها را بازمی‌گرداند، گویی تمام الگوها با استفاده از \fBenable \-p\fP فعال شده باشند\&. .PP اگر دستور \fBemulate\fP درون تابعی رخ دهد که با \fBfunctions \-t\fP برای ردگیری اجرا نشانه‌گذاری شده است، آن‌گاه گزینهٔ \fBxtrace\fP بدون توجه به حالت شبیه‌سازی یا سایر گزینه‌ها روشن خواهد شد\&. توجه داشته باشید کدی که درون تابع توسط دستورهای \fB\&.\fP، \fBsource\fP یا \fBeval\fP اجرا می‌شود، به عنوان اجرای مستقیم از تابع در نظر گرفته نمی‌شود و بنابراین این رفتار را برنمی‌انگیزد\&. .PP اگر کلید \fB\-R\fP داده شود، تمام گزینه‌های قابل تنظیم به جز برخی گزینه‌های توصیف‌کنندهٔ محیط تعاملی، به مقدار پیش‌فرض خود متناظر با حالت شبیه‌سازی مشخص‌شده بازنشانی می‌شوند؛ در غیر این صورت، تنها گزینه‌هایی تغییر می‌کنند که احتمال دارد در اسکریپت‌ها و توابع مشکلات سازگاری ایجاد کنند\&. اگر کلید \fB\-L\fP داده شود، گزینه‌های \fBLOCAL_OPTIONS\fP، \fBLOCAL_PATTERNS\fP و \fBLOCAL_TRAPS\fP نیز تنظیم خواهند شد، که باعث می‌شود اثرات دستور \fBemulate\fP و هر دستور \fBsetopt\fP، \fBdisable \-p\fP یا \fBenable \-p\fP، و \fBtrap\fP برای تابع پوستهٔ بلافاصله دربرگیرنده (در صورت وجود) محلی شود؛ معمولاً این گزینه‌ها در تمام حالت‌های شبیه‌سازی به جز \fBksh\fP خاموش هستند\&. کلید \fB\-L\fP با استفاده از \fB\-c\fP در \fIflags\fP ناسازگار است\&. .PP اگر یک تک‌آرگومان وجود داشته باشد و کلید \fB\-l\fP داده شود، گزینه‌هایی که تنظیم یا لغو تنظیم می‌شوند (مورد دوم با پیشوند «\fBno\fP» مشخص می‌شود) فهرست می‌گردند\&. \fB\-l\fP را می‌توان با \fB\-L\fP یا \fB\-R\fP ترکیب کرد و فهرست به شیوهٔ مناسب اصلاح خواهد شد\&. توجه داشته باشید که فهرست به تنظیمات فعلی گزینه‌ها بستگی ندارد، یعنی شامل همهٔ گزینه‌هایی است که اصولاً ممکن است تغییر کنند، نه صرفاً آن‌هایی که واقعاً تغییر خواهند کرد\&. .PP پارامتر \fIflags\fP می‌تواند هر یک از پرچم‌های زمان فراخوانی توصیف‌شده در بخش INVOCATION در \fIzsh\fP(1) باشد، به جز اینکه «\fB\-o EMACS\fP» و «\fB\-o VI\fP» ممکن است استفاده نشوند\&. پرچم‌هایی مانند «\fB+r\fP»/«\fB+o RESTRICTED\fP» ممکن است در برخی شرایط ممنوع باشند\&. .PP اگر \fB\-c\fP \fIarg\fP در \fIflags\fP ظاهر شود، \fIarg\fP در حالی ارزیابی می‌شود که شبیه‌سازی درخواستی به‌طور موقت فعال است\&. در این حالت، پیش از بازگشت \fBemulate\fP، حالت شبیه‌سازی و تمام گزینه‌ها به مقادیر قبلی خود بازگردانده می‌شوند\&. کلید \fB\-R\fP می‌تواند پیش از نام پوسته‌ای که باید شبیه‌سازی شود قرار گیرد؛ توجه داشته باشید که این معنایی متمایز از گنجاندن \fB\-R\fP در \fIflags\fP دارد\&. .PP استفاده از \fB\-c\fP، حالت شبیه‌سازی «چسبنده» را برای توابع تعریف‌شده در عبارت ارزیابی‌شده فعال می‌کند: حالت شبیه‌سازی از آن پس با تابع پیوند می‌خورد به طوری که هر زمان تابع اجرا شود، شبیه‌سازی (با رعایت کلید \fB\-R\fP در صورت وجود) و تمام گزینه‌ها پیش از ورود به تابع تنظیم می‌شوند (و غیرفعال‌سازی الگوها پاک می‌شود)، و وضعیت پس از خروج بازگردانده می‌شود\&. اگر تابع زمانی فراخوانی شود که شبیه‌سازی چسبنده از پیش در حال اجرا باشد، چه درون یک عبارت «\fBemulate\fP \fIshell\fP \fB\-c\fP» و چه درون تابع دیگری با همان شبیه‌سازی چسبنده، ورود و خروج از تابع باعث تغییر گزینه‌ها نمی‌شود (مگر به دلیل پردازش استاندارد مانند گزینهٔ \fBLOCAL_OPTIONS\fP)\&. این موضوع همچنین در مورد توابعی که برای بارگذاری خودکار در شبیه‌سازی چسبنده نشانه‌گذاری شده‌اند صدق می‌کند؛ مجموعهٔ مناسب گزینه‌ها هم در زمان بارگذاری تابع و هم هنگام اجرای آن اعمال خواهد شد\&. .PP برای مثال: .PP .RS .nf \fBemulate sh \-c \&'fni() { setopt cshnullglob; } fno() { fni; }\&' fno\fP .fi .RE .PP دو تابع \fBfni\fP و \fBfno\fP با شبیه‌سازی چسبندهٔ \fBsh\fP تعریف شده‌اند\&. سپس \fBfno\fP اجرا می‌شود، و باعث می‌گردد گزینه‌های مرتبط با شبیه‌سازی‌ها به مقادیرشان در \fBsh\fP تنظیم شوند\&. سپس \fBfno\fP تابع \fBfni\fP را فراخوانی می‌کند؛ از آنجا که \fBfni\fP نیز برای شبیه‌سازی چسبندهٔ \fBsh\fP نشانه‌گذاری شده است، در ورود یا خروج از آن هیچ تغییری در گزینه‌ها رخ نمی‌دهد\&. از این رو گزینهٔ \fBcshnullglob\fP، که توسط شبیه‌سازی \fBsh\fP خاموش شده بود، درون \fBfni\fP روشن شده و در بازگشت به \fBfno\fP روشن باقی می‌ماند\&. در هنگام خروج از \fBfno\fP، حالت شبیه‌سازی و تمام گزینه‌ها به وضعیتی که پیش از ورود به شبیه‌سازی موقت داشتند بازگردانده خواهند شد\&. .PP مستندات بالا معمولاً برای هدف مورد نظر، یعنی اجرای کدهای طراحی‌شده برای سایر پوسته‌ها در یک محیط مناسب، کافی است\&. قواعد دقیق‌تر در ادامه آمده است\&. .PD 0 .TP 1\&. محیط شبیه‌سازی چسبندهٔ ارائه‌شده توسط «\fBemulate\fP \fIshell\fP \fB\-c\fP» دقیقاً همانند محیط حاصل از ورود به تابعی است که در نتیجهٔ تعریف شدن در چنین محیطی، برای شبیه‌سازی چسبنده نشانه‌گذاری شده است\&. بنابراین، برای نمونه، شبیه‌سازی چسبنده توسط زیرتوابع تعریف‌شده درون توابعی با شبیه‌سازی چسبنده به ارث برده می‌شود\&. .TP 2\&. هیچ تغییری در گزینه‌ها در ورود یا خروج از توابعی که برای شبیه‌سازی چسبنده نشانه‌گذاری نشده‌اند رخ نمی‌دهد، مگر تغییراتی که به‌طور معمول رخ می‌دهند، حتی اگر آن توابع درون یک شبیه‌سازی چسبنده فراخوانی شوند\&. .TP 3\&. هیچ رفتار خاصی برای توابع نشانه‌گذاری‌شده برای \fBautoload\fP و همچنین توابع موجود در wordcode ایجادشده توسط دستور \fBzcompile\fP در نظر گرفته نشده است\&. .TP 4\&. وجود یا عدم وجود کلید \fB\-R\fP برای \fBemulate\fP با حالت‌های متفاوتی از شبیه‌سازی چسبنده مطابقت دارد؛ بنابراین برای نمونه، «\fBemulate sh \-c\fP»، «\fBemulate \-R sh \-c\fP» و «\fBemulate csh \-c\fP» به عنوان سه شبیه‌سازی چسبندهٔ متمایز تلقی می‌شوند\&. .TP 5\&. تفاوت در گزینه‌های پوسته که علاوه بر شبیه‌سازی پایه ارائه می‌شوند نیز به معنای تفاوت در شبیه‌سازی‌های چسبنده است، بنابراین برای نمونه «\fBemulate zsh \-c\fP» و «\fBemulate zsh \-o cbases \-c\fP» به عنوان شبیه‌سازی‌های چسبندهٔ متمایز تلقی می‌شوند\&. .PD .RE .TP \fBenable\fP [ \fB\-afmprs\fP ] \fIname\fP \&.\&.\&. عناصر جدول درهم‌سازیِ \fIname\fP را که احتمالاً پیش‌تر با \fBdisable\fP غیرفعال شده‌اند، فعال می‌کند\&. حالت پیش‌فرض، فعال‌سازی دستورهای توکار (builtin) است\&. گزینهٔ \fB\-a\fP باعث می‌شود \fBenable\fP روی نام‌های مستعار عادی یا سراسری عمل کند\&. گزینهٔ \fB\-s\fP باعث می‌شود \fBenable\fP روی نام‌های مستعار پسوند عمل کند\&. گزینهٔ \fB\-f\fP باعث می‌شود \fBenable\fP روی توابع پوسته عمل کند\&. گزینهٔ \fB\-r\fP باعث می‌شود \fBenable\fP روی کلمات رزروشده عمل کند\&. بدون آرگومان، تمام عناصر فعال جدول درهم‌سازی مربوطه چاپ می‌شوند\&. با پرچم \fB\-m\fP آرگومان‌ها به عنوان الگو در نظر گرفته می‌شوند (باید نقل‌قول شوند) و تمام عناصر جدول درهم‌سازی متناظر که با این الگوها مطابقت دارند فعال می‌گردند\&. اشیاء فعال‌شده را می‌توان با دستور توکار \fBdisable\fP غیرفعال کرد\&. .RS .PP دستور \fBenable \-p\fP الگوهایی را که با \fBdisable \-p\fP غیرفعال شده‌اند، دوباره فعال می‌کند\&. توجه داشته باشید که این دستور بر گزینه‌های بسط الگو تقدم ندارد؛ به عنوان مثال، «\fBenable \-p "~"\fP» باعث فعال شدن نویسهٔ الگوی \fB~\fP نمی‌شود مگر اینکه گزینهٔ \fBEXTENDED_GLOB\fP نیز تنظیم شده باشد\&. برای فعال کردن تمام الگوهای ممکن (تا بتوان آن‌ها را بعداً به‌طور جداگانه با \fBdisable \-p\fP غیرفعال کرد)، از «\fBsetopt EXTENDED_GLOB KSH_GLOB NO_SH_GLOB\fP» استفاده کنید\&. .RE.TP \fBeval\fP [ \fIarg\fP \&.\&.\&. ] آرگومان‌ها را به عنوان ورودی شل خوانده و دستور(های) حاصل را در فرایند فعلی شل اجرا می‌کند\&. وضعیت بازگشتی همانند حالتی است که گویی دستورها مستقیماً توسط شل اجرا شده‌اند؛ اگر هیچ \fIarg\fP وجود نداشته باشد یا شامل هیچ دستوری نباشند (یعنی یک رشته خالی یا فاصله خالی باشند)، وضعیت بازگشتی صفر خواهد بود\&. .TP \fBexec\fP [ \fB\-cl\fP ] [ \fB\-a\fP \fIargv0\fP ] [ \fIcommand\fP [ \fIarg\fP \&.\&.\&. ] ] جایگزین کردن فرایند شل فعلی با \fIcommand\fP به جای ایجاد فرایند جدید (forking)\&. اگر \fIcommand\fP یک دستور توکار شل یا یک تابع شل باشد، شل آن را اجرا کرده و پس از اتمام دستور خارج می‌شود\&. .RS .PP با \fB\-c\fP محیط پاک‌سازی می‌شود؛ با \fB\-l\fP نویسه \fB\-\fP به ابتدای رشته \fBargv[0]\fP دستورِ در حال اجرا اضافه می‌شود (برای شبیه‌سازی یک login shell)؛ با \fB\-a\fP \fIargv0\fP رشته \fBargv[0]\fP دستورِ اجرا شده تنظیم می‌شود\&. بخش `Precommand Modifiers\&' در \fIzshmisc\fP(1) را ببینید\&. .PP اگر گزینه \fBPOSIX_BUILTINS\fP تنظیم شده باشد، \fIcommand\fP هرگز به عنوان یک دستور توکار شل یا تابع شل تفسیر نمی‌شود\&. این بدان معناست که سایر اصلاح‌کننده‌های پیش‌فرمان (precommand modifiers) مانند \fBbuiltin\fP و \fBnoglob\fP نیز درون شل تفسیر نخواهند شد\&. بنابراین \fIcommand\fP همیشه از طریق جستجوی مسیر دستور پیدا می‌شود\&. .PP اگر \fIcommand\fP حذف شود اما هرگونه بازهدایتی مشخص شده باشد، آن‌گاه بازهدایت‌ها در شل فعلی اعمال خواهند شد\&. .RE .TP \fBexit\fP [ \fIn\fP ] خروج از شل با وضعیت خروج مشخص‌شده توسط عبارت حسابی \fIn\fP؛ اگر مقداری مشخص نشده باشد، از وضعیت خروج آخرین دستورِ اجراشده استفاده می‌شود\&. وضعیت EOF نیز باعث خروج از شل می‌شود، مگر اینکه گزینه \fBIGNORE_EOF\fP تنظیم شده باشد\&. .RS .PP برای برخی رفتارهای متقابل احتمالاً غیرمنتظره دستور \fBexit\fP با کارها (jobs)، نکات انتهای بخش JOBS در \fIzshmisc\fP(1) را ببینید\&. .RE .TP \fBexport\fP [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] نام‌های (\fIname\fP) مشخص‌شده برای برون‌ریزی (export) خودکار به محیط دستورهایی که پس از آن اجرا می‌شوند علامت‌گذاری می‌شوند\&. معادل \fBtypeset \-gx\fP است\&. اگر پارامتر مشخص‌شده از قبل وجود نداشته باشد، در حوزه سراسری (global scope) ایجاد می‌شود\&. .TP \fBfalse\fP [ \fIarg\fP \&.\&.\&. ] کاری انجام نمی‌دهد و وضعیت خروج 1 را بازمی‌گرداند\&. .TP .PD 0 \fBfc\fP [ \fB\-e\fP \fIename\fP ] [ \fB\-s\fP ] [ \fB\-LI\fP ] [ \fB\-m\fP \fImatch\fP ] [ \fIold\fP\fB=\fP\fInew\fP \&.\&.\&. ] [ \fIfirst\fP [ \fIlast\fP ] ] .TP .PD 0 \fBfc \-l \fP[ \fB\-LI\fP ] [ \fB\-nrdfEiD\fP ] [ \fB\-t\fP \fItimefmt\fP ] [ \fB\-m\fP \fImatch\fP ] .TP .PD 0 \fB \fP[ \fIold\fP\fB=\fP\fInew\fP \&.\&.\&. ] [ \fIfirst\fP [ \fIlast\fP ] ] .TP .PD 0 \fBfc \-p \fP[ \fB\-a\fP ] [ \fIfilename\fP [ \fIhistsize\fP [ \fIsavehistsize\fP ] ] ] .TP .PD 0 \fBfc\fP \fB\-P\fP .TP .PD \fBfc\fP \fB\-ARWI\fP [ \fIfilename\fP ] دستور \fBfc\fP سازوکار تاریخچه تعاملی را کنترل می‌کند\&. توجه داشته باشید که خواندن و نوشتن گزینه‌های تاریخچه تنها در صورتی انجام می‌شود که شل تعاملی (interactive) باشد\&. معمولاً این حالت به طور خودکار تشخیص داده می‌شود، اما می‌توان هنگام شروع شل با تنظیم گزینه \fBinteractive\fP آن را اجبار کرد\&. .RS .PP دو شکل نخست این دستور، محدوده‌ای از رویدادها را از \fIfirst\fP تا \fIlast\fP از فهرست تاریخچه انتخاب می‌کنند\&. آرگومان‌های \fIfirst\fP و \fIlast\fP می‌توانند به صورت یک عدد یا یک رشته مشخص شوند\&. یک عدد منفی به عنوان فاصله (offset) نسبت به شماره رویداد تاریخچه فعلی در نظر گرفته می‌شود\&. یک رشته، جدیدترین رویدادی را که با آن رشته داده‌شده آغاز می‌شود مشخص می‌کند\&. سپس تمام جایگزینی‌های \fIold\fP\fB=\fP\fInew\fP، در صورت وجود، روی متن رویدادها انجام می‌شوند\&. .PP محدوده رویدادهای انتخاب‌شده با اعداد را می‌توان با پرچم‌های زیر بیشتر محدود کرد\&. .PD 0 .TP \fB\-I\fP تنها به رویدادهای داخلی محدود می‌کند (نه از \fB$HISTFILE\fP) .TP \fB\-L\fP تنها به رویدادهای محلی محدود می‌کند (نه از شل‌های دیگر، به \fBSHARE_HISTORY\fP در \fIzshoptions\fP(1) مراجعه کنید \-\- توجه داشته باشید که \fB$HISTFILE\fP هنگام خوانده شدن در شروع محلی در نظر گرفته می‌شود) .TP \fB\-m\fP نخستین آرگومان را به عنوان یک الگو (که باید داخل نقل‌قول باشد) در نظر می‌گیرد و تنها رویدادهای تاریخچه منطبق با این الگو بررسی می‌شوند .PD .PP اگر \fIfirst\fP مشخص نشود، روی \-1 (جدیدترین رویداد) تنظیم می‌شود، یا اگر پرچم \fB\-l\fP داده شده باشد روی \-16 تنظیم خواهد شد\&. اگر \fIlast\fP مشخص نشود، روی \fIfirst\fP تنظیم می‌شود، یا اگر پرچم \fB\-l\fP داده شده باشد روی \-1 تنظیم خواهد شد\&. با این حال، اگر رویداد فعلی ورودی‌هایی را با `\fBprint \-s\fP\&' یا `\fBfc \-R\fP' به تاریخچه اضافه کرده باشد، مقدار پیش‌فرض \fIlast\fP برای \fB\-l\fP شامل تمام ورودی‌های جدید تاریخچه از زمان آغاز رویداد فعلی خواهد بود\&. .PP هنگامی که پرچم \fB\-l\fP داده شود، رویدادهای حاصل در خروجی استاندارد فهرست می‌شوند\&. در غیر این صورت، برنامه ویرایشگرِ مشخص‌شده توسط \fB\-e\fP \fIename\fP روی فایلی حاوی این رویدادهای تاریخچه فراخوانی می‌شود\&. اگر \fB\-e\fP داده نشود، از مقدار پارامتر \fBFCEDIT\fP استفاده می‌شود؛ اگر تنظیم نشده باشد از مقدار پارامتر \fBEDITOR\fP استفاده می‌شود؛ اگر آن هم تنظیم نشده باشد، یک پیش‌فرض توکار، معمولاً `\fBvi\fP\&' استفاده می‌شود\&. اگر \fIename\fP برابر با `\fB\-\fP' باشد، هیچ ویرایشگری فراخوانی نمی‌شود\&. پس از اتمام ویرایش، دستورِ ویرایش‌شده اجرا می‌شود\&. .PP پرچم `\fB\-s\fP\&' معادل `\fB\-e \-\fP' است\&. پرچم \fB\-r\fP ترتیب رویدادها را معکوس می‌کند و پرچم \fB\-n\fP هنگام فهرست کردن، شماره رویدادها را حذف می‌کند\&. .PP همچنین هنگام فهرست کردن، .PD 0 .TP \fB\-d\fP برچسب‌های زمان را برای هر رویداد چاپ می‌کند .TP \fB\-f\fP برچسب‌های کامل زمان\-تاریخ را در قالب آمریکایی `\fIMM\fP\fB/\fP\fIDD\fP\fB/\fP\fIYY\fP \fIhh\fP\fB:\fP\fImm\fP\&' چاپ می‌کند .TP \fB\-E\fP برچسب‌های کامل زمان\-تاریخ را در قالب اروپایی `\fIdd\fP\fB\&.\fP\fImm\fP\fB\&.\fP\fIyyyy\fP \fIhh\fP\fB:\fP\fImm\fP\&' چاپ می‌کند .TP \fB\-i\fP برچسب‌های کامل زمان\-تاریخ را در قالب ISO8601 `\fIyyyy\fP\fB\-\fP\fImm\fP\fB\-\fP\fIdd\fP \fIhh\fP\fB:\fP\fImm\fP\&' چاپ می‌کند .TP \fB\-t\fP \fIfmt\fP برچسب‌های زمان و تاریخ را در قالب مشخص‌شده چاپ می‌کند؛ \fIfmt\fP توسط تابع strftime با افزونه‌های zsh شرح‌داده‌شده برای قالب خط اعلان \fB%D{\fP\fIstring\fP\fB}\fP در بخش EXPANSION OF PROMPT SEQUENCES در \fIzshmisc\fP(1) قالب‌بندی می‌شود\&. رشته قالب‌بندی‌شده حاصل نباید بیش از 256 نویسه باشد، در غیر این صورت چاپ نخواهد شد .PP .TP \fB\-D\fP زمان‌های سپری‌شده را چاپ می‌کند؛ می‌تواند با یکی از گزینه‌های بالا ترکیب شود .PD .PP دستور `\fBfc \-p\fP\&' فهرست تاریخچه فعلی را در یک پشته (stack) قرار داده و به یک فهرست تاریخچه جدید تغییر وضعیت می‌دهد\&. اگر گزینه \fB\-a\fP نیز مشخص شده باشد، این فهرست تاریخچه هنگام خروج از حوزه تابع فعلی به طور خودکار از پشته بیرون کشیده می‌شود (pop)، که راهکاری بسیار بهتر از ایجاد یک تابع trap برای فراخوانی دستی `\fBfc \-P\fP\&' است\&. اگر هیچ آرگومانی مشخص نشود، فهرست تاریخچه خالی رها می‌شود، \fB$HISTFILE\fP لغو مقدار شده، و \fB$HISTSIZE\fP و \fB$SAVEHIST\fP روی مقادیر پیش‌فرض خود تنظیم می‌شوند\&. اگر یک آرگومان داده شود، \fB$HISTFILE\fP روی آن نام فایل تنظیم می‌شود، \fB$HISTSIZE\fP و \fB$SAVEHIST\fP بدون تغییر باقی می‌مانند، و فایل تاریخچه (در صورت وجود) برای مقداردهی اولیه فهرست جدید خوانده می‌شود\&. اگر آرگومان دوم مشخص شود، \fB$HISTSIZE\fP و \fB$SAVEHIST\fP در عوض روی همان مقدار عددی مشخص‌شده تنظیم می‌شوند\&. در نهایت، اگر آرگومان سوم مشخص شود، \fB$SAVEHIST\fP روی مقداری مجزا از \fB$HISTSIZE\fP تنظیم می‌شود\&. شما آزاد هستید تا این مقادیر محیطی را برای فهرست تاریخچه جدید به هر نحوی که می‌خواهید تغییر دهید تا فهرست تاریخچه جدید را دستکاری کنید\&. .PP دستور `\fBfc \-P\fP\&' فهرست تاریخچه را به فهرست قدیمی‌تری که توسط `\fBfc \-p\fP' ذخیره شده بود بازمی‌گرداند\&. فهرست فعلی پیش از نابودی، در \fB$HISTFILE\fP خود ذخیره می‌شود (البته با این فرض که \fB$HISTFILE\fP و \fB$SAVEHIST\fP به درستی تنظیم شده باشند)\&. مقادیر \fB$HISTFILE\fP، \fB$HISTSIZE\fP، و \fB$SAVEHIST\fP به مقادیری که هنگام فراخوانی `\fBfc \-p\fP\&' داشتند بازگردانده می‌شوند\&. توجه داشته باشید که این بازیابی می‌تواند با «local» کردن این متغیرها تداخل داشته باشد، بنابراین بهترین راهکار این است که از اعلان محلی (local) این متغیرها در توابعی که از `\fBfc \-p\fP\&' استفاده می‌کنند خودداری کنید\&. ترکیب امنِ تضمین‌شده دیگر، اعلان این متغیرها به صورت محلی در ابتدای تابع شما و استفاده از گزینه خودکار (\fB\-a\fP) به همراه `\fBfc \-p\fP\&' است\&. در نهایت، توجه داشته باشید که اگر لازم باشد پیش از خروج تابع این کار را انجام دهید، بیرون کشیدن دستی موردی که برای خروج خودکار نشانه‌گذاری شده، کاملاً مجاز است\&..PP دستور `\fBfc \-R\fP\&' تاریخچه را از فایل داده‌شده می‌خواند، `\fBfc \-W\fP\&' تاریخچه را در فایل داده‌شده می‌نویسد، و `\fBfc \-A\fP\&' تاریخچه را به فایل داده‌شده ضمیمه می‌کند\&. اگر نام فایلی مشخص نشود، \fB$HISTFILE\fP فرض می‌شود\&. اگر گزینهٔ \fB\-I\fP به \fB\-R\fP اضافه شود، تنها رویدادهایی که هنوز در فهرست داخلی تاریخچه وجود ندارند افزوده می‌شوند\&. اگر گزینهٔ \fB\-I\fP به \fB\-A\fP یا \fB\-W\fP اضافه شود، تنها آن رویدادهایی ضمیمه یا نوشته می‌شوند که از زمان آخرین ضمیمه‌سازی/نوشتنِ افزایشی به فایل تاریخچه جدید باشند\&. در هر صورت، فایل ایجادشده بیش از \fB$SAVEHIST\fP مدخل نخواهد داشت\&. .RE .TP .PD 0 \fBfg\fP [ \fIjob\fP \&.\&.\&. ] .TP .PD \fIjob\fP \&.\&.\&. هر \fIjob\fP مشخص‌شده را به نوبت به پیش‌زمینه می‌آورد\&. اگر هیچ \fIjob\fPی مشخص نشود، کار فعلی از سر گرفته می‌شود\&. .TP \fBfloat\fP [ {\fB+\fP|\fB\-\fP}\fBHghlprtux\fP ] [ {\fB+\fP|\fB\-\fP}\fBEFLRZ\fP [ \fIn\fP ] ] [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] معادل با \fBtypeset \-E\fP است، با این تفاوت که گزینه‌های نامربوط به اعداد ممیز شناور مجاز نیستند\&. .TP .PD 0 \fBfunctions\fP [ {\fB+\fP|\fB\-\fP}\fBUkmtTuWz\fP ] [ \fB\-x\fP \fInum\fP ] [ \fIname\fP \&.\&.\&. ] .TP .PD 0 \fBfunctions \-c\fP \fIoldfn\fP \fInewfn\fP .TP .PD 0 \fBfunctions \-M\fP [\fB\-s\fP] \fImathfn\fP [ \fImin\fP [ \fImax\fP [ \fIshellfn\fP ] ] ] .TP .PD 0 \fBfunctions \-M\fP [ \fB\-m\fP \fIpattern\fP \&.\&.\&. ] .TP .PD \fBfunctions +M\fP [ \fB\-m\fP ] \fImathfn\fP \&.\&.\&. معادل با \fBtypeset \-f\fP است، به استثنای گزینه‌های \fB\-c\fP، \fB\-x\fP، \fB\-M\fP و \fB\-W\fP\&. برای \fBfunctions \-u\fP و \fBfunctions \-U\fP، \fBautoload\fP را ببینید که گزینه‌های بیشتری ارائه می‌دهد\&. برای \fBfunctions \-t\fP و \fBfunctions \-T\fP، به \fBtypeset \-f\fP مراجعه کنید\&. .RS .PP گزینهٔ \fB\-x\fP مشخص می‌کند که در خروجی هر تابعی، هر نویسهٔ تبِ ابتدای خط برای تورفتگی که توسط شل جهت نمایش ساختار نحوی افزوده شده است، به تعداد مشخص‌شدهٔ \fInum\fP با فاصله (space) جایگزین شود\&. \fInum\fP همچنین می‌تواند 0 باشد تا از تمام تورفتگی‌ها جلوگیری شود\&. .PP گزینهٔ \fB\-W\fP گزینهٔ \fBWARN_NESTED_VAR\fP را تنها برای تابع یا توابع نام‌برده فعال می‌کند\&. این گزینه در آغاز توابع تو در تو (به‌جز توابع ناشناس) غیرفعال می‌شود مگر اینکه تابع فراخوانی‌شده نیز ویژگی \fB\-W\fP را داشته باشد\&. .PP گزینهٔ \fB\-c\fP باعث کپی شدن \fIoldfn\fP در \fInewfn\fP می‌شود\&. این کپی در داخل به صورت بهینه و با شمارش ارجاع (reference counting) مدیریت می‌شود\&. اگر \fIoldfn\fP برای بارگذاری خودکار نشانه‌گذاری شده باشد، ابتدا بارگذاری می‌شود و اگر این کار با شکست مواجه شود کپی نیز با شکست مواجه خواهد شد\&. پس از آن، هر یک از توابع می‌توانند بدون تأثیر بر دیگری بازتعریف شوند\&. یک الگوی معمول این است که \fIoldfn\fP نام یک تابع شل کتابخانه‌ای است که سپس بازتعریف می‌شود تا \fBnewfn\fP را فراخوانی کند، و بدین ترتیب نسخهٔ تغییریافته‌ای از تابع مستقر می‌گردد\&. .PP \fIپرچم‌های \fP\fB\-M\fP\fI و \fP\fB+M\fP .PP استفاده از گزینهٔ \fB\-M\fP نمی‌تواند با هیچ‌یک از گزینه‌هایی که توسط \fBtypeset \-f\fP مدیریت می‌شوند ترکیب شود\&. .PP دستور \fBfunctions \-M\fP \fImathfn\fP، نام \fImathfn\fP را به عنوان یک تابع ریاضی تعریف می‌کند که در تمام اَشکال عبارت‌های حسابی شناخته می‌شود؛ بخش `Arithmetic Evaluation\&' در \fIzshmisc\fP(1) را ببینید\&. به‌طور پیش‌فرض \fImathfn\fP می‌تواند هر تعداد آرگومان جداشده با کاما دریافت کند\&. اگر \fImin\fP مشخص شده باشد، باید دقیقاً \fImin\fP آرگومان داشته باشد؛ اگر \fImin\fP و \fImax\fP هر دو مشخص شده باشند، باید حداقل \fImin\fP و حداکثر \fImax\fP آرگومان داشته باشد\&. \fImax\fP می‌تواند \-1 باشد تا مشخص کند هیچ حد بالایی وجود ندارد\&. .PP به‌طور پیش‌فرض این تابع توسط یک تابع شل هم‌نام پیاده‌سازی می‌شود؛ اگر \fIshellfn\fP مشخص شده باشد، نام تابع شل متناظر را تعیین می‌کند در حالی که \fImathfn\fP همان نامِ مورد استفاده در عبارت‌های حسابی باقی می‌ماند\&. نام تابع در \fB$0\fP برابر با \fImathfn\fP است (نه \fIshellfn\fP آن‌گونه که معمولاً انتظار می‌رود)، به شرط آنکه گزینهٔ \fBFUNCTION_ARGZERO\fP فعال باشد\&. پارامترهای مکانی در تابع شل با آرگومان‌های فراخوانی تابع ریاضی متناظر هستند\&. .PP نتیجهٔ آخرین عبارت حسابی ارزیابی‌شده در داخل تابع شل، حاصل تابع ریاضی را به دست می‌دهد\&. این موضوع محدود به جایگزینی‌های حسابی به شکل \fB$((\fP\fI\&.\&.\&.\fP\fB))\fP نیست، بلکه شامل عبارت‌های حسابی ارزیابی‌شده به هر روش دیگر نیز می‌شود، از جمله توسط دستور توکار \fBlet\fP، توسط گزاره‌های \fB((\fP\fI\&.\&.\&.\fP\fB))\fP، و حتی توسط دستور توکار \fBreturn\fP و توسط اندیس‌های آرایه\&. بنابراین، باید مراقبت کرد تا از ساختارهای نحوی که پس از ارزیابی حاصل مورد نظرِ تابع، ارزیابی حسابی انجام می‌دهند، استفاده نشود\&. به عنوان مثال: .PP .RS .nf \fB# WRONG zmath_cube() { (( $1 * $1 * $1 )) return 0 } functions \-M cube 1 1 zmath_cube print $(( cube(3) ))\fP .fi .RE .PP این دستور به دلیل وجود \fBreturn\fP مقدار `\fB0\fP\&' را چاپ خواهد کرد\&. .PP کامنت کردنِ دستور \fBreturn\fP به مشکل متفاوتی منجر می‌شود: گزارهٔ \fB((\fP\fI\&.\&.\&.\fP\fB))\fP آخرین گزاره در تابع خواهد شد، بنابراین \fIوضعیت بازگشت\fP (\fB$?\fP) تابع در هر زمانی که \fIنتیجهٔ حسابی\fP تابع (به صورت عددی) صفر باشد، غیرصفر (نشان‌دهندهٔ شکست) خواهد بود: .PP .RS .nf \fB# WRONG zmath_cube() { (( $1 * $1 * $1 )) } functions \-M cube 1 1 zmath_cube print $(( cube(0) ))\fP .fi .RE .PP در عوض، می‌توان از دستور توکار \fBtrue\fP استفاده کرد: .PP .RS .nf \fB# RIGHT zmath_cube() { (( $1 * $1 * $1 )) true } functions \-M cube 1 1 zmath_cube print $(( cube(3) ))\fP .fi .RE .PP اگر گزینهٔ اضافی \fB\-s\fP به \fBfunctions \-M\fP داده شود، آرگومانِ تابع یک رشتهٔ منفرد است: هر چیزی میان پرانتز باز و پرانتز بستهٔ متناظر به عنوان یک آرگومان منفرد به تابع منتقل می‌شود، حتی اگر حاوی کاما یا فاصله‌های خالی باشد\&. بنابراین، مشخص‌کننده‌های حداقل و حداکثر آرگومان در صورت تعیین شدن باید 1 باشند\&. یک فهرست آرگومان خالی به عنوان رشته‌ای با طول صفر منتقل می‌شود\&. بدین ترتیب، تابع رشته‌ایِ زیر یک آرگومان منفرد را شامل کاماها دریافت می‌کند و 11 را چاپ می‌کند: .PP .RS .nf \fBstringfn() { (( $#1 )); true } functions \-Ms stringfn print $(( stringfn(foo,bar,rod) ))\fP .fi .RE .PP دستور \fBfunctions \-M\fP بدون هیچ آرگومانی، تمامی این توابعِ تعریف‌شده توسط کاربر را در همان شکلِ تعریف فهرست می‌کند\&. با گزینهٔ اضافی \fB\-m\fP و فهرستی از آرگومان‌ها، تمامی توابعی که \fImathfn\fP آن‌ها با یکی از آرگومان‌های الگو مطابقت داشته باشد فهرست می‌شوند\&. .PP دستور \fBfunction +M\fP فهرست توابع ریاضی را حذف می‌کند؛ با گزینهٔ اضافی \fB\-m\fP آرگومان‌ها به عنوان الگو در نظر گرفته می‌شوند و تمامی توابعی که \fImathfn\fP آن‌ها با الگو تطابق دارد حذف می‌شوند\&. توجه داشته باشید که تابع شلِ پیاده‌سازی‌کنندهٔ این رفتار حذف نمی‌شود (صرف‌نظر از اینکه نام آن با \fImathfn\fP همخوانی داشته باشد یا نه)\&. .RE .TP \fBgetcap\fP بخش `The zsh/cap Module\&' در \fIzshmodules\fP(1) را ببینید\&. .TP \fBgetln\fP [ \fB\-AclneE\fP ] \fIname\fP \&.\&.\&. بالاترین مقدار را از پشتهٔ بافر می‌خواند و در پارامتر شل \fIname\fP قرار می‌دهد\&. معادل با \fBread \-zr\fP است\&..TP \fBgetopts\fP \fIoptstring\fP \fIname\fP [ \fIarg\fP \&.\&.\&. ] \fIarg\fPها را برای یافتن گزینه‌های مجاز بررسی می‌کند\&. اگر \fIarg\fPها حذف شده باشند، از پارامترهای مکانی استفاده می‌شود\&. یک آرگومان گزینهٔ معتبر با یک `\fB+\fP\&' یا یک `\fB\-\fP' آغاز می‌شود\&. آرگومانی که با یک `\fB+\fP\&' یا یک `\fB\-\fP' شروع نشود، یا آرگومان `\fB\-\fP\fB\-\fP'، به گزینه‌ها پایان می‌دهد\&. توجه داشته باشید که یک `\fB\-\fP\&' منفرد، آرگومان گزینهٔ معتبر به‌شمار نمی‌آید\&. \fIoptstring\fP شامل حروفی است که \fBgetopts\fP آن‌ها را بازمی‌شناسد\&. اگر پس از یک حرف یک `\fB:\fP\&' بیاید، آن گزینه نیازمند یک آرگومان است\&. گزینه‌ها می‌توانند با فاصله‌ها از آرگومان جدا شوند\&. .RS .PP هر بار که فراخوانی شود، \fBgetopts\fP نویسهٔ گزینهٔ یافته‌شده را در پارامتر شل \fIname\fP قرار می‌دهد، که اگر \fIarg\fP با یک `\fB+\fP\&' آغاز شده باشد، یک `\fB+\fP\&' به ابتدای آن افزوده می‌شود\&. نمایهٔ \fIarg\fP بعدی در \fBOPTIND\fP ذخیره می‌شود\&. آرگومان گزینه، در صورت وجود، در \fBOPTARG\fP ذخیره می‌گردد\&. .PP نخستین گزینه‌ای که بررسی می‌شود را می‌توان با مقداردهی صریح به \fBOPTIND\fP تغییر داد\&. \fBOPTIND\fP دارای مقدار اولیهٔ \fB1\fP است و معمولاً هنگام ورود به یک تابع شل روی \fB1\fP تنظیم شده و پس از خروج بازیابی می‌شود\&. (گزینهٔ \fBPOSIX_BUILTINS\fP این رفتار را غیرفعال کرده و همچنین شیوهٔ محاسبهٔ مقدار را برای مطابقت با سایر شل‌ها تغییر می‌دهد\&.) \fBOPTARG\fP بازنشانی نمی‌شود و مقدار خود از تازه‌ترین فراخوانی \fBgetopts\fP را حفظ می‌کند\&. اگر هر یک از \fBOPTIND\fP یا \fBOPTARG\fP به‌طور صریح لغو مقدار (unset) شود، بدون مقدار باقی می‌ماند و نمایه یا آرگومان گزینه ذخیره نمی‌شود\&. در این حالت، خود گزینه همچنان در \fIname\fP ذخیره می‌شود\&. .PP وجود یک `\fB:\fP\&' در ابتدای \fIoptstring\fP باعث می‌شود \fBgetopts\fP حرفِ هر گزینهٔ نامعتبر را در \fBOPTARG\fP ذخیره کرده و مقدار \fIname\fP را برای گزینه‌های ناشناخته به `\fB?\fP\&' و در صورت مفقود بودن یک آرگومان الزامی به `\fB:\fP' تنظیم کند\&. در غیر این صورت، وقتی گزینه‌ای نامعتبر باشد، \fBgetopts\fP متغیر \fIname\fP را روی `\fB?\fP\&' قرار داده و یک پیام خطا چاپ می‌کند\&. زمانی که هیچ گزینهٔ دیگری باقی نمانده باشد، وضعیت خروج غیرصفر خواهد بود\&. .RE .TP \fBhash\fP [ \fB\-Ldfmrv\fP ] [ \fIname\fP[\fB=\fP\fIvalue\fP] ] \&.\&.\&. دستور \fBhash\fP را می‌توان برای اصلاح مستقیم محتویات جدول درهم‌سازی دستورها، و جدول درهم‌سازی دایرکتوری‌های نام‌گذاری‌شده استفاده کرد\&. معمولاً این جدول‌ها با تغییر دادن \fBPATH\fP (برای جدول درهم‌سازی دستورها) یا با ایجاد پارامترهای شل مناسب (برای جدول درهم‌سازی دایرکتوری‌های نام‌گذاری‌شده) دستخوش تغییر می‌شوند\&. انتخاب اینکه با کدام جدول درهم‌سازی کار شود بر عهدهٔ گزینهٔ \fB\-d\fP است؛ بدون این گزینه از جدول درهم‌سازی دستورها استفاده می‌شود، و همراه با این گزینه، از جدول درهم‌سازی دایرکتوری‌های نام‌گذاری‌شده استفاده خواهد شد\&. .RS .PP یک \fIname\fP دستور که با \fB/\fP یا با یک مسیر نسبی که با \fB\&./\fP یا \fB\&.\&./\fP آغاز می‌شود، هرگز با جستجو در جدول درهم‌سازی دستورها اجرا نمی‌شود، و این موارد را تنها می‌توان با استفادهٔ صریح از دستور \fBhash\fP به جدول اضافه کرد\&. چنین دستوری همواره با جستجوی مستقیم در سیستم‌فایل یافت می‌شود\&. .PP در صورت عدم ارائهٔ آرگومان و عدم استفاده از گزینه‌های \fB\-r\fP یا \fB\-f\fP، جدول درهم‌سازی انتخاب‌شده به‌طور کامل فهرست خواهد شد\&. .PP گزینهٔ \fB\-r\fP باعث خالی شدن جدول درهم‌سازی انتخاب‌شده می‌شود\&. این جدول متعاقباً به روال معمول بازسازی خواهد شد\&. گزینهٔ \fB\-f\fP باعث می‌شود جدول درهم‌سازی انتخاب‌شده بی‌درنگ و به‌طور کامل بازسازی گردد\&. برای جدول درهم‌سازی دستورها، این کار تمامی دایرکتوری‌های مطلق موجود در \fBPATH\fP (و \fIفقط\fP همان‌ها) را درهم‌سازی می‌کند، و برای جدول درهم‌سازی دایرکتوری‌های نام‌گذاری‌شده، دایرکتوری خانگی همهٔ کاربران را اضافه می‌کند\&. این دو گزینه همراه با هیچ آرگومانی نمی‌توانند به کار روند\&. هر دو گزینه، عناصر افزوده‌شده به‌طور صریح را حذف می‌کنند\&. .PP گزینهٔ \fB\-m\fP باعث می‌شود آرگومان‌ها به عنوان الگو (که باید در نقل‌قول قرار گیرند) در نظر گرفته شوند و عناصری از جدول درهم‌سازی که با آن الگوها مطابقت دارند چاپ شوند\&. این تنها راه برای نمایش گزینش محدودی از عناصر جدول درهم‌سازی است\&. .PP به ازای هر \fIname\fP که دارای یک \fIvalue\fP متناظر است، `\fIname\fP\&' را در جدول درهم‌سازی انتخاب‌شده قرار می‌دهد و آن را به نام‌مسیر `\fIvalue\fP\&' مرتبط می‌سازد\&. در جدول درهم‌سازی دستورها، این بدان معناست که هرگاه `\fIname\fP\&' به عنوان آرگومان دستور استفاده شود، شل تلاش می‌کند تا فایل ارائه‌شده توسط `\fIvalue\fP\&' را اجرا کند\&. در جدول درهم‌سازی دایرکتوری‌های نام‌گذاری‌شده، بدین معناست که می‌توان به `\fIvalue\fP\&' به‌صورت `\fB~\fP\fIname\fP' ارجاع داد\&. .PP به ازای هر \fIname\fP بدون \fIvalue\fP متناظر، تلاش می‌کند \fIname\fP را به جدول درهم‌سازی بیفزاید، و به شیوهٔ معمول برای آن جدول درهم‌سازی بررسی می‌کند که \fBvalue\fP مناسب چیست\&. اگر \fBvalue\fP مناسبی پیدا نشود، جدول درهم‌سازی بدون تغییر خواهد ماند\&. .PP گزینهٔ \fB\-v\fP باعث می‌شود ورودی‌های جدول درهم‌سازی همان‌طور که از طریق تعیین صریح اضافه می‌شوند، فهرست گردند\&. در صورت استفاده همراه با \fB\-f\fP هیچ تأثیری ندارد\&. .PP اگر پرچم \fB\-L\fP داده شده باشد، هر ورودی جدول درهم‌سازی در قالب یک فراخوانی به hash چاپ می‌شود\&. .RE .TP \fBhistory\fP همان \fBfc \-l\fP است\&. .TP \fBinteger\fP [ {\fB+\fP|\fB\-\fP}\fBHghlprtux\fP ] [ {\fB+\fP|\fB\-\fP}\fBLRZi\fP [ \fIn\fP ] ] [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] معادل \fBtypeset \-i\fP است، با این تفاوت که گزینه‌های نامربوط به اعداد صحیح مجاز نیستند\&. .TP .PD 0 \fBjobs\fP [ \fB\-dlprs\fP ] [ \fIjob\fP \&.\&.\&. ] .TP .PD \fBjobs \-Z\fP \fIstring\fP اطلاعات هر کار مشخص‌شده، یا در صورت حذف \fIjob\fP تمامی کارها را فهرست می‌کند\&. پرچم \fB\-l\fP شناسه‌های فرایند و پرچم \fB\-p\fP گروه‌های فرایند را فهرست می‌کند\&. اگر پرچم \fB\-r\fP مشخص شده باشد، تنها کارهای در حال اجرا فهرست می‌شوند و اگر پرچم \fB\-s\fP داده شود، فقط کارهای متوقف‌شده نشان داده خواهند شد\&. اگر پرچم \fB\-d\fP داده شود، دایرکتوری‌ای که کار از آن آغاز شده است (که ممکن است دایرکتوری فعلی کار نباشد) نیز نشان داده خواهد شد\&. .RS .PP گزینهٔ \fB\-Z\fP فضای آرگومان و محیط شل را با رشتهٔ ارائه‌شده جایگزین می‌کند، که در صورت لزوم برای جا شدن کوتاه می‌شود\&. این مورد معمولاً در خروجی‌های \fBps\fP (\fIps\fP(1)) قابل مشاهده است\&. این ویژگی معمولاً توسط دیمن‌ها برای نشان دادن وضعیتشان استفاده می‌شود\&. .PP کنترل کامل کار تنها در شل تعاملی سطح بالا (اصلی) در دسترس است، نه در دستورهایی که در سمت چپ خط‌لوله‌ها یا درون ساختار \fB(\fP\fI\&.\&.\&.\fP\fB)\fP اجرا می‌شوند\&. با این حال، یک تصویر لحظه‌ای از وضعیت کار در آن نقطه گرفته می‌شود، بنابراین هنوز هم امکان استفاده از دستور داخلی \fBjobs\fP یا هر پارامتری که اطلاعات کار را فراهم می‌کند وجود دارد\&. این دستور اطلاعات مربوط به وضعیت کارها را در نقطه‌ای که زیرشل ایجاد شده است ارائه می‌دهد\&. اگر فرایندهای پس‌زمینه درون زیرشل ایجاد شوند، به جای آن اطلاعات مربوط به آن فرایندها ارائه خواهد شد\&. .PP برای نمونه، .PP .RS .nf \fBsleep 10 & # Job in background ( # Shell forks jobs # Shows information about "sleep 10 &" sleep 5 & # Process in background (no job control) jobs # Shows information about "sleep 5 &" )\fP .fi .RE .RE .TP .PD 0 \fBkill\fP [ \fB\-s\fP \fIsignal_name\fP | \fB\-n\fP \fIsignal_number\fP | \fB\-\fP\fIsig\fP ] [ \fB\-q\fP \fIvalue\fP ] \fIjob\fP \&.\&.\&. .TP .PD 0 \fBkill\fP \fB\-l\fP [ \fIsig\fP \&.\&.\&. ] .TP .PD \fBkill\fP \fB\-L\fP سیگنال \fBSIGTERM\fP یا سیگنال مشخص‌شده را به کارها یا فرایندهای داده‌شده ارسال می‌کند\&. سیگنال‌ها با شماره یا بر اساس نام، با یا بدون پیشوند `\fBSIG\fP\&'، مشخص می‌شوند\&. اگر سیگنال ارسالی `\fBKILL\fP\&' یا `\fBCONT\fP' نباشد، در صورتی که کار متوقف باشد، یک سیگنال `\fBCONT\fP\&' به آن ارسال خواهد شد\&. آرگومان \fIjob\fP می‌تواند شناسهٔ فرایند کاری باشد که در فهرست کارها نیست\&. در شکل دوم، \fBkill \-l\fP، اگر \fIsig\fP مشخص نشده باشد، نام سیگنال‌ها فهرست می‌شوند\&. در غیر این صورت، برای هر \fIsig\fP که یک نام است، شمارهٔ سیگنال متناظر فهرست می‌شود\&. برای هر \fIsig\fP که یک شمارهٔ سیگنال یا عددی نمایانگر وضعیت خروج فرایندی است که توسط یک سیگنال متوقف شده یا خاتمه یافته است، نام سیگنال چاپ می‌شود\&. شکل پایانی با \fB\-L\fP هر نام سیگنال را همراه با شمارهٔ متناظر آن فهرست می‌کند\&. .RS .PP در برخی سیستم‌ها، نام‌های سیگنال جایگزین برای چند سیگنال مجاز است\&. نمونه‌های معمول \fBSIGCHLD\fP و \fBSIGCLD\fP یا \fBSIGPOLL\fP و \fBSIGIO\fP هستند، با این فرض که به همان شمارهٔ سیگنال متناظر باشند\&. دستور \fBkill \-l\fP تنها فرم ترجیحی را فهرست می‌کند، اما \fBkill \-l\fP \fIalt\fP نشان خواهد داد که آیا فرم جایگزین به یک شمارهٔ سیگنال مطابقت دارد یا خیر\&. برای نمونه، در لینوکس \fBkill \-l IO\fP و \fBkill \-l POLL\fP هر دو 29 را در خروجی نمایش می‌دهند، بنابراین \fBkill \-IO\fP و \fBkill \-POLL\fP اثر یکسانی دارند\&. .PP بسیاری از سیستم‌ها اجازه می‌دهند شناسه‌های فرایند برای خاتمه دادن به یک گروه فرایند منفی، یا برای خاتمه دادن به گروه فرایند جاری صفر باشند\&. .PP گزینهٔ \fB\-q\fP امکان ارسال یک مقدار عدد صحیح همراه با سیگنال را در سیستم‌هایی که از \fBsigqueue()\fP پشتیبانی می‌کنند، فراهم می‌سازد\&. .RE.TP \fBlet\fP \fIarg\fP \&.\&.\&. ارزیابی هر \fIarg\fP به عنوان یک عبارت حسابی\&. برای توصیف عبارت‌های حسابی، بخش `Arithmetic Evaluation\&' در \fIzshmisc\fP(1) را ببینید\&. وضعیت خروج برابر ۰ خواهد بود اگر مقدار آخرین عبارت غیرصفر باشد، ۱ اگر صفر باشد، و ۲ اگر خطایی رخ دهد\&. .TP \fBlimit\fP [ \fB\-hs\fP ] [ \fIresource\fP [ \fIlimit\fP ] ] \&.\&.\&. تنظیم یا نمایش محدودیت‌های منابع\&. مگر اینکه پرچم \fB\-s\fP داده شده باشد، محدودیت فقط بر فرزندان پوسته اعمال می‌شود\&. اگر \fB\-s\fP بدون آرگومان‌های دیگر داده شود، محدودیت‌های منابع پوسته کنونی بر روی محدودیت‌های منابع از پیش تنظیم‌شده برای فرزندان تنظیم می‌گردد\&. .RS .PP اگر \fIlimit\fP مشخص نشده باشد، محدودیت کنونی اعمال‌شده بر \fIresource\fP چاپ می‌شود، در غیر این صورت محدودیت به مقدار مشخص‌شده تنظیم می‌گردد\&. اگر پرچم \fB\-h\fP داده شده باشد، به جای محدودیت‌های نرم از محدودیت‌های سخت استفاده می‌شود\&. اگر هیچ \fIresource\fP مشخص نشده باشد، تمام محدودیت‌ها چاپ می‌شوند\&. .PP هنگام پیمایش چندین منبع، اگر پوسته آرگومانی با ساختار نادرست را تشخیص دهد بلافاصله متوقف خواهد شد\&. با این حال، اگر به دلیلی دیگر در تنظیم یک محدودیت شکست بخورد، به تلاش برای تنظیم محدودیت‌های باقی‌مانده ادامه خواهد داد\&. .PP \fIresource\fP می‌تواند یکی از موارد زیر باشد: .PP .PD 0 .TP \fBaddressspace\fP حداکثر مقدار فضای آدرس استفاده‌شده\&. .TP \fBaiomemorylocked\fP حداکثر مقدار حافظه قفل‌شده در RAM برای عملیات‌های AIO\&. .TP \fBaiooperations\fP حداکثر تعداد عملیات‌های AIO\&. .TP \fBcachedthreads\fP حداکثر تعداد نخ‌های (threads) کَش‌شده\&. .TP \fBcoredumpsize\fP حداکثر اندازه رونوشت حافظه (core dump)\&. .TP \fBcputime\fP حداکثر ثانیه‌های پردازنده (CPU) به ازای هر فرایند\&. .TP \fBdatasize\fP حداکثر اندازه داده (شامل پشته) برای هر فرایند\&. .TP \fBdescriptors\fP حداکثر مقدار برای یک توصیف‌کننده فایل (file descriptor)\&. .TP \fBfilesize\fP بزرگ‌ترین اندازه مجاز برای یک تک‌فایل\&. .TP \fBkqueues\fP حداکثر تعداد صف‌های کا (kqueues) تخصیص‌یافته\&. .TP \fBmaxfilelocks\fP حداکثر تعداد قفل‌های فایل\&. .TP \fBmaxproc\fP حداکثر تعداد فرایندها\&. .TP \fBmaxpthreads\fP حداکثر تعداد نخ‌ها به ازای هر فرایند\&. .TP \fBmemorylocked\fP حداکثر مقدار حافظه قفل‌شده در RAM\&. .TP \fBmemoryuse\fP حداکثر اندازه مجموعه مقیم (resident set size)\&. .TP \fBmsgqueue\fP حداکثر تعداد بایت‌ها در صف‌های پیام POSIX\&. .TP \fBnice\fP حداکثر مقدار nice\&. .TP \fBpipebuf\fP حداکثر اندازه بافرها برای لوله‌ها/fifoها\&. .TP \fBposixlocks\fP حداکثر تعداد قفل‌های POSIX به ازای هر کاربر\&. .TP \fBpseudoterminals\fP حداکثر تعداد شبه‌ترمینال‌ها (pseudo-terminals)\&. .TP \fBresident\fP حداکثر اندازه مجموعه مقیم (resident set size)\&. .TP \fBrt_priority\fP حداکثر اولویت بلادرنگ (real-time priority)\&. .TP \fBrt_time\fP حداکثر زمان پردازنده (CPU) بدون فراخوانی سیستمی مسدودکننده\&. .TP \fBsigpending\fP حداکثر تعداد سیگنال‌های معلق\&. .TP \fBsockbufsize\fP حداکثر اندازه تمامی بافرهای سوکت\&. .TP \fBstacksize\fP حداکثر اندازه پشته برای هر فرایند\&. .TP \fBswapsize\fP حداکثر مقدار فضای swap استفاده‌شده\&. .TP \fBumtxp\fP حداکثر تعداد اشیاء کتابخانه نخ POSIX\&. .TP \fBvmemorysize\fP حداکثر مقدار حافظه مجازی\&. .TP \fBvnodemonitors\fP حداکثر تعداد ناظرهای باز vnode\&. .PD .PP اینکه کدام یک از این محدودیت‌های منابع در دسترس هستند به سیستم بستگی دارد\&. \fIresource\fP را می‌توان به هر پیشوند یکتا و غیرمبهمی خلاصه کرد\&. همچنین می‌تواند یک عدد صحیح باشد که متناظر با عدد صحیح تعریف‌شده برای آن منبع توسط سیستم‌عامل است\&. .PP اگر آرگومان متناظر با عددی باشد که خارج از محدوده منابع پیکربندی‌شده در پوسته است، پوسته به هر حال سعی می‌کند محدودیت را بخواند یا بنویسد، و اگر این کار شکست بخورد، خطایی را گزارش خواهد داد\&. از آنجا که پوسته چنین منابعی را به طور داخلی ذخیره نمی‌کند، تلاش برای تنظیم محدودیت شکست خواهد خورد مگر اینکه گزینه \fB\-s\fP مشخص شده باشد\&. .PP \fIlimit\fP یک عدد است با یک ضریب مقیاس اختیاری، به شرح زیر: .PP .PD 0 .TP \fIn\fP\fBh\fP ساعت .TP \fIn\fP\fBk\fP کیلوبایت (پیش‌فرض) .TP \fIn\fP\fBm\fP مگابایت یا دقیقه .TP \fIn\fP\fBg\fP گیگابایت .TP [\fImm\fP\fB:\fP]\fIss\fP دقیقه و ثانیه .PD .PP هنگامی که پوسته در حالتی برای شبیه‌سازی پوسته‌ای دیگر راه‌اندازی می‌شود، دستور \fBlimit\fP به طور پیش‌فرض در دسترس قرار نمی‌گیرد\&. این دستور را می‌توان با دستور `\fBzmodload \-F zsh/rlimits b:limit\fP\&' در دسترس قرار داد\&. .RE .TP \fBlocal\fP [ {\fB+\fP|\fB\-\fP}\fBAHUahlprtux\fP ] [ {\fB+\fP|\fB\-\fP}\fBEFLRZi\fP [ \fIn\fP ] ] [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] مشابه \fBtypeset\fP است، با این تفاوت که گزینه‌های \fB\-g\fP و \fB\-f\fP مجاز نیستند\&. در این حالت گزینه \fB\-x\fP استفاده از \fB\-g\fP را اجباری نمی‌کند، یعنی متغیرهای صادرشده (exported) برای توابع محلی خواهند ماند\&. .TP \fBlogout\fP [ \fIn\fP ] مشابه \fBexit\fP است، با این تفاوت که تنها در یک پوسته لاگین (login shell) کار می‌کند\&. .TP \fBnoglob\fP \fIsimple command\fP بخش `Precommand Modifiers\&' در \fIzshmisc\fP(1) را ببینید\&. .TP \fBpopd\fP [ \fB\-q\fP ] [ {\fB+\fP|\fB\-\fP}\fIn\fP ] یک مدخل را از پشته دایرکتوری حذف کرده و دستور \fBcd\fP را به دایرکتوری جدیدِ بالای پشته اجرا می‌کند\&. بدون آرگومان، مدخل فعلی در بالای پشته حذف می‌شود\&. آرگومانی به شکل `\fB+\fP\fIn\fP\&' یک مدخل پشته را با شمارش از سمت چپِ فهرستِ ارائه‌شده توسط دستور \fBdirs\fP، با شروع از صفر مشخص می‌کند\&. آرگومانی به شکل \fB\-\fP\fIn\fP از سمت راست می‌شمارد\&. اگر گزینه \fBPUSHD_MINUS\fP تنظیم شده باشد، معانی `\fB+\fP\&' و `\fB\-\fP\&' در این چارچوب جابه‌جا می‌شوند\&. .RS .PP اگر گزینه \fB\-q\fP (بی‌صدا یا quiet) مشخص شده باشد، تابع قلاب (hook) \fBchpwd\fP و توابع موجود در آرایه \fB$chpwd_functions\fP فراخوانی نمی‌شوند و پشته دایرکتوری جدید چاپ نمی‌شود\&. این امر برای فراخوانی‌هایی از \fBpopd\fP کاربرد دارد که محیط دیده‌شده توسط یک کاربر تعاملی را تغییر نمی‌دهند\&. .RE.TP .PD 0 \fBprint \fP[ \fB\-abcDilmnNoOpPrsSz\fP ] [ \fB\-u\fP \fIn\fP ] [ \fB\-f\fP \fIformat\fP ] [ \fB\-C\fP \fIcols\fP ] .TP .PD \fB \fP[ \fB\-v\fP \fIname\fP ] [ \fB\-xX\fP \fItabstop\fP ] [ \fB\-R\fP [ \fB\-en\fP ]] [ \fIarg\fP \&.\&.\&. ] با گزینهٔ `\fB\-f\fP\&'، آرگومان‌ها طبق آنچه در \fBprintf\fP توضیح داده شده چاپ می‌شوند\&. بدون هیچ نشانه‌ای یا با نشانهٔ `\fB\-\fP\&'، آرگومان‌ها همانند آنچه برای \fBecho\fP توصیف شده روی خروجی استاندارد چاپ می‌شوند، با تفاوت‌های زیر: توالی گریز `\fB\eM\-\fP\fIx\fP\&' (یا `\fB\eM\fP\fIx\fP') نویسهٔ \fIx\fP را متا می‌کند (بالاترین بیت را ۱ می‌کند)، `\fB\eC\-\fP\fIx\fP\&' (یا `\fB\eC\fP\fIx\fP') یک نویسهٔ کنترلی تولید می‌کند (`\fB\eC\-@\fP\&' و `\fB\eC\-?\fP' نویسه‌های NULL و delete را به دست می‌دهند)، کد نویسه در مبنای هشت با `\fB\e\fP\fINNN\fP\&' نمایش داده می‌شود (به‌جای `\fB\e0\fP\fINNN\fP\&')، و `\fB\eE\fP\&' مترادفی برای `\fB\ee\fP\&' است\&. در نهایت، اگر درون یک توالی گریز نباشد، `\fB\e\fP\&' نویسهٔ بعدی را گریزدهی کرده و خودش چاپ نمی‌شود\&. .RS .PP .PD 0 .TP .PD \fB\-a\fP چاپ آرگومان‌ها به‌طوری‌که ابتدا ستون‌ها افزایش یابند\&. تنها با گزینه‌های \fB\-c\fP و \fB\-C\fP کاربرد دارد\&. .TP \fB\-b\fP شناسایی تمام توالی‌های گریزی که برای دستور \fBbindkey\fP تعریف شده‌اند، بخش `Zle Builtins\&' را در \fIzshzle\fP(1) ببینید\&. .TP \fB\-c\fP چاپ آرگومان‌ها در قالب ستون‌ها\&. مگر اینکه \fB\-a\fP نیز داده شده باشد، آرگومان‌ها به‌طوری چاپ می‌شوند که ابتدا سطرها افزایش می‌یابند\&. .TP \fB\-C\fP \fIcols\fP چاپ آرگومان‌ها در \fIcols\fP ستون\&. مگر اینکه \fB\-a\fP نیز داده شده باشد، آرگومان‌ها به‌طوری چاپ می‌شوند که ابتدا سطرها افزایش می‌یابند\&. .TP \fB\-D\fP تلقی آرگومان‌ها به‌عنوان مسیر، و جایگزین کردن پیشوندهای دایرکتوری با عبارات \fB~\fP متناظر با نام‌های دایرکتوری در صورت امکان\&. .TP \fB\-i\fP اگر همراه با \fB\-o\fP یا \fB\-O\fP داده شود، مرتب‌سازی بدون در نظر گرفتن بزرگی و کوچکی حروف (case\-independently) انجام می‌شود\&. .TP \fB\-l\fP چاپ آرگومان‌ها در حالی که با خط جدید به‌جای فاصله از هم جدا شده‌اند\&. نکته: اگر فهرست آرگومان‌ها خالی باشد، \fBprint \-l\fP همچنان یک خط خالی در خروجی می‌دهد\&. برای چاپ یک فهرست احیاناً خالی از آرگومان‌ها به‌صورت یکی در هر خط، از \fBprint \-C1\fP استفاده کنید، مانند `\fBprint \-rC1 \-\- "$list[@]"\fP\&'\&. .TP \fB\-m\fP اولین آرگومان را به عنوان یک الگو (باید نقل‌قول شود) در نظر می‌گیرد، و آن را به همراه آرگومان‌های بعدی که با این الگو مطابقت ندارند از فهرست آرگومان‌ها حذف می‌کند\&. .TP \fB\-n\fP از اضافه کردن خط جدید به خروجی خودداری می‌کند\&. .TP \fB\-N\fP چاپ آرگومان‌ها به‌گونه‌ای که با نویسه‌های تهی (null) از هم جدا و خاتمه داده شده‌اند\&. مجدداً، `\fBprint \-rNC1 \-\- "$list[@]"\fP\&' روش متعارفی برای چاپ یک فهرست دلخواه به صورت رکوردهای جداشده با null است\&. .TP \fB\-o\fP چاپ آرگومان‌ها به‌صورت مرتب‌شده به ترتیب صعودی\&. .TP \fB\-O\fP چاپ آرگومان‌ها به‌صورت مرتب‌شده به ترتیب نزولی\&. .TP \fB\-p\fP چاپ آرگومان‌ها به ورودی هم‌روند (coprocess)\&. .TP \fB\-P\fP انبساط اعلان (prompt expansion) را انجام می‌دهد (بخش EXPANSION OF PROMPT SEQUENCES در \fIzshmisc\fP(1) را ببینید)\&. در ترکیب با `\fB\-f\fP\&'، توالی‌های گریز اعلان تنها در آرگومان‌های درون‌یابی‌شده تجزیه می‌شوند، نه درون رشتهٔ قالب\&. .TP \fB\-r\fP نادیده گرفتن قراردادهای گریز \fBecho\fP\&. .TP \fB\-R\fP شبیه‌سازی دستور \fBecho\fP در BSD، که توالی‌های گریز را پردازش نمی‌کند مگر اینکه پرچم \fB\-e\fP داده شود\&. پرچم \fB\-n\fP خط جدید پایانی را سرکوب می‌کند\&. تنها پرچم‌های \fB\-e\fP و \fB\-n\fP پس از \fB\-R\fP شناخته می‌شوند؛ تمام آرگومان‌ها و گزینه‌های دیگر چاپ خواهند شد\&. .TP \fB\-s\fP قرار دادن نتایج در فهرست تاریخچه (history) به‌جای خروجی استاندارد\&. هر آرگومان به دستور \fBprint\fP صرف‌نظر از محتوایش، به عنوان یک کلمهٔ منفرد در تاریخچه در نظر گرفته می‌شود\&. .TP \fB\-S\fP قرار دادن نتایج در فهرست تاریخچه به‌جای خروجی استاندارد\&. در این حالت تنها یک آرگومان مجاز است؛ که مانند یک خط فرمان کامل شل به کلمات تقسیم خواهد شد\&. اثر آن مشابه خواندن خط از یک فایل تاریخچه در زمانی است که گزینهٔ \fBHIST_LEX_WORDS\fP فعال باشد\&. .TP \fB\-u\fP \fIn\fP چاپ آرگومان‌ها در توصیف‌گر فایل \fIn\fP\&. .TP \fB\-v\fP \fIname\fP ذخیرهٔ آرگومان‌های چاپ‌شده به‌عنوان مقدار پارامتر \fIname\fP\&. .TP \fB\-x\fP \fItab\-stop\fP تبدیل تب‌های ابتدایی در هر خط از خروجیِ رشتهٔ چاپ‌شده با فرض یک موقعیت تب (tab stop) در هر \fItab\-stop\fP نویسه\&. این گزینه برای قالب‌بندی کدهایی که ممکن است با تب تورفتگی پیدا کرده باشند مناسب است\&. توجه داشته باشید که تب‌های ابتدایی هر آرگومانی به print، و نه فقط اولین آرگومان، باز می‌شوند، حتی اگر \fBprint\fP از فاصله‌ها برای جداسازی آرگومان‌ها استفاده کند (شمارش ستون‌ها در بین آرگومان‌ها حفظ می‌شود اما به دلیل تب‌های بازنشدهٔ قبلی ممکن است در خروجی نادرست باشد)\&. .RS .PP فرض بر این است که شروع خروجی هر دستور print با یک tab stop تراز شده است\&. در صورتی که گزینهٔ \fBMULTIBYTE\fP فعال باشد، عرض نویسه‌های چندبایتی مدیریت می‌شود\&. اگر سایر گزینه‌های قالب‌بندی فعال باشند، یعنی تراز ستونی یا سبک \fBprintf\fP، یا اگر خروجی به مکانی خاص مانند تاریخچهٔ شل یا ویرایشگر خط فرمان برود، این گزینه نادیده گرفته می‌شود\&. .RE .TP \fB\-X\fP \fItab\-stop\fP مشابه با \fB\-x\fP است، با این تفاوت که تمام تب‌های موجود در رشتهٔ چاپ‌شده باز می‌شوند\&. این گزینه زمانی مناسب است که از تب‌ها در آرگومان‌ها برای تولید قالب جدولی استفاده شود\&. .TP \fB\-z\fP پوش کردن (قراردادن) آرگومان‌ها در پشتهٔ بافر ویرایش، در حالی که با فاصله جدا شده‌اند\&. .PP اگر هر یک از `\fB\-m\fP\&'، `\fB\-o\fP' یا `\fB\-O\fP' در ترکیب با `\fB\-f\fP\&' استفاده شوند و آرگومانی وجود نداشته باشد (پس از فرایند حذف در مورد `\fB\-m\fP\&')، چیزی چاپ نمی‌شود\&. .RE .TP \fBprintf\fP [ \fB\-v\fP \fIname\fP ] \fIformat\fP [ \fIarg\fP \&.\&.\&. ] چاپ آرگومان‌ها بر اساس مشخصات قالب (\fIformat\fP)\&. قواعد قالب‌بندی همانند قواعد مورد استفاده در زبان C است\&. همان توالی‌های گریزِ \fBecho\fP در قالب نیز شناسایی می‌شوند\&. تمامی مشخصات تبدیل C که به یکی از \fBcsdiouxXeEfgGn\fP ختم می‌شوند، مدیریت می‌شوند\&. افزون بر این، می‌توان از `\fB%b\fP\&' به‌جای `\fB%s\fP\&' استفاده کرد تا توالی‌های گریز موجود در آرگومان شناسایی شوند و از `\fB%q\fP\&' می‌توان برای نقل‌قول کردن آرگومان به نحوی استفاده کرد که امکان استفادهٔ مجدد از آن به عنوان ورودی شل وجود داشته باشد\&. با مشخص‌کننده‌های قالب عددی، اگر آرگومان متناظر با یک نویسهٔ نقل‌قول شروع شود، مقدار عددی نویسهٔ پس از آن به عنوان عدد چاپی در نظر گرفته می‌شود؛ در غیر این صورت، آرگومان به عنوان یک عبارت حسابی ارزیابی می‌شود\&. برای شرح عبارت‌های حسابی، بخش `Arithmetic Evaluation\&' در \fIzshmisc\fP(1) را ببینید\&. با `\fB%n\fP\&'، آرگومان متناظر به عنوان شناساگری در نظر گرفته می‌شود که به عنوان یک پارامتر عدد صحیح ایجاد می‌شود\&. .RS .PP به‌طور معمول، مشخصات تبدیل به ترتیب روی هر آرگومان اعمال می‌شوند اما می‌توان با جایگزین کردن `\fB%\fP\&' با `\fB%\fP\fIn\fP\fB$\fP' و `\fB*\fP' با `\fB*\fP\fIn\fP\fB$\fP'، به‌طور صریح مشخص کرد که آرگومان \fIn\fPـم استفاده شود\&. توصیه می‌شود ارجاعات این سبکِ صریح را با سبک معمولی ترکیب نکنید؛ نحوهٔ مدیریت چنین سبک‌های ترکیبی ممکن است در آینده تغییر کند\&. .PP اگر آرگومان‌هایی پس از قالب‌بندی بدون استفاده باقی بمانند، رشتهٔ قالب تا زمانی که همهٔ آرگومان‌ها مصرف شوند دوباره استفاده می‌شود\&. در دستور توکار \fBprint\fP، با استفاده از گزینهٔ \fB\-r\fP می‌توان از این رفتار جلوگیری کرد\&. اگر آرگومان‌های بیشتری نسبت به آنچه مشخص شده توسط قالب مورد نیاز باشد، رفتار برنامه به‌گونه‌ای است که گویی صفر یا یک رشتهٔ خالی به عنوان آرگومان مشخص شده باشد\&. .PP گزینهٔ \fB\-v\fP باعث می‌شود خروجی به‌جای چاپ شدن، به‌عنوان مقدار پارامتر \fIname\fP ذخیره شود\&. اگر \fIname\fP یک آرایه باشد و هنگام مصرف آرگومان‌ها، رشتهٔ قالب بازاستفاده شود، برای هر بار استفاده از رشتهٔ قالب، یک عنصر آرایه به کار خواهد رفت\&. .RE .TP .PD 0 \fBpushd\fP [ \fB\-qsLP\fP ] [ \fIarg\fP ] .TP.PD 0 \fBpushd\fP [ \fB\-qsLP\fP ] \fIold\fP \fInew\fP .TP .PD \fBpushd\fP [ \fB\-qsLP\fP ] {\fB+\fP|\fB\-\fP}\fIn\fP دایرکتوری جاری را تغییر می‌دهد، و دایرکتوری جاری پیشین را روی پشتهٔ دایرکتوری قرار می‌دهد (push می‌کند)\&. در حالت اول، دایرکتوری جاری به \fIarg\fP تغییر می‌یابد\&. اگر \fIarg\fP مشخص نشده باشد، به دایرکتوری دوم روی پشته تغییر می‌یابد (یعنی دو ورودی بالای پشته جابه‌جا می‌شوند)، یا اگر گزینهٔ \fBPUSHD_TO_HOME\fP تنظیم شده باشد و یا تنها یک ورودی روی پشته وجود داشته باشد، به \fB$HOME\fP تغییر می‌یابد\&. در غیر این صورت، \fIarg\fP به همان شیوه‌ای که توسط \fBcd\fP تفسیر می‌شود، تفسیر خواهد شد\&. معنای \fIold\fP و \fInew\fP در حالت دوم نیز همانند \fBcd\fP است\&. .RS .PP حالت سوم \fBpushd\fP، دایرکتوری را با چرخاندن فهرست دایرکتوری‌ها تغییر می‌دهد\&. آرگومانی به شکل «\fB+\fP\fIn\fP» ورودی پشته را با شمارش از سمت چپ فهرستِ نمایش‌داده‌شده توسط دستور \fBdirs\fP، با شروع از صفر مشخص می‌کند\&. آرگومانی به شکل «\fB\-\fP\fIn\fP» از سمت راست شمارش می‌کند\&. اگر گزینهٔ \fBPUSHD_MINUS\fP تنظیم شده باشد، معنای «\fB+\fP» و «\fB\-\fP» در این زمینه معکوس می‌شود\&. .PP اگر گزینهٔ \fB\-q\fP (بی‌صدا) مشخص شود، تابع قلاب \fBchpwd\fP و توابع موجود در آرایهٔ \fB$chpwd_functions\fP فراخوانی نمی‌شوند و پشتهٔ دایرکتوری جدید چاپ نمی‌شود\&. این ویژگی برای فراخوانی‌هایی از \fBpushd\fP مفید است که محیط دیده‌شده توسط کاربر تعاملی را تغییر نمی‌دهند\&. .PP اگر گزینهٔ \fB\-q\fP مشخص نشده باشد و گزینهٔ شل \fBPUSHD_SILENT\fP تنظیم نشده باشد، پس از انجام \fBpushd\fP پشتهٔ دایرکتوری چاپ خواهد شد\&. .PP گزینه‌های \fB\-s\fP، \fB\-L\fP و \fB\-P\fP همان معانی موجود در دستور توکار \fBcd\fP را دارند\&. .RE .TP \fBpushln\fP [ \fIarg\fP \&.\&.\&. ] معادل \fBprint \-nz\fP\&. .TP \fBpwd\fP [ \fB\-rLP\fP ] نام مسیر مطلق دایرکتوری کاری جاری را چاپ می‌کند\&. اگر پرچم \fB\-r\fP یا \fB\-P\fP مشخص شده باشد، یا گزینهٔ \fBCHASE_LINKS\fP تنظیم شده و پرچم \fB\-L\fP داده نشده باشد، مسیر چاپ‌شده شامل پیوندهای نمادین نخواهد بود\&. .TP \fBr\fP مشابه \fBfc \-e \-\fP\&. .TP .PD 0 \fBread \fP[ \fB\-rszpqAclneE\fP ] [ \fB\-t\fP [ \fInum\fP ] ] [ \fB\-k\fP [ \fInum\fP ] ] [ \fB\-d\fP \fIdelim\fP ] .TP .PD \fB \fP[ \fB\-u\fP \fIn\fP ] [ [\fIname\fP][\fB?\fP\fIprompt\fP] ] [ \fIname\fP \&.\&.\&. ] یک خط را می‌خواند و به استثنای موارد ذکرشده در زیر، آن را با استفاده از نویسه‌های موجود در \fB$IFS\fP به عنوان جداکننده به فیلدهایی تقسیم می‌کند\&. فیلد اول به نخستین \fIname\fP، فیلد دوم به دومین \fIname\fP، و به همین ترتیب تخصیص می‌یابد و فیلدهای باقی‌مانده به آخرین \fIname\fP اختصاص داده می‌شوند\&. اگر \fIname\fP حذف شود، از \fBREPLY\fP برای مقادیر اسکالر و از \fBreply\fP برای آرایه‌ها استفاده می‌شود\&. .RS .PP .PD 0 .TP .PD \fB\-r\fP حالت خام: یک «\fB\e\fP» در انتهای یک خط به معنای ادامه‌یافتن خط نیست و بک‌اسلش‌های موجود در خط، نویسهٔ پس از خود را نقل‌قول نمی‌کنند و حذف نمی‌شوند\&. .TP \fB\-s\fP در صورت خواندن از ترمینال، نویسه‌ها را بازتاب (echo) نمی‌دهد\&. .TP \fB\-q\fP تنها یک نویسه از ترمینال می‌خواند و در صورتی که این نویسه «\fBy\fP» یا «\fBY\fP» باشد، \fIname\fP را روی «\fBy\fP» و در غیر این صورت روی «\fBn\fP» تنظیم می‌کند\&. با تنظیم این پرچم، وضعیت بازگشتی تنها در صورتی صفر است که نویسه «\fBy\fP» یا «\fBY\fP» باشد\&. این گزینه ممکن است با مهلت زمانی استفاده شود (به \fB\-t\fP مراجعه کنید)؛ اگر مهلت خواندن به پایان برسد یا با پایان فایل (EOF) مواجه شود، وضعیت ۲ بازگردانده می‌شود\&. ورودی از ترمینال خوانده می‌شود مگر اینکه یکی از گزینه‌های \fB\-u\fP یا \fB\-p\fP داده شده باشد\&. این گزینه ممکن است در ویجت‌های zle نیز استفاده شود\&. .TP \fB\-k\fP [ \fInum\fP ] تنها یک (یا \fInum\fP) نویسه می‌خواند\&. همهٔ آن‌ها بدون جداسازی کلمات به نخستین \fIname\fP اختصاص داده می‌شوند\&. این پرچم در صورت وجود \fB\-q\fP نادیده گرفته می‌شود\&. ورودی از ترمینال خوانده می‌شود مگر اینکه یکی از گزینه‌های \fB\-u\fP یا \fB\-p\fP مشخص شده باشد\&. این گزینه ممکن است در ویجت‌های zle نیز استفاده شود\&. .RS .PP توجه داشته باشید که علی‌رغم نام اختصاری «key»، این گزینه نویسه‌های کامل را می‌خواند که در صورت تنظیم بودن گزینهٔ \fBMULTIBYTE\fP، ممکن است از چندین بایت تشکیل شده باشند\&. .RE .TP \fB\-z\fP یک ورودی از پشتهٔ بافر ویرایشگر می‌خواند و آن را بدون تفکیک کلمات به نخستین \fIname\fP تخصیص می‌دهد\&. متن با «\fBprint \-z\fP» یا با \fBpush\-line\fP از ویرایشگر خط روی پشته قرار می‌گیرد (به \fIzshzle\fP(1) مراجعه کنید)\&. این پرچم در صورت وجود پرچم‌های \fB\-k\fP یا \fB\-q\fP نادیده گرفته می‌شود\&. .TP .PD 0 \fB\-e\fP .TP .PD \fB\-E\fP ورودی خوانده‌شده در خروجی استاندارد چاپ (بازتاب) می‌شود\&. اگر از پرچم \fB\-e\fP استفاده شود، هیچ ورودی‌ای به پارامترها اختصاص داده نمی‌شود\&. .TP \fB\-A\fP نخستین \fIname\fP به عنوان نام یک آرایه در نظر گرفته می‌شود و همهٔ کلمات به آن تخصیص می‌یابند\&. .TP .PD 0 \fB\-c\fP .TP .PD \fB\-l\fP این پرچم‌ها تنها در صورتی مجاز هستند که درون تابعی که برای تکمیل (completion) استفاده می‌شود (مشخص‌شده با پرچم \fB\-K\fP برای \fBcompctl\fP) فراخوانی شوند\&. اگر پرچم \fB\-c\fP داده شود، کلمات دستور جاری خوانده می‌شوند\&. اگر پرچم \fB\-l\fP داده شود، کل خط به عنوان یک مقدار اسکالر اختصاص داده می‌شود\&. اگر هر دو پرچم داده شوند، \fB\-l\fP استفاده شده و \fB\-c\fP نادیده گرفته می‌شود\&. .TP \fB\-n\fP همراه با \fB\-c\fP، شمارهٔ کلمه‌ای که مکان‌نما روی آن قرار دارد خوانده می‌شود\&. با \fB\-l\fP، نمایهٔ (اندیس) نویسه‌ای که مکان‌نما روی آن است خوانده می‌شود\&. توجه داشته باشید که نام دستور کلمهٔ شمارهٔ ۱ است، نه کلمهٔ ۰، و زمانی که مکان‌نما در انتهای خط است، نمایهٔ نویسهٔ آن برابر با طول خط به علاوهٔ یک است\&. .TP \fB\-u\fP \fIn\fP ورودی از توصیف‌گر فایل \fIn\fP خوانده می‌شود\&. .TP \fB\-p\fP ورودی از هم‌روند (coprocess) خوانده می‌شود\&. .TP \fB\-d\fP \fIdelim\fP ورودی به جای نویسهٔ خط جدید، با اولین نویسهٔ \fIdelim\fP خاتمه می‌یابد\&. .TP \fB\-t\fP [ \fInum\fP ] پیش از تلاش برای خواندن، در دسترس بودن ورودی را بررسی می‌کند\&. اگر \fInum\fP مشخص شده باشد، باید با یک رقم شروع شود و برای تعیین تعداد ثانیه‌ها (که می‌تواند عددی با ممیز شناور باشد) ارزیابی خواهد شد؛ در این حالت اگر ورودی در این زمان در دسترس نباشد، مهلت خواندن به پایان می‌رسد\&. اگر \fInum\fP مشخص نشود، صفر در نظر گرفته می‌شود تا در صورتی که ورودی در دسترس نباشد، \fBread\fP بلافاصله بازگردد\&. اگر ورودی در دسترس نباشد، وضعیت ۱ بازگردانده می‌شود و هیچ متغیری مقداردهی نمی‌گردد\&. این گزینه هنگام خواندن از بافر ویرایشگر با \fB\-z\fP، هنگام فراخوانی از درون تکمیل با \fB\-c\fP یا \fB\-l\fP، همراه با \fB\-q\fP که صف ورودی را قبل از خواندن پاک می‌کند، یا درون zle که سازوکارهای دیگری باید برای بررسی ورودی استفاده شوند، در دسترس نیست\&. توجه داشته باشید که read تلاشی برای تغییر حالت پردازش ورودی نمی‌کند\&. حالت پیش‌فرض ورودی کانونیکال (canonical) است که در آن در هر نوبت یک خط کامل خوانده می‌شود، بنابراین معمولاً «\fBread \-t\fP» تا زمانی که یک خط کامل تایپ نشود چیزی نخواهد خواند\&. با این حال، هنگام خواندن از ترمینال با \fB\-k\fP ورودی کلید به کلید پردازش می‌شود؛ در این حالت، تنها در دسترس بودن نخستین نویسه بررسی می‌شود، به‌طوری که برای نمونه «\fBread \-t \-k 2\fP» همچنان می‌تواند روی نویسهٔ دوم مسدود (block) شود\&. اگر این رفتار مطلوب نیست، از دو بار فراخوانی «\fBread \-t \-k\fP» استفاده کنید\&. .PP اگر آرگومان نخست شامل یک «\fB?\fP» باشد، باقی‌ماندهٔ این کلمه در زمانی که شل تعاملی باشد، به عنوان یک \fIprompt\fP (اعلان) در خطای استاندارد استفاده می‌شود\&. .PP مقدار (وضعیت خروج) \fBread\fP در صورتی که با پایان فایل (EOF) مواجه شود، یا زمانی که \fB\-c\fP یا \fB\-l\fP داده شده باشد و دستور از تابعی مربوط به \fBcompctl\fP فراخوانی نشده باشد، یا همان‌گونه که برای \fB\-q\fP توضیح داده شد، ۱ است\&. در غیر این صورت مقدار آن ۰ خواهد بود\&. .PP رفتار برخی ترکیب‌های پرچم‌های \fB\-k\fP، \fB\-p\fP، \fB\-q\fP، \fB\-u\fP و \fB\-z\fP تعریف‌نشده است\&. در حال حاضر \fB\-q\fP همهٔ موارد دیگر را لغو می‌کند، \fB\-p\fP گزینهٔ \fB\-u\fP را لغو می‌کند، \fB\-k\fP گزینهٔ \fB\-z\fP را لغو می‌کند، و در غیر این صورت \fB\-z\fP هر دو پرچم \fB\-p\fP و \fB\-u\fP را لغو می‌کند\&. .PP پرچم‌های \fB\-c\fP یا \fB\-l\fP هر یک و همهٔ پرچم‌های \fB\-kpquz\fP را لغو می‌کنند\&. .RE.TP \fBreadonly\fP همانند \fBtypeset \-r\fP\& است. با تنظیم گزینهٔ \fBPOSIX_BUILTINS\fP، همانند \fBtypeset \-gr\fP\& عمل می‌کند. .TP \fBrehash\fP همانند \fBhash \-r\fP\& است. .TP \fBreturn\fP [ \fIn\fP ] باعث می‌شود یک تابع پوسته یا اسکریپت اجراشده با «\fB\&.\fP» با وضعیت بازگشتی تعیین‌شده توسط یک عبارت حسابی \fIn\fP به اسکریپت فراخواننده بازگردد\&. برای مثال، دستور زیر مقدار «\fB42\fP» را چاپ می‌کند: .RS .PP .RS .nf \fB() { integer foo=40; return "foo + 2" } echo $?\fP .fi .RE .PP اگر \fIn\fP حذف شود، وضعیت بازگشتی برابر با وضعیت آخرین دستور اجرا شده خواهد بود\&. .PP اگر \fBreturn\fP از درون یک تله (trap) در تابع \fBTRAP\fP\fINAL\fP اجرا شود، تأثیر آن برای وضعیت بازگشتی صفر و غیرصفر متفاوت خواهد بود\&. با وضعیت صفر (یا پس از یک بازگشت ضمنی در پایان تله)، پوسته به هر آنچه قبلاً در حال پردازش آن بود بازمی‌گردد؛ با وضعیت غیرصفر، پوسته طوری رفتار می‌کند که گویی دچار وقفه شده است، مگر اینکه وضعیت بازگشتیِ تله حفظ شود\&. توجه داشته باشید که مقدار عددی سیگنالی که باعث ایجاد تله شده به عنوان اولین آرگومان ارسال می‌شود، بنابراین عبارت «\fBreturn "128+$1"\fP» همان وضعیتی را بازمی‌گرداند که گویی سیگنال به دام نیفتاده است\&. .RE .TP \fBsched\fP بخش «The zsh/sched Module» در \fIzshmodules\fP(1) را ببینید\&. .TP .PD 0 \fBset \fP[ {\fB+\fP|\fB\-\fP}\fIoptions\fP | {\fB+\fP|\fB\-\fP}\fBo\fP [ \fIoption_name\fP ] ] \&.\&.\&. [ {\fB+\fP|\fB\-\fP}\fBA\fP [ \fIname\fP ] ] .TP .PD \fB \fP[ \fIarg\fP \&.\&.\&. ] گزینه‌های پوسته را تنظیم می‌کند و/یا پارامترهای مکانی را مقداردهی می‌نماید، یا یک آرایه را اعلان و مقداردهی می‌کند\&. اگر گزینهٔ \fB\-s\fP داده شود، باعث می‌شود آرگومان‌های مشخص‌شده پیش از انتساب به پارامترهای مکانی (یا به آرایهٔ \fIname\fP در صورت استفاده از \fB\-A\fP) مرتب شوند\&. با \fB+s\fP آرگومان‌ها به ترتیب نزولی مرتب می‌شوند\&. برای آگاهی از مفهوم سایر پرچم‌ها، \fIzshoptions\fP(1) را ببینید\&. پرچم‌ها را می‌توان با نام و با استفاده از گزینهٔ \fB\-o\fP مشخص کرد\&. اگر هیچ نام گزینه‌ای با \fB\-o\fP ارائه نشود، وضعیت‌های فعلی گزینه‌ها چاپ می‌شوند: برای اطلاعات بیشتر دربارهٔ قالب آن، توضیحات \fBsetopt\fP در زیر را ببینید\&. با \fB+o\fP آن‌ها به قالبی چاپ می‌شوند که می‌تواند به عنوان ورودی برای پوسته استفاده شود\&. .RS .PP اگر پرچم \fB\-A\fP مشخص شود، \fIname\fP به یک آرایه حاوی \fIarg\fPهای داده‌شده تنظیم می‌شود؛ اگر هیچ \fIname\fPای مشخص نشود، تمام آرایه‌ها همراه با مقادیرشان چاپ می‌شوند\&. .PP اگر \fB+A\fP استفاده شود و \fIname\fP یک آرایه باشد، آرگومان‌های داده‌شده جایگزین عناصر ابتدایی آن آرایه خواهند شد؛ اگر هیچ \fIname\fPای مشخص نشود، تمام آرایه‌ها بدون مقادیرشان چاپ می‌شوند\&. .PP رفتار آرگومان‌ها پس از \fB\-A\fP \fIname\fP یا \fB+A\fP \fIname\fP بستگی به این دارد که گزینهٔ \fBKSH_ARRAYS\fP تنظیم شده باشد یا خیر\&. اگر تنظیم نشده باشد، تمام آرگومان‌های بعد از \fIname\fP صرف‌نظر از شکل آن‌ها به عنوان مقادیر آرایه در نظر گرفته می‌شوند\&. اگر این گزینه تنظیم شده باشد، پردازش عادی گزینه‌ها در آن نقطه ادامه می‌یابد؛ تنها آرگومان‌های عادی به عنوان مقادیر برای آرایه در نظر گرفته می‌شوند\&. این بدان معناست که .PP .RS .nf \fBset \-A array \-x \-\- foo\fP .fi .RE .PP در صورتی که \fBKSH_ARRAYS\fP تنظیم نشده باشد، \fBarray\fP را به «\fB\-x \-\fP\fB\- foo\fP» تنظیم می‌کند، اما اگر تنظیم شده باشد، آرایه را به \fBfoo\fP تنظیم کرده و گزینهٔ «\fB\-x\fP» را فعال می‌نماید\&. .PP اگر پرچم \fB\-A\fP وجود نداشته باشد، اما آرگومان‌هایی فراتر از گزینه‌ها وجود داشته باشند، پارامترهای مکانی مقداردهی می‌شوند\&. اگر فهرست گزینه‌ها (در صورت وجود) به «\fB\-\fP\fB\-\fP» ختم شود و هیچ آرگومان دیگری وجود نداشته باشد، پارامترهای مکانی لغو (unset) خواهند شد\&. .PP اگر هیچ آرگومان و هیچ «\fB\-\fP\fB\-\fP»ای داده نشود، نام‌ها و مقادیر تمام پارامترها در خروجی استاندارد چاپ می‌شوند\&. اگر تنها آرگومان «\fB+\fP» باشد، نام تمام پارامترها چاپ می‌شود\&. .PP به دلایل تاریخی، هنگامی که در هر حالت شبیه‌سازی دیگری به غیر از حالت بومی zsh باشیم، دستور «\fBset \-\fP» معادل «\fBset +xv\fP» و دستور «\fBset \-\fP \fIargs\fP» معادل «\fBset +xv \-\-\fP \fIargs\fP» در نظر گرفته می‌شود\&. .RE .TP \fBsetcap\fP بخش «The zsh/cap Module» در \fIzshmodules\fP(1) را ببینید\&. .TP \fBsetopt\fP [ {\fB+\fP|\fB\-\fP}\fIoptions\fP | {\fB+\fP|\fB\-\fP}\fBo\fP \fIoption_name\fP ] [ \fB\-m\fP ] [ \fIname\fP \&.\&.\&. ] گزینه‌های پوسته را تنظیم می‌کند\&. تمام گزینه‌هایی که یا با پرچم‌ها یا با نام مشخص شده‌اند فعال می‌گردند\&. .RS .PP اگر هیچ آرگومانی ارائه نشود، نام تمام گزینه‌هایی که در حال حاضر فعال هستند چاپ می‌شود\&. قالب نمایش به گونه‌ای انتخاب شده که تفاوت‌ها با گزینه‌های پیش‌فرض برای شبیه‌سازی فعلی را به حداقل برساند (شبیه‌سازی پیش‌فرض \fBzsh\fP بومی است که با \fB\fP در \fIzshoptions\fP(1) نشان داده شده است)\&. گزینه‌هایی که به‌طور پیش‌فرض برای آن شبیه‌سازی فعال هستند، تنها در صورتی با پیشوند \fBno\fP نشان داده می‌شوند که غیرفعال باشند، در حالی که سایر گزینه‌ها بدون پیشوند \fBno\fP و تنها در صورتی که فعال باشند نشان داده می‌شوند\&. علاوه بر گزینه‌هایی که وضعیت آن‌ها توسط کاربر از حالت پیش‌فرض تغییر یافته است، هر گزینه‌ای که به‌طور خودکار توسط پوسته فعال شده باشد (برای مثال \fBSHIN_STDIN\fP یا \fBINTERACTIVE\fP) در فهرست نمایش داده خواهد شد\&. این قالب توسط گزینهٔ \fBKSH_OPTION_PRINT\fP بیشتر تغییر می‌یابد، هرچند منطق انتخاب گزینه‌ها با یا بدون پیشوند \fBno\fP در این حالت نیز یکسان باقی می‌ماند\&. .PP اگر پرچم \fB\-m\fP داده شود، آرگومان‌ها به عنوان الگو (که باید برای محافظت در برابر بسط نام فایل داخل گیومه قرار گیرند) در نظر گرفته می‌شوند، و تمام گزینه‌هایی که نام آن‌ها با این الگوها مطابقت داشته باشد تنظیم می‌گردند\&. .PP توجه داشته باشید که نام نامعتبر یک گزینه باعث متوقف شدن اجرای کدهای بعدی پوسته نمی‌شود؛ این رفتار با رفتار «\fBset \-o\fP» تفاوت دارد\&. دلیل این امر آن است که دستور \fBset\fP طبق استاندارد POSIX یک دستور داخلی ویژه (special builtin) در نظر گرفته می‌شود، اما \fBsetopt\fP چنین نیست\&. .RE .TP \fBshift\fP [ \fB\-p\fP ] [ \fIn\fP ] [ \fIname\fP \&.\&.\&. ] پارامترهای مکانی \fB${\fP\fIn\fP+1\fB}\fP \&.\&.\&. به \fB$1\fP \&.\&.\&. تغییر نام می‌یابند، که در آن \fIn\fP یک عبارت حسابی است که مقدار پیش‌فرض آن 1 می‌باشد\&. اگر هرگونه \fIname\fP داده شود، به جای پارامترهای مکانی، آرایه‌های با این نام‌ها جابه‌جا (شیفت) داده می‌شوند\&. .RS .PP اگر گزینهٔ \fB\-p\fP داده شود، آرگومان‌ها به جای ابتدای آرایه، از انتهای آن حذف (pop) می‌شوند\&. .RE .TP \fBsource\fP \fIfile\fP [ \fIarg\fP \&.\&.\&. ] همانند «\fB\&.\fP» است، با این تفاوت که دایرکتوری فعلی همیشه و همواره پیش از دایرکتوری‌های موجود در \fB$path\fP جستجو می‌شود\&. .TP \fBstat\fP بخش «The zsh/stat Module» در \fIzshmodules\fP(1) را ببینید\&. .TP \fBsuspend\fP [ \fB\-f\fP ] اجرای پوسته را معلق می‌کند (سیگنال \fBSIGTSTP\fP برای آن می‌فرستد) تا زمانی که یک \fBSIGCONT\fP دریافت کند\&. مگر اینکه گزینهٔ \fB\-f\fP داده شده باشد، این دستور از معلق کردن یک پوستهٔ ورود (login shell) امتناع خواهد کرد\&. .TP .PD 0 \fBtest\fP [ \fIarg\fP \&.\&.\&. ] .TP .PD \fB[\fP [ \fIarg\fP \&.\&.\&. ] \fB]\fP همانند نسخهٔ سیستمی \fBtest\fP است\&. برای سازگاری اضافه شده است؛ در عوض از عبارت‌های شرطی استفاده کنید (بخش «Conditional Expressions» را ببینید)\&. تفاوت‌های اصلی بین نحو عبارت شرطی و دستورهای داخلی \fBtest\fP و \fB[\fP عبارتند از: این دستورها از نظر نحوی مدیریت نمی‌شوند، بنابراین برای مثال بسط یک متغیر خالی ممکن است باعث حذف شدن یک آرگومان شود؛ خطاهای نحوی به جای خطای پوسته باعث بازگرداندن وضعیت 2 می‌شوند؛ و عملگرهای حسابی به جای عبارت‌های حسابی، انتظار آرگومان‌های عدد صحیح دارند\&. .RS .PP این دستور تلاش می‌کند تا استاندارد POSIX و افزونه‌های آن را در مواردی که مشخص شده‌اند پیاده‌سازی کند\&. متأسفانه ابهامات ذاتی در نحو آن وجود دارد؛ به‌ویژه هیچ تمایزی بین عملگرهای آزمون و رشته‌هایی که شبیه آن‌ها هستند وجود ندارد\&. استاندارد تلاش می‌کند این موارد را برای تعداد اندکی از آرگومان‌ها (حداکثر چهار مورد) برطرف کند؛ برای پنج آرگومان یا بیشتر نمی‌توان به سازگاری اعتماد کرد\&. به کاربران اکیداً توصیه می‌شود تا حد امکان از نحو آزمون «\fB[[\fP» که این ابهامات را ندارد استفاده کنند\&. .RE .TP \fBtimes\fP زمان‌های تجمیعی کاربر و سیستم را برای پوسته و برای فرآیندهای اجراشده از درون پوسته چاپ می‌کند\&. .TP \fBtrap\fP [ \fIarg\fP ] [ \fIsig\fP \&.\&.\&. ] \fIarg\fP دنباله‌ای از دستورها است (که معمولاً برای محافظت در برابر ارزیابی فوری توسط پوسته در گیومه قرار می‌گیرد) تا زمانی که پوسته هر یک از سیگنال‌های مشخص‌شده توسط یک یا چند آرگومان \fIsig\fP را دریافت کرد، خوانده و اجرا شود\&. هر \fIsig\fP می‌تواند به صورت یک عدد یا به عنوان نام یک سیگنال با پیشوند یا بدون رشتهٔ \fBSIG\fP در ابتدا مشخص شود (به عنوان مثال 1، HUP و SIGHUP همگی سیگنال یکسانی هستند)\&. .RS.PP اگر \fIarg\fP برابر «\fB\-\fP\&» باشد، سیگنال‌های مشخص‌شده به مقادیر پیش‌فرض خود بازنشانی می‌شوند، یا اگر هیچ آرگومان \fIsig\fP مشخص نشده باشد، تمام تله‌ها بازنشانی خواهند شد\&. .PP اگر \fIarg\fP یک رشتهٔ خالی باشد، سیگنال‌های مشخص‌شده توسط پوسته (و دستوراتی که فراخوانی می‌کند) نادیده گرفته می‌شوند\&. .PP اگر \fIarg\fP حذف شود اما یک یا چند آرگومان \fIsig\fP ارائه شده باشد (یعنی نخستین آرگومان یک شماره یا نام معتبر سیگنال باشد)، نتیجه همانند حالتی است که \fIarg\fP به صورت «\fB\-\fP\&» مشخص شده باشد\&. .PP دستور \fBtrap\fP بدون هیچ آرگومانی، فهرستی از دستورهای مرتبط با هر سیگنال را چاپ می‌کند\&. .PP اگر \fIsig\fP برابر \fBZERR\fP باشد، \fIarg\fP پس از هر دستور با وضعیت خروج غیرصفر اجرا خواهد شد\&. در سیستم‌هایی که سیگنال \fBSIGERR\fP ندارند (که حالت معمول است)، \fBERR\fP یک نام مستعار برای \fBZERR\fP است\&. .PP اگر \fIsig\fP برابر \fBDEBUG\fP باشد، در صورتی که گزینهٔ \fBDEBUG_BEFORE_CMD\fP تنظیم شده باشد (که به طور پیش‌فرض چنین است)، \fIarg\fP پیش از هر دستور اجرا می‌شود، و در غیر این صورت پس از هر دستور اجرا خواهد شد\&. در اینجا، منظور از «دستور» همان چیزی است که در دستور زبان پوسته به عنوان یک «زیرفهرست» (sublist) توصیف شده است؛ بخش SIMPLE COMMANDS & PIPELINES را در \fIzshmisc\fP(1) ببینید\&. اگر \fBDEBUG_BEFORE_CMD\fP تنظیم شده باشد، قابلیت‌های اضافی گوناگونی در دسترس خواهد بود\&. نخست، با تنظیم گزینهٔ \fBERR_EXIT\fP می‌توان از اجرای دستور بعدی صرف‌نظر کرد؛ به شرح گزینهٔ \fBERR_EXIT\fP در \fIzshoptions\fP(1) مراجعه کنید\&. همچنین، متغیر پوستهٔ \fBZSH_DEBUG_CMD\fP بر روی رشتهٔ متناظر با دستوری که قرار است پس از تله اجرا شود تنظیم می‌گردد\&. توجه داشته باشید که این رشته از قالب داخلی بازسازی می‌شود و ممکن است قالب‌بندی آن دقیقاً مشابه متن اصلی نباشد\&. این پارامتر پس از اجرای تله لغو مقدار (unset) می‌شود\&. .PP اگر \fIsig\fP برابر \fB0\fP یا \fBEXIT\fP باشد و دستور \fBtrap\fP درون بدنهٔ یک تابع اجرا شود، دستور \fIarg\fP پس از پایان یافتن تابع اجرا خواهد شد\&. مقدار \fB$?\fP در آغاز اجرا، وضعیت خروج پوسته یا وضعیت بازگشت تابع در حال خروج است\&. اگر \fIsig\fP برابر \fB0\fP یا \fBEXIT\fP باشد و عبارت \fBtrap\fP درون بدنهٔ تابع اجرا نشود، دستور \fIarg\fP هنگام خاتمهٔ پوسته اجرا می‌شود؛ این تله پیش از هر تابع قلاب (hook) \fBzshexit\fP اجرا می‌گردد\&. .PP تله‌های \fBZERR\fP، \fBDEBUG\fP و \fBEXIT\fP درون تله‌های دیگر اجرا نمی‌شوند\&. تله‌های \fBZERR\fP و \fBDEBUG\fP درون زیرپوسته‌ها (subshells) حفظ می‌شوند، در حالی که تله‌های دیگر بازنشانی می‌گردند\&. .PP توجه داشته باشید تله‌هایی که با دستور توکار \fBtrap\fP تعریف می‌شوند اندکی با تله‌هایی که به صورت «\fBTRAP\fP\fINAL\fP () { \&.\&.\&. }\&» تعریف می‌گردند تفاوت دارند، چرا که مورد دوم محیط تابعی مخصوص به خود را دارد (شماره‌های خط، متغیرهای محلی، و غیره) در حالی که مورد نخست از محیط دستوری که در آن فراخوانی شده است استفاده می‌کند\&. برای نمونه، .PP .RS .nf \fBtrap \&'print $LINENO' DEBUG\fP .fi .RE .PP شماره خط یک دستور را پس از پایان اجرای آن چاپ می‌کند، در حالی که .PP .RS .nf \fBTRAPDEBUG() { print $LINENO; }\fP .fi .RE .PP همواره عدد صفر را چاپ خواهد کرد\&. .PP نام‌های جایگزین سیگنال‌ها همان‌طور که در بالا ذیل \fBkill\fP شرح داده شد مجاز هستند\&. تعریف یک تله تحت هر یک از نام‌ها باعث می‌شود که هر تلهٔ دیگری تحت نام جایگزین حذف شود\&. با این حال، توصیه می‌شود برای حفظ یکپارچگی، کاربران منحصراً از یک نام یا نام دیگر استفاده کنند\&. .RE .TP \fBtrue\fP [ \fIarg\fP \&.\&.\&. ] هیچ کاری انجام ندهد و وضعیت خروج 0 را برگرداند\&. .TP \fBttyctl\fP [ \fB\-fu\fP ] گزینهٔ \fB\-f\fP پایانه یا tty (یعنی پایانه یا شبیه‌ساز پایانه) را منجمد (freeze) می‌کند، و \fB\-u\fP انجماد آن را لغو می‌کند\&. هنگامی که tty منجمد است، هیچ تغییری که توسط برنامه‌های خارجی در تنظیمات tty ایجاد شود توسط پوسته اعمال نخواهد شد، به جز تغییرات در اندازهٔ صفحه نمایش؛ پوسته به سادگی به محض خروج یا معلق شدن هر دستور، تنظیمات را به مقادیر پیشین خود بازنشانی می‌کند\&. بنابراین، \fBstty\fP و برنامه‌های مشابه هنگامی که tty منجمد است هیچ اثری ندارند\&. منجمد کردن tty باعث به خاطر سپردن وضعیت فعلی نمی‌شود؛ در عوض، سبب می‌شود که تغییرات بعدی در وضعیت مسدود شوند\&. .RS .PP بدون گزینه‌ها، گزارش می‌دهد که پایانه منجمد است یا خیر\&. .PP توجه داشته باشید که صرف‌نظر از منجمد بودن یا نبودن tty، پوسته هنگام شروع ویرایشگر خط (line editor) نیازمند تغییر تنظیمات است، بنابراین رفع انجماد tty تضمین نمی‌کند که تنظیمات اعمال‌شده در خط فرمان حفظ شوند\&. رشته دستورهایی که بین ویرایش خط فرمان اجرا می‌شوند، وضعیت یکنواختی از tty را مشاهده خواهند کرد\&. همچنین برای راه‌اندازی اولیهٔ tty پیش از اجرای دستورهای خارجی و/یا منجمد کردن tty در طول اجرای یک دستور واحد، متغیر پوستهٔ \fBSTTY\fP را ببینید\&. .RE .TP \fBtype\fP [ \fB\-wfpamsS\fP ] \fIname\fP \&.\&.\&. معادل \fBwhence \-v\fP است\&. .TP .PD 0 \fBtypeset \fP[ {\fB+\fP|\fB\-\fP}\fBAHUaghlmrtux\fP ] [ {\fB+\fP|\fB\-\fP}\fBEFLRZip\fP [ \fIn\fP ] ] .TP .PD 0 \fB \fP[ \fB+\fP ] [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] .TP .PD 0 \fBtypeset \fP\fB\-T\fP [ {\fB+\fP|\fB\-\fP}\fBUglrux\fP ] [ {\fB+\fP|\fB\-\fP}\fBLRZp\fP [ \fIn\fP ] ] .TP .PD 0 \fB \fP[ \fB+\fP | \fISCALAR\fP[\fB=\fP\fIvalue\fP] \fIarray\fP[\fB=(\fP\fIvalue\fP \&.\&.\&.\fB)\fP] [ \fIsep\fP ] ] .TP .PD \fBtypeset\fP \fB\-f\fP [ {\fB+\fP|\fB\-\fP}\fBTUkmtuz\fP ] [ \fB+\fP ] [ \fIname\fP \&.\&.\&. ] تنظیم یا نمایش مشخصه‌ها و مقادیر برای پارامترهای پوسته\&. .RS .PP به استثنای موارد ذکرشده در زیر برای پرچم‌های کنترلی که رفتار را تغییر می‌دهند، برای هر \fIname\fP که از پیش به پارامتری اشاره نمی‌کند، یک پارامتر جدید ایجاد می‌شود\&. درون یک تابع، برای هر \fIname\fP (حتی نام‌هایی که از قبل وجود دارند) یک پارامتر جدید ایجاد می‌شود، و با پایان یافتن تابع دوباره لغو مقدار (unset) می‌گردد\&. به «Local Parameters» در \fIzshparam\fP(1) مراجعه کنید\&. همین قواعد برای پارامترهای ویژهٔ پوسته نیز اعمال می‌شوند، که این پارامترها هنگام محلی شدن، مشخصه‌های ویژهٔ خود را حفظ می‌کنند\&. .PP برای هر انتساب \fIname\fP\fB=\fP\fIvalue\fP، پارامتر \fIname\fP بر روی \fIvalue\fP تنظیم می‌شود\&. اگر انتساب حذف شود و \fIname\fP به یک پارامتر موجود اشاره \fIنکند\fP، پارامتر جدید با رشتهٔ خالی، صفر، یا آرایهٔ خالی (بر حسب مورد) مقداردهی اولیه می‌شود، \fIمگر\fP اینکه گزینهٔ پوستهٔ \fBTYPESET_TO_UNSET\fP تنظیم شده باشد\&. هنگامی که این گزینه تنظیم باشد، مشخصه‌های پارامتر ثبت می‌شوند اما خود پارامتر بدون مقدار باقی می‌ماند\&. .PP اگر گزینهٔ پوستهٔ \fBTYPESET_SILENT\fP تنظیم نشده باشد، به ازای هر \fIname\fP باقی‌مانده که به پارامتری با مقدار قبلی اشاره دارد، نام و مقدار پارامتر در قالب یک انتساب چاپ می‌شود\&. برای پارامترهای تازه‌ساخته‌شده، یا هنگامی که هر یک از پرچم‌های مشخصهٔ فهرست‌شده در زیر همراه با \fIname\fP داده شده باشد، چیزی چاپ نمی‌شود\&. استفاده از «\fB+\fP\&» به جای علامت تفریق برای معرفی یک مشخصه، آن را غیرفعال می‌کند\&. .PP اگر هیچ \fIname\fP وجود نداشته باشد، نام و مقدار تمام پارامترها چاپ می‌شود\&. در این حالت، پرچم‌های مشخصه نمایش را تنها به پارامترهایی که مشخصه‌های تعیین‌شده را دارند محدود می‌کنند، و استفاده از «\fB+\fP\&» به جای «\fB\-\fP\&» برای معرفی پرچم، در صورت عدم وجود نام پارامتر، از چاپ مقادیر پارامترها جلوگیری می‌کند\&. .PP تمام صورت‌های این دستور انتساب مقادیر اسکالر را مدیریت می‌کنند\&. انتساب آرایه در صورتی امکان‌پذیر است که هنگام تجزیهٔ خط (توجه: نه در هنگام اجرای آن)، با هر یک از کلمات رزروشدهٔ \fBdeclare\fP، \fBexport\fP، \fBfloat\fP، \fBinteger\fP، \fBlocal\fP، \fBreadonly\fP یا \fBtypeset\fP مطابقت پیدا کند\&. در این حالت آرگومان‌ها به صورت انتساب تجزیه می‌شوند، به استثنای اینکه نحو «\fB+=\fP\&» و گزینهٔ \fBGLOB_ASSIGN\fP پشتیبانی نمی‌شوند، و مقادیر اسکالر پس از \fB=\fP، حتی در صورت بسط، به کلمات بیشتر تفکیک \fIنمی‌شوند\fP (صرف‌نظر از تنظیمات گزینهٔ \fBKSH_TYPESET\fP؛ این گزینه منسوخ شده است)\&. .PP مثال‌هایی از تفاوت‌های میان تجزیه به عنوان دستور و کلمهٔ رزروشده: .PP .RS .nf \fB# Reserved word parsing typeset svar=$(echo one word) avar=(several words)\fP .fi .RE .PP دستور بالا یک پارامتر اسکالر \fBsvar\fP و یک پارامتر آرایهٔ \fBavar\fP ایجاد می‌کند، گویی که انتساب‌ها به صورت زیر بوده‌اند: .PP .RS .nf \fBsvar="one word" avar=(several words)\fP .fi .RE .PP از سوی دیگر:.PP .RS .nf \fB# رابط معمول دستور توکار builtin typeset svar=$(echo two words)\fP .fi .RE .PP کلیدواژهٔ \fBbuiltin\fP باعث می‌شود دستور بالا از رابط توکار استاندارد برای \fBtypeset\fP استفاده کند که در آن تجزیهٔ آرگومان‌ها به همان شیوهٔ سایر دستورها انجام می‌شود\&. این مثال یک متغیر اسکالر \fBsvar\fP حاوی مقدار \fBtwo\fP و یک پارامتر اسکالر دیگر با نام \fBwords\fP بدون مقدار ایجاد می‌کند\&. مقدار آرایه در این حالت یا باعث بروز خطا می‌شود یا به‌عنوان مجموعه‌ای مبهم از توصیف‌کننده‌های تطبیق الگو (glob qualifiers) در نظر گرفته خواهد شد\&. .PP آرگومان‌های اختیاری مجاز هستند اگر پس از بسط خط فرمان، به شکل انتساب درآیند؛ با این حال، این موارد فقط انتساب اسکالر را انجام می‌دهند: .PP .RS .nf \fBvar=\&'svar=val' typeset $var\fP .fi .RE .PP دستور بالا پارامتر اسکالر \fBsvar\fP را با مقدار \fBval\fP مقداردهی می‌کند\&. قرار دادن پرانتز دور مقدار درون \fBvar\fP باعث انتساب آرایه‌ای نمی‌شود، چرا که هنگام جایگزینی \fB$var\fP با آن‌ها مانند نویسه‌های معمولی رفتار خواهد شد\&. هرگونه بسط غیربدیهی در بخش نام انتساب باعث می‌شود با آرگومان به همین شکل رفتار شود: .PP .RS .nf \fBtypeset {var1,var2,var3}=name\fP .fi .RE .PP نحو بالا معتبر است و اثر مورد انتظارِ تنظیم هر سه پارامتر به یک مقدار یکسان را دارد، اما خط فرمان پس از بسط، به صورت مجموعه‌ای از سه آرگومان معمولی خط فرمان برای \fBtypeset\fP تجزیه می‌شود\&. بنابراین انتساب هم‌زمان به چند آرایه از این طریق ممکن نیست\&. .PP توجه داشته باشید که هر رابط برای هر یک از دستورها می‌تواند به‌طور جداگانه غیرفعال شود\&. برای نمونه، `\fBdisable \-r typeset\fP\&' رابط کلمهٔ رزروشدهٔ \fBtypeset\fP را غیرفعال کرده و رابط توکار را نمایان می‌سازد، در حالی که `\fBdisable typeset\fP\&' دستور توکار را غیرفعال می‌کند\&. توجه کنید که غیرفعال کردن رابط کلمهٔ رزروشده برای \fBtypeset\fP ممکن است باعث ایجاد مشکلاتی در خروجی `\fBtypeset \-p\fP\&' شود، که فرض می‌کند رابط کلمهٔ رزروشده برای بازیابی مقادیر آرایه و آرایهٔ انجمنی در دسترس است\&. .PP برخلاف عبارت‌های انتساب پارامتر، وضعیت خروج \fBtypeset\fP در انتسابی که شامل جایگزینی دستور است، وضعیت خروج آن جایگزینی دستور را منعکس نمی‌کند\&. بنابراین، برای بررسی خطا در یک جایگزینی دستور، اعلان پارامتر را از مقداردهی اولیهٔ آن جدا کنید: .PP .RS .nf \fB# نادرست typeset var1=$(exit 1) || echo "Trouble with var1" # درست typeset var1 && var1=$(exit 1) || echo "Trouble with var1" \fP .fi .RE .PP برای مقداردهی اولیهٔ یک پارامتر \fIparam\fP با خروجی یک دستور و نشانه‌گذاری آن به‌صورت فقط‌خواندنی، پس از عبارت انتساب پارامتر از \fBtypeset \-r \fP\fIparam\fP یا \fBreadonly \fP\fIparam\fP استفاده کنید\&. .PP اگر هیچ پرچم صفتی داده نشود، و یا هیچ آرگومان \fIname\fP وجود نداشته باشد یا از پرچم \fB+m\fP استفاده شود، آن‌گاه پیش از هر نام پارامتر چاپ‌شده، فهرستی از صفت‌های آن پارامتر می‌آید (\fBarray\fP، \fBassociation\fP، \fBexported\fP، \fBfloat\fP، \fBinteger\fP، \fBreadonly\fP، یا \fBundefined\fP برای پارامترهای خودبارگذاری‌شونده‌ای که هنوز بارگذاری نشده‌اند)\&. اگر \fB+m\fP همراه با پرچم‌های صفت استفاده شود، و همهٔ آن پرچم‌ها با \fB+\fP مشخص شوند، نام‌های پارامترهای منطبق چاپ می‌شوند اما مقادیر آن‌ها چاپ نخواهد شد\&. .PP پرچم‌های کنترلی زیر رفتار \fBtypeset\fP را تغییر می‌دهند: .PP .PD 0 .TP .PD \fB+\fP اگر `\fB+\fP\&' به تنهایی در یک کلمهٔ مجزا به عنوان آخرین گزینه بیاید، نام تمام پارامترها (یا در صورت وجود \fB\-f\fP، توابع) چاپ می‌شود، اما مقادیر (بدنهٔ توابع) چاپ نمی‌شوند\&. اگر آرگومان‌های \fIname\fP ظاهر شوند، هم آن نام‌ها و هم مقادیرشان به شکل انتساب چاپ می‌شوند\&. قرار گرفتن هر گزینهٔ دیگری پس از `\fB+\fP\&' خطا است، اما اثر `\fB+\fP\&' به‌گونه‌ای است که گویی تمام پرچم‌های صفت پیش از آن با پیشوند `\fB+\fP\&' داده شده‌اند\&. برای نمونه، `\fBtypeset \-U +\fP' معادل `\fBtypeset +U\fP\&' است و نام تمامی آرایه‌های دارای صفت یکتایی را نمایش می‌دهد، در حالی که `\fBtypeset \-f \-U +\fP\&' نام تمام توابع با قابلیت بارگذاری خودکار را نمایش می‌دهد\&. اگر \fB+\fP تنها گزینه باشد، اطلاعات نوع (آرایه، فقط‌خواندنی، و غیره) نیز برای هر پارامتر چاپ می‌شود، دقیقاً همانند `\fBtypeset +m "*"\fP\&'\&. .TP \fB\-g\fP پرچم \fB\-g\fP (سراسری یا global) بدین معناست که پارامتر حاصل به حوزهٔ محلی محدود نخواهد شد\&. توجه داشته باشید که این لزوماً به این معنا نیست که پارامتر سراسری خواهد بود، زیرا این پرچم بر روی هر پارامتر موجود (حتی اگر مقدار آن لغو شده باشد) از تابع دربرگیرنده اعمال خواهد شد\&. این پرچم پس از ایجاد پارامتر تأثیری بر آن ندارد، بنابراین هنگام فهرست کردن پارامترهای موجود هیچ اثری نخواهد داشت، و همچنین پرچم \fB+g\fP نیز به جز در ترکیب با \fB\-m\fP هیچ تأثیری ندارد (به زیر مراجعه کنید)\&. .TP \fB\-m\fP اگر پرچم \fB\-m\fP داده شود، آرگومان‌های \fIname\fP به عنوان الگو در نظر گرفته می‌شوند (برای جلوگیری از تفسیر آن‌ها به عنوان الگوهای فایل، از نقل‌قول استفاده کنید)\&. بدون پرچم‌های صفت، تمام پارامترها (یا توابع در صورت استفاده از پرچم \fB\-f\fP) با نام‌های منطبق چاپ می‌شوند (گزینهٔ پوستهٔ \fBTYPESET_SILENT\fP در این حالت استفاده نمی‌شود)\&. .RS .PP اگر پرچم \fB+g\fP با \fB\-m\fP ترکیب شود، به ازای هر پارامتر منطبقی که در حال حاضر محلی نیست، یک پارامتر محلی جدید ایجاد می‌شود\&. در غیر این صورت \fB\-m\fP تمام پرچم‌ها یا انتساب‌های دیگر را بر روی پارامترهای موجود اعمال می‌کند\&. .PP به جز زمانی که انتساب‌ها با \fIname\fP\fB=\fP\fIvalue\fP انجام شوند، استفاده از \fB+m\fP چاپ پارامترهای منطبق و صفت‌های آن‌ها را اجباری می‌کند، حتی در داخل یک تابع\&. توجه داشته باشید که اگر هیچ الگویی داده نشود \fB\-m\fP نادیده گرفته می‌شود، بنابراین `\fBtypeset \-m\fP\&' صفت‌ها را نمایش می‌دهد اما `\fBtypeset \-a +m\fP' آن‌ها را نمایش نمی‌دهد\&. پارامترهای رشته‌ای اسکالر معمولی هیچ صفتی ندارند، بنابراین برای آن‌ها \fB+m\fP فقط نام‌ها را چاپ می‌کند\&. .RE .TP \fB\-p\fP [ \fIn\fP ] اگر گزینهٔ \fB\-p\fP داده شود، صرف‌نظر از سایر پرچم‌ها و گزینه‌ها، پارامترها و مقادیر به صورت یک دستور typeset همراه با یک انتساب چاپ می‌شوند\&. توجه داشته باشید که پرچم \fB\-H\fP روی پارامترها رعایت می‌شود؛ هیچ مقداری برای این پارامترها نشان داده نخواهد شد\&. .RS .PP \fB\-p\fP می‌تواند با یک آرگومان عددی صحیح اختیاری همراه باشد\&. در حال حاضر فقط مقدار \fB1\fP پشتیبانی می‌شود\&. در این حالت، برای خوانایی بیشتر، آرایه‌ها و آرایه‌های انجمنی با خط‌های جدید بین عناصر دارای تورفتگی چاپ می‌شوند\&. .RE .TP \fB\-T\fP [ \fIscalar\fP[\fB=\fP\fIvalue\fP] \fIarray\fP[\fB=(\fP\fIvalue\fP \&.\&.\&.\fB)\fP] [ \fIsep\fP ] ] این پرچم هنگام استفاده با \fB\-f\fP معنای متفاوتی دارد؛ به بخش زیر مراجعه کنید\&. در غیر این صورت گزینهٔ \fB\-T\fP نیازمند وجود صفر، دو یا سه آرگومان است\&. بدون هیچ آرگومانی، فهرست پارامترهایی که به این شیوه ایجاد شده‌اند نشان داده می‌شود\&. با دو یا سه آرگومان، دو مورد نخست نام‌های یک پارامتر اسکالر و یک پارامتر آرایه (به همان ترتیب) هستند که مانند \fB$PATH\fP و \fB$path\fP به یکدیگر گره می‌خورند\&. آرگومان اختیاری سوم، یک جداکنندهٔ تک‌نویسه‌ای است که برای پیوند دادن عناصر آرایه جهت ساخت متغیر اسکالر استفاده خواهد شد؛ در صورت نبود آن، دو‌نقطه (:) به کار می‌رود، همانند \fB$PATH\fP\&. تنها نخستین نویسهٔ جداکننده معنادار است؛ هر نویسهٔ باقی‌مانده نادیده گرفته می‌شود\&. نویسه‌های چندبایتی هنوز پشتیبانی نمی‌شوند\&. .RS .PP تنها به یکی از پارامترهای اسکالر یا آرایه می‌توان مقدار اولیه اختصاص داد (محدودیت‌های مربوط به قالب‌های انتساب که در بالا شرح داده شد نیز اعمال می‌شوند)\&. .PP هر دو پارامتر اسکالر و آرایه را می‌توان به صورت عادی دستکاری کرد\&. اگر مقدار یکی لغو شود (unset)، دیگری نیز به‌طور خودکار لغو خواهد شد\&. هیچ راهی برای باز کردن گرهٔ متغیرها بدون لغو کردن مقدار آن‌ها وجود ندارد، و همچنین تبدیل نوع یکی از آن‌ها با یک دستور \fBtypeset\fP دیگر ممکن نیست؛ \fB+T\fP کار نمی‌کند، انتساب یک آرایه به \fIscalar\fP خطا است، و انتساب یک مقدار اسکالر به \fIarray\fP آن را به یک آرایهٔ تک‌عنصری تبدیل می‌کند\&. .PP توجه داشته باشید که هر دو دستور `\fBtypeset \-xT \&.\&.\&.\fP\&' و `\fBexport \-T \&.\&.\&.\fP' کار می‌کنند، اما تنها متغیر اسکالر برای صادر شدن (export) نشانه‌گذاری می‌شود\&. تنظیم مقدار با استفاده از نسخهٔ اسکالر موجب تفکیک بر روی تمام جداکننده‌ها می‌شود (که نمی‌توان آن‌ها را نقل‌قول کرد)\&. می‌توان \fB\-T\fP را بر روی دو متغیر که قبلاً به هم گره خورده‌اند اما با یک نویسهٔ جداکنندهٔ متفاوت اعمال کرد، که در این حالت متغیرها مانند گذشته پیوندخورده باقی می‌مانند اما نویسهٔ جداکننده تغییر می‌کند\&. .PP هنگامی که یک متغیر اسکالر موجود به یک آرایهٔ جدید گره می‌خورد، مقدار اسکالر حفظ می‌شود اما هیچ صفتی به جز export حفظ نخواهد شد\&. .RE .PP پرچم‌های صفتی که مقدار نهایی را تغییر می‌دهند (\fB\-L\fP، \fB\-R\fP، \fB\-Z\fP، \fB\-l\fP، \fB\-u\fP) فقط روی مقدار بسط‌یافته در نقطهٔ عبارت بسط پارامتر با استفاده از `\fB$\fP\&' اعمال می‌شوند\&. آن‌ها هنگامی که یک پارامتر برای هر مقصودی به‌طور داخلی توسط پوسته فراخوانی می‌شود اعمال نمی‌گردند\&..PP پرچم‌های ویژگی زیر را می‌توان مشخص کرد: .PP .PD 0 .TP .PD \fB\-A\fP نام‌ها به پارامترهای آرایهٔ انجمنی اشاره دارند؛ به `Array Parameters\&' در \fIzshparam\fP(1) مراجعه کنید\&. .TP \fB\-L\fP [ \fIn\fP ] چپ‌چین کردن و حذف فاصله‌های خالی ابتدایی از مقدار، هنگامی که پارامتر بسط داده می‌شود\&. اگر \fIn\fP غیرصفر باشد، پهنای فیلد را تعیین می‌کند\&. اگر \fIn\fP صفر باشد، پهنا با پهنای مقدارِ نخستین انتساب تعیین می‌شود\&. در مورد پارامترهای عددی، طول مقدار کامل اختصاص‌یافته به پارامتر برای تعیین پهنا استفاده می‌شود، نه مقداری که در خروجی نمایش داده خواهد شد\&. .RS .PP پهنا برابر با تعداد نویسه‌ها است، که اگر گزینهٔ \fBMULTIBYTE\fP فعال باشد ممکن است نویسه‌های چندبایتی باشند\&. توجه داشته باشید که پهنای روی صفحهٔ نویسه در نظر گرفته نمی‌شود؛ اگر به این کار نیاز است، از فاصله‌گذاری (padding) با پرچم‌های بسط پارامتر \fB${(ml\fP\fI\&.\&.\&.\fP\fB)\fP\fI\&.\&.\&.\fP\fB}\fP همان‌طور که در `Parameter Expansion Flags\&' در \fIzshexpn\fP(1) توصیف شده، استفاده کنید\&. .PP هنگامی که پارامتر بسط داده می‌شود، در سمت راست با جاهای خالی پُر می‌شود یا در صورت نیاز برای جا شدن در فیلد، کوتاه (truncate) می‌شود\&. توجه داشته باشید که کوتاه کردن می‌تواند به نتایج غیرمنتظره‌ای در پارامترهای عددی منجر شود\&. صفرهای ابتدایی در صورتی که پرچم \fB\-Z\fP نیز تنظیم شده باشد، حذف می‌شوند\&. .RE .TP \fB\-R\fP [ \fIn\fP ] مشابه \fB\-L\fP، با این تفاوت که از راست‌چین کردن استفاده می‌شود؛ هنگامی که پارامتر بسط داده می‌شود، فیلد از چپ با جاهای خالی پُر می‌شود یا از انتها کوتاه می‌شود\&. نمی‌تواند با پرچم \fB\-Z\fP ترکیب شود\&. .TP \fB\-U\fP برای آرایه‌ها (اما نه برای آرایه‌های انجمنی)، تنها اولین رخداد از هر مقدار تکراری را نگه می‌دارد\&. این پرچم همچنین می‌تواند برای پارامترهای پیوندخورده (به \fB\-T\fP مراجعه کنید) یا پارامترهای ویژهٔ جداشده با دونقطه مانند \fBPATH\fP یا \fBFIGNORE\fP و غیره تنظیم شود\&. توجه داشته باشید که پرچم در زمان انتساب اثر می‌کند، و نوع متغیری که به آن مقدار اختصاص داده می‌شود تعیین‌کننده است؛ بنابراین برای متغیرهایی با مقادیر مشترک توصیه می‌شود پرچم را برای تمام رابط‌ها تنظیم کنید، مانند `\fBtypeset \-U PATH path\fP\&'\&. .RS .PP این پرچم در صورت استفاده همراه با \fB\-f\fP معنای متفاوتی دارد؛ به ادامه مراجعه کنید\&. .RE .TP \fB\-Z\fP [ \fIn\fP ] اگر همراه با پرچم \fB\-L\fP تنظیم شود، رفتار ویژه‌ای دارد\&. در غیر این صورت، مشابه \fB\-R\fP است، با این تفاوت که اگر نخستین نویسهٔ غیرخالی یک رقم باشد، به جای فاصله‌های خالی از صفرهای ابتدایی برای پُر کردن استفاده می‌شود\&. با پارامترهای عددی به صورت ویژه رفتار می‌شود: آن‌ها همیشه واجد شرایط پُر شدن با صفرها هستند، و صفرها در جای مناسبی در خروجی درج می‌شوند\&. .TP \fB\-a\fP نام‌ها به پارامترهای آرایه اشاره دارند\&. یک پارامتر آرایه می‌تواند از این طریق ایجاد شود، اما در عبارت \fBtypeset\fP تنها در صورتی می‌توان به آن مقدار اختصاص داد که شکل کلمهٔ کلیدی رزروشدهٔ \fBtypeset\fP فعال باشد (که به طور پیش‌فرض چنین است)\&. هنگام نمایش، هم آرایه‌های معمولی و هم انجمنی نشان داده می‌شوند\&. .TP \fB\-f\fP نام‌ها به توابع اشاره دارند و نه به پارامترها\&. هیچ انتسابی نمی‌تواند انجام شود، و تنها پرچم‌های معتبر دیگر \fB\-t\fP، \fB\-T\fP، \fB\-k\fP، \fB\-u\fP، \fB\-U\fP و \fB\-z\fP هستند\&. پرچم \fB\-t\fP ردگیری اجرا را برای این تابع روشن می‌کند؛ پرچم \fB\-T\fP نیز همین کار را انجام می‌دهد، اما ردگیری را برای هر تابع نام‌داری (نه ناشناس) که از تابع فعلی فراخوانی شود خاموش می‌کند، مگر اینکه آن تابع نیز پرچم \fB\-t\fP یا \fB\-T\fP را داشته باشد\&. پرچم‌های \fB\-u\fP و \fB\-U\fP باعث می‌شوند تابع برای بارگذاری خودکار نشانه‌گذاری شود؛ \fB\-U\fP همچنین هنگام بارگذاری تابع مانع از بسط نام‌های مستعار (alias) می‌شود\&. برای جزئیات به توضیحات دستور توکار `\fBautoload\fP\&' مراجعه کنید\&. .RS .PP توجه داشته باشید که دستور توکار \fBfunctions\fP قابلیت‌های پایه‌ای مشابهی با \fBtypeset \-f\fP فراهم می‌کند اما به چند گزینهٔ اضافی دسترسی می‌دهد؛ \fBautoload\fP برای حالت‌های \fBtypeset \-fu\fP و \fBtypeset \-fU\fP گزینه‌های اضافی بیشتری ارائه می‌دهد\&. .RE .TP \fB\-h\fP پنهان کردن: تنها برای پارامترهای ویژه (آن‌هایی که با `\&' در جدول \fIzshparam\fP(1) مشخص شده‌اند)، و برای پارامترهای محلی هم‌نام با یک پارامتر ویژه مفید است، هرچند برای بقیه نیز بی‌ضرر است\&. یک پارامتر ویژه با این ویژگی، هنگامی که محلی شود اثر ویژهٔ خود را حفظ نخواهد کرد\&. بنابراین پس از `\fBtypeset \-h PATH\fP\&'، تابعی حاوی `\fBtypeset PATH\fP' یک پارامتر محلی معمولی بدون رفتار معمول \fBPATH\fP ایجاد می‌کند\&. همچنین می‌توان این ویژگی را به خود پارامتر محلی داد؛ بنابراین درون یک تابع، `\fBtypeset \-h PATH\fP\&' یک پارامتر محلی معمولی ایجاد می‌کند و پارامتر ویژهٔ \fBPATH\fP به هیچ وجه دستکاری نمی‌شود\&. همچنین می‌توان با استفاده از `\fBtypeset +h \fP\fIspecial\fP\&' یک پارامتر محلی ایجاد کرد، که در آن نسخهٔ محلی \fIspecial\fP صرف‌نظر از داشتن ویژگی \fB\-h\fP، ویژگی‌های خاص خود را حفظ خواهد کرد\&. به پارامترهای ویژهٔ سراسری بارگذاری‌شده از ماژول‌های پوسته (در حال حاضر ماژول‌های موجود در \fBzsh/mapfile\fP و \fBzsh/parameter\fP) به طور خودکار ویژگی \fB\-h\fP داده می‌شود تا از تداخل نام‌ها جلوگیری شود\&. .TP \fB\-H\fP پنهان کردن مقدار: مشخص می‌کند که \fBtypeset\fP هنگام فهرست کردن پارامترها، مقدار پارامتر را نمایش ندهد؛ نمایش این پارامترها همیشه به گونه‌ای است که گویی پرچم `\fB+\fP\&' داده شده است\&. استفاده از پارامتر در سایر جنبه‌ها عادی است، و این گزینه در صورتی که پارامتر با نام، یا با الگو توسط گزینهٔ \fB\-m\fP مشخص شده باشد، اعمال نمی‌شود\&. این ویژگی به طور پیش‌فرض برای پارامترهای موجود در ماژول‌های \fBzsh/parameter\fP و \fBzsh/mapfile\fP فعال است\&. با این حال توجه داشته باشید که برخلاف پرچم \fB\-h\fP، این پرچم برای پارامترهای غیرویژه نیز مفید است\&. .TP \fB\-i\fP [ \fIn\fP ] استفاده از بازنمود درونی عدد صحیح (integer)\&. اگر \fIn\fP غیرصفر باشد، مبنای محاسباتی خروجی را تعریف می‌کند، در غیر این صورت با نخستین انتساب تعیین می‌شود\&. مبناهای بین ۲ تا ۳۶ (شامل هر دو) مجاز هستند\&. .TP \fB\-E\fP [ \fIn\fP ] استفاده از بازنمود درونی ممیز شناور با دقت مضاعف (double\-precision floating point)\&. در خروجی، متغیر به نماد علمی تبدیل خواهد شد\&. اگر \fIn\fP غیرصفر باشد، تعداد ارقام بااهمیت را برای نمایش مشخص می‌کند؛ پیش‌فرض ده است\&. .TP \fB\-F\fP [ \fIn\fP ] استفاده از بازنمود درونی ممیز شناور با دقت مضاعف\&. در خروجی، متغیر به نماد اعشاری ممیز ثابت (fixed\-point) تبدیل خواهد شد\&. اگر \fIn\fP غیرصفر باشد، تعداد ارقام پس از نقطهٔ اعشار را برای نمایش مشخص می‌کند؛ پیش‌فرض ده است\&. .TP \fB\-l\fP تبدیل نتیجه به حروف کوچک هر زمان که پارامتر بسط داده می‌شود\&. مقدار هنگام انتساب تبدیل \fIنمی‌شود\fP\&. .TP \fB\-r\fP نام‌های داده‌شده (\fIname\fPها) به عنوان فقط‌خواندنی علامت‌گذاری می‌شوند\&. توجه داشته باشید که اگر \fIname\fP یک پارامتر ویژه باشد، ویژگی فقط‌خواندنی را می‌توان روشن کرد، اما پس از آن نمی‌توان آن را خاموش کرد\&. .RS .PP اگر گزینهٔ \fBPOSIX_BUILTINS\fP تنظیم شده باشد، ویژگی فقط‌خواندنی محدودکننده‌تر است: متغیرهای مقداردهی‌نشده را می‌توان فقط‌خواندنی علامت‌گذاری کرد و پس از آن نمی‌توان مقداردهی کرد؛ علاوه بر این، ویژگی فقط‌خواندنی را نمی‌توان از هیچ متغیری حذف کرد\&. .PP با این حال همچنان امکان تغییر سایر ویژگی‌های متغیر وجود دارد، که برخی از آن‌ها مانند \fB\-U\fP یا \fB\-Z\fP بر مقدار تأثیر می‌گذارند\&. به طور کلی، نباید به ویژگی فقط‌خواندنی به عنوان یک سازوکار امنیتی تکیه کرد\&. .PP توجه داشته باشید که در zsh (مانند pdksh اما برخلاف بیشتر پوسته‌های دیگر) همچنان امکان ایجاد یک متغیر محلی هم‌نام وجود دارد زیرا این یک متغیر متفاوت در نظر گرفته می‌شود (گرچه این متغیر نیز می‌تواند فقط‌خواندنی علامت‌گذاری شود)\&. متغیرهای ویژه‌ای که فقط‌خواندنی شده‌اند، هنگام محلی شدن مقدار و ویژگی فقط‌خواندنی خود را حفظ می‌کنند\&. .RE .TP \fB\-t\fP پارامترهای نام‌برده را برچسب‌گذاری می‌کند\&. برچسب‌ها برای پوسته هیچ معنای خاصی ندارند\&. این پرچم در صورت استفاده همراه با \fB\-f\fP معنای متفاوتی دارد؛ به بالا مراجعه کنید\&. .TP \fB\-u\fP تبدیل نتیجه به حروف بزرگ هر زمان که پارامتر بسط داده می‌شود\&. مقدار هنگام انتساب تبدیل \fIنمی‌شود\fP\&. این پرچم در صورت استفاده همراه با \fB\-f\fP معنای متفاوتی دارد؛ به بالا مراجعه کنید\&. .TP \fB\-x\fP نشانه‌گذاری برای برون‌ریزی (export) خودکار به محیط دستوراتی که متعاقباً اجرا می‌شوند\&. اگر گزینهٔ \fBGLOBAL_EXPORT\fP تنظیم شده باشد، این به معنای گزینهٔ \fB\-g\fP خواهد بود، مگر اینکه \fB+g\fP نیز صراحتاً مشخص شده باشد؛ به عبارت دیگر پارامتر برای تابع دربرگیرنده محلی نمی‌شود\&. این برای سازگاری با نسخه‌های قبلی zsh است\&. .RE .TP \fBulimit\fP [ \fB\-HSa\fP ] [ { \fB\-bcdfiklmnpqrsTtvwx\fP | \fB\-N\fP \fIresource\fP } [ \fIlimit\fP ] \&.\&.\&. ] تنظیم یا نمایش محدودیت‌های منابع برای پوسته و فرایندهای آغازشده توسط پوسته\&. مقدار \fIlimit\fP می‌تواند یک عدد در واحد مشخص‌شده در زیر باشد یا یکی از مقادیر `\fBunlimited\fP\&' که محدودیت روی منبع را حذف می‌کند، یا `\fBhard\fP\&' که از مقدار کنونی حد سخت‌گیرانه (hard limit) روی منبع استفاده می‌کند\&. .RS.PP به‌طور پیش‌فرض، فقط محدودیت‌های نرم دستکاری می‌شوند\&. اگر پرچم \fB\-H\fP داده شود، به جای محدودیت‌های نرم از محدودیت‌های سخت استفاده می‌شود\&. اگر پرچم \fB\-S\fP همراه با پرچم \fB\-H\fP داده شود، هر دو محدودیت سخت و نرم تنظیم می‌شوند\&. .PP اگر هیچ گزینه‌ای استفاده نشود، محدودیت اندازه فایل (\fB\-f\fP) فرض می‌شود\&. .PP اگر \fIlimit\fP حذف شود، مقدار فعلی منابع مشخص‌شده چاپ می‌شود\&. هنگامی که مقدار بیش از یک منبع چاپ شود، نام محدودیت و واحد آن پیش از هر مقدار چاپ می‌شود\&. .PP هنگام پیمایش روی چندین منبع، اگر شل یک آرگومان با ساختار نادرست را تشخیص دهد بلافاصله متوقف خواهد شد\&. با این حال، اگر به دلیل دیگری در تنظیم یک محدودیت شکست بخورد، به تلاش برای تنظیم محدودیت‌های باقی‌مانده ادامه خواهد داد\&. .PP همه منابع زیر در تمام سیستم‌ها پشتیبانی نمی‌شوند\&. اجرای \fBulimit \-a\fP نشان می‌دهد که کدام‌یک پشتیبانی می‌شوند\&. .PP .PD 0 .TP \fB\-a\fP فهرست کردن تمام محدودیت‌های فعلی منابع\&. .TP \fB\-b\fP اندازه بافر سوکت به بایت (توجه: نه به کیلوبایت)\&. .TP \fB\-c\fP بلوک‌های ۵۱۲ بایتی روی اندازه core dumpها\&. .TP \fB\-d\fP کیلوبایت روی اندازه بخش داده (data segment)\&. .TP \fB\-e\fP بیشینه مقدار nice\&. .TP \fB\-f\fP بلوک‌های ۵۱۲ بایتی روی اندازه فایل‌های نوشته‌شده\&. .TP \fB\-i\fP تعداد سیگنال‌های در انتظار (pending)\&. .TP \fB\-k\fP تعداد kqueueهای تخصیص‌یافته\&. .TP \fB\-l\fP کیلوبایت روی اندازه حافظه قفل‌شده (locked\-in memory)\&. .TP \fB\-m\fP کیلوبایت روی اندازه حافظه فیزیکی\&. .TP \fB\-n\fP توصیف‌کننده‌های فایل باز\&. .TP \fB\-o\fP بیشینه تعداد اشیاء کتابخانه ریسه‌های POSIX\&. .TP \fB\-p\fP تعداد شبه‌ترمینال‌ها\&. .TP \fB\-q\fP بایت‌ها در صف‌های پیام POSIX\&. .TP \fB\-r\fP بیشینه اولویت بی‌درنگ (real time priority)\&. در برخی سیستم‌ها که این گزینه در دسترس نیست، مانند NetBSD، این گزینه برای سازگاری با \fBsh\fP اثری مشابه \fB\-T\fP دارد\&. .TP \fB\-s\fP کیلوبایت روی اندازه پشته (stack)\&. .TP \fB\-T\fP تعداد ریسه‌های همزمانِ در دسترس برای کاربر\&. .TP \fB\-t\fP ثانیه‌های CPU مورد استفاده\&. .TP \fB\-u\fP تعداد فرایندهای در دسترس برای کاربر\&. .TP \fB\-v\fP کیلوبایت روی اندازه حافظه مجازی\&. در برخی سیستم‌ها این به محدودیتی با عنوان \(lqفضای آدرس\(rq (address space) اشاره دارد\&. .TP \fB\-w\fP کیلوبایت روی اندازه حافظه مبادله‌شده (swapped out memory)\&. .TP \fB\-x\fP تعداد قفل‌ها روی فایل‌ها\&. .TP \fB\-y\fP بیشینه اندازه بافرها برای لوله‌ها/fifoها\&. .PD .PP یک منبع می‌تواند همچنین با یک عدد صحیح در قالب \(lq\fB\-N\fP \fIresource\fP\(rq مشخص شود، که در آن \fIresource\fP با عدد صحیح تعریف‌شده برای منبع توسط سیستم‌عامل مطابقت دارد\&. این می‌تواند برای تنظیم محدودیت منابعی که برای شل شناخته شده‌اند اما با حروف گزینه متناظر نیستند، استفاده شود\&. چنین محدودیت‌هایی با عدد در خروجی \(lq\fBulimit \-a\fP\(rq نمایش داده خواهند شد\&. .PP همچنین ممکن است این عدد خارج از محدوده محدودیت‌های کامپایل‌شده در شل باشد\&. شل در هر صورت تلاش خواهد کرد محدودیت را بخواند یا بنویسد، و در صورت عدم موفقیت، خطایی را گزارش خواهد داد\&. .RE .TP \fBumask\fP [ \fB\-S\fP ] [ \fImask\fP ] مقدار umask روی \fImask\fP تنظیم می‌شود\&. \fImask\fP می‌تواند یک عدد هشت‌هشتی (octal) یا یک مقدار نمادین باشد، همان‌طور که در صفحه راهنمای \fIchmod\fP(1) توصیف شده است\&. اگر \fImask\fP حذف شود، مقدار فعلی چاپ می‌شود\&. گزینه \fB\-S\fP باعث می‌شود ماسک به‌صورت یک مقدار نمادین چاپ شود\&. در غیر این صورت، ماسک به‌صورت یک عدد هشت‌هشتی چاپ می‌شود\&. توجه داشته باشید که در شکل نمادین، مجوزهایی که مشخص می‌کنید مواردی هستند که باید به کاربران مشخص‌شده مجاز دانسته شوند (نه این‌که منع شوند)\&. .TP \fBunalias\fP [ \fB\-ams\fP ] \fIname\fP \&.\&.\&. نام‌های مستعار را حذف می‌کند\&. این دستور مانند \fBunhash \-a\fP عمل می‌کند، با این تفاوت که گزینه \fB\-a\fP تمام نام‌های مستعار عادی یا سراسری (global) را حذف می‌کند، یا همراه با \fB\-s\fP تمام نام‌های مستعار پسوند را: در این حالت هیچ آرگومان \fIname\fP نباید درج شود\&. گزینه‌های \fB\-m\fP (حذف با الگو) و \fB\-s\fP بدون \fB\-a\fP (حذف نام‌های مستعار پسوندِ فهرست‌شده) مانند \fBunhash \-a\fP رفتار می‌کنند\&. توجه داشته باشید که معنی \fB\-a\fP بین \fBunalias\fP و \fBunhash\fP متفاوت است\&. .TP \fBunfunction\fP مشابه \fBunhash \-f\fP است\&. .TP \fBunhash\fP [ \fB\-adfms\fP ] \fIname\fP \&.\&.\&. عنصر با نام \fIname\fP را از جدول درهم‌سازی (hash table) داخلی حذف می‌کند\&. حالت پیش‌فرض، حذف عناصر از جدول درهم‌سازی دستورات است\&. گزینه \fB\-a\fP باعث می‌شود \fBunhash\fP نام‌های مستعار عادی یا سراسری را حذف کند؛ توجه داشته باشید هنگام حذف یک نام مستعار سراسری، آرگومان باید در نقل‌قول قرار گیرد تا پیش از ارسال به دستور، بسط داده نشود\&. گزینه \fB\-s\fP باعث می‌شود \fBunhash\fP نام‌های مستعار پسوند را حذف کند\&. گزینه \fB\-f\fP باعث می‌شود \fBunhash\fP توابع شل را حذف کند\&. گزینه \fB\-d\fP باعث می‌شود \fBunhash\fP دایرکتوری‌های نام‌گذاری‌شده را حذف کند\&. اگر پرچم \fB\-m\fP داده شود، آرگومان‌ها به عنوان الگو در نظر گرفته می‌شوند (باید داخل نقل‌قول باشند) و تمام عناصر جدول درهم‌سازی مربوطه که نامشان با آن‌ها مطابقت دارد حذف خواهند شد\&. .TP \fBunlimit\fP [ \fB\-hs\fP ] \fIresource\fP \&.\&.\&. محدودیت منبع برای هر \fIresource\fP روی محدودیت سخت تنظیم می‌شود\&. اگر پرچم \fB\-h\fP داده شود و شل دارای دسترسی‌های لازم باشد، محدودیت سخت منبع برای هر \fIresource\fP حذف می‌شود\&. منابع فرایند شل تنها در صورتی تغییر می‌کنند که پرچم \fB\-s\fP داده شده باشد\&. .RS .PP دستور \fBunlimit\fP به‌طور پیش‌فرض هنگامی که شل در حالت شبیه‌سازی شل دیگری آغاز شود در دسترس نیست\&. این دستور می‌تواند با دستور `\fBzmodload \-F zsh/rlimits b:unlimit\fP\&' در دسترس قرار گیرد\&. .RE .TP \fBunset\fP [ \fB\-fmv\fP ] \fIname\fP \&.\&.\&. هر پارامتر مشخص‌شده لغو مقدار (unset) می‌شود\&. پارامترهای محلی حتی در صورت لغو مقدار، محلی باقی می‌مانند؛ آن‌ها در حوزه مربوطه نامقداردهی‌شده به نظر می‌رسند، اما با پایان حوزه، مقدار پیشین همچنان دوباره پدیدار خواهد شد\&. .RS .PP عناصر منفرد پارامترهای آرایه انجمنی را می‌توان با استفاده از نحو زیرنویس (subscript) روی \fIname\fP لغو مقدار کرد، که باید داخل نقل‌قول قرار گیرد (یا کل دستور با پیشوند \fBnoglob\fP اجرا شود) تا از زیرنویس در برابر تولید نام فایل محافظت شود\&. .PP اگر پرچم \fB\-m\fP مشخص شود، آرگومان‌ها به عنوان الگو در نظر گرفته می‌شوند (باید داخل نقل‌قول باشند) و تمام پارامترهایی با نام‌های منطبق لغو مقدار می‌شوند\&. توجه داشته باشید که این مورد را نمی‌توان هنگام لغو مقدار عناصر آرایه انجمنی به کار برد، زیرا زیرنویس به عنوان بخشی از الگو تلقی خواهد شد\&. .PP پرچم \fB\-v\fP مشخص می‌کند که \fIname\fP به پارامترها اشاره دارد\&. این، رفتار پیش‌فرض است\&. .PP دستور \fBunset \-f\fP معادل \fBunfunction\fP است\&. .RE .TP \fBunsetopt\fP [ {\fB+\fP|\fB\-\fP}\fIoptions\fP | {\fB+\fP|\fB\-\fP}\fBo\fP \fIoption_name\fP ] [ \fIname\fP \&.\&.\&. ] غیرفعال کردن گزینه‌ها برای شل\&. تمام گزینه‌هایی که یا با پرچم‌ها یا با نام مشخص شده‌اند غیرفعال می‌شوند\&. اگر هیچ آرگومانی ارائه نشود، نام تمام گزینه‌هایی که در حال حاضر غیرفعال هستند چاپ می‌شود\&. اگر پرچم \fB\-m\fP داده شود، آرگومان‌ها به عنوان الگو در نظر گرفته می‌شوند (که باید داخل نقل‌قول قرار گیرند تا از تفسیر آن‌ها به عنوان الگوهای تطبیق الگو یا glob جلوگیری شود)، و تمام گزینه‌هایی که نامشان با این الگوها مطابقت دارد غیرفعال می‌شوند\&. .TP \fBvared\fP بخش `Zle Builtins\&' در \fIzshzle\fP(1) را ببینید\&..TP \fBwait\fP [ \fIjob\fP \&.\&.\&. ] برای کارها یا فرایندهای مشخص‌شده منتظر می‌ماند\&. اگر \fIjob\fP مشخص نشده باشد، برای تمام فرایندهای فرزند در حال حاضر فعال صبر می‌شود\&. هر \fIjob\fP می‌تواند مشخصات یک کار یا شناسه فرایند (process ID) مربوط به یک کار در جدول کارها باشد\&. وضعیت خروج این دستور همان وضعیت خروج کارِ منتظرمانده است\&. اگر \fIjob\fP نمایانگر یک کار یا شناسه فرایند ناشناخته باشد، یک هشدار چاپ می‌شود (مگر اینکه گزینه \fBPOSIX_BUILTINS\fP تنظیم شده باشد) و وضعیت خروج ۱۲۷ خواهد بود\&. .RS .PP این امکان وجود دارد که برای فرایندهای اخیری که در پس‌زمینه اجرا می‌شده‌اند (مشخص‌شده با شناسه فرایند، نه با کار) حتی اگر فرایند خاتمه یافته باشد، منتظر ماند\&. معمولاً شناسه فرایند با دریافت مقدار متغیر \fB$!\fP بلافاصله پس از شروع فرایند ثبت می‌شود\&. محدودیتی برای تعداد شناسه‌های فرایند به‌خاطرسپرده‌شده توسط پوسته وجود دارد؛ این حد توسط مقدار پارامتر پیکربندی سیستم \fBCHILD_MAX\fP تعیین می‌شود\&. هنگامی که این حد تکمیل شود، شناسه‌های فرایند قدیمی‌تر نادیده گرفته می‌شوند، با اولویت فرایندهایی که شروع آن‌ها کمتر از همه اخیر بوده است\&. .PP توجه داشته باشید که هیچ حفاظتی در برابر چرخش (wrapping) شناسه فرایند وجود ندارد، به این معنی که اگر wait به‌اندازه کافی زود اجرا نشود، این احتمال وجود دارد که فرایندی که برایش منتظر مانده‌اید فرایند اشتباهی باشد\&. وجود یک تداخل به این معناست که هر دو شناسه فرایند توسط پوسته ایجاد شده‌اند (زیرا سایر فرایندها ثبت نمی‌شوند) و کاربر بالقوه به هر دو علاقه‌مند است، بنابراین این مشکل ذاتی شناسه‌های فرایند است\&. .RE .TP \fBwhence\fP [ \fB\-vcwfpamsS\fP ] [ \fB\-x\fP \fInum\fP ] \fIname\fP \&.\&.\&. برای هر \fIname\fP مشخص می‌کند که اگر به عنوان نام دستور استفاده شود چگونه تفسیر خواهد شد\&. .RS .PP اگر \fIname\fP یک نام مستعار (alias)، دستور توکار (built\-in)، دستور خارجی، تابع پوسته، دستور هش‌شده (hashed command) یا یک کلمه رزروشده نباشد، وضعیت خروج غیرصفر خواهد بود و \-\- اگر \fB\-v\fP، \fB\-c\fP یا \fB\-w\fP داده شده باشد \-\- پیامی در خروجی استاندارد نوشته خواهد شد\&. (این برعکس پوسته‌های دیگر است که آن پیام را در خطای استاندارد می‌نویسند\&.) .PP دستور \fBwhence\fP زمانی بیشترین کاربرد را دارد که \fIname\fP فقط آخرین مؤلفه مسیر یک دستور باشد، یعنی فاقد `\fB/\fP\&' باشد؛ به‌ویژه، تطبیق الگو تنها در صورتی موفق می‌شود که فقط بخش غیردایرکتوری دستور داده شود\&. .PP .PD 0 .TP .PD \fB\-v\fP گزارش مفصل‌تری تولید می‌کند\&. .TP \fB\-c\fP نتایج را با قالبی شبیه به \fBcsh\fP چاپ می‌کند\&. این گزینه بر \fB\-v\fP اولویت دارد\&. .TP \fB\-w\fP برای هر \fIname\fP، عبارت `\fIname\fP\fB:\fP \fIword\fP\&' را چاپ می‌کند که در آن \fIword\fP بسته به اینکه \fIname\fP مطابق با یک نام مستعار، یک دستور توکار، یک دستور خارجی، یک تابع پوسته، یک دستور تعریف‌شده با دستور توکار \fBhash\fP، یک کلمه رزروشده، یا ناشناخته باشد، یکی از مقادیر \fBalias\fP، \fBbuiltin\fP، \fBcommand\fP، \fBfunction\fP، \fBhashed\fP، \fBreserved\fP یا \fBnone\fP خواهد بود\&. این گزینه بر \fB\-v\fP و \fB\-c\fP اولویت دارد\&. .TP \fB\-f\fP موجب نمایش محتویات تابع پوسته می‌شود، در حالی که در حالت عادی این اتفاق رخ نمی‌دهد مگر اینکه از پرچم \fB\-c\fP استفاده شده باشد\&. .TP \fB\-p\fP یک جستجوی مسیر برای \fIname\fP انجام می‌دهد، حتی اگر یک alias، کلمه رزروشده، تابع پوسته یا توکار باشد\&. .TP \fB\-a\fP جستجویی برای تمام موارد وقوع \fIname\fP در سراسر مسیر دستورات انجام می‌دهد\&. در حالت عادی فقط اولین مورد چاپ می‌شود\&. هنگام ترکیب با \fB\-m\fP، تنها نام‌هایی که در جدول هش دستورات آمده‌اند جستجو می‌شوند، اما تمام موارد وقوع آن نام‌ها چاپ خواهند شد\&. .TP \fB\-m\fP آرگومان‌ها به عنوان الگو در نظر گرفته می‌شوند (نویسه‌های الگو باید نقل‌قول شوند)، و اطلاعات برای هر ورودی در جدول هش دستورات که با یکی از این الگوها مطابقت دارد نمایش داده می‌شود\&. جدول هش ابتدا در صورت تغییرات در \fBPATH\fP دوباره پر می‌شود\&. .TP \fB\-s\fP اگر نام مسیر حاوی پیوندهای نمادین باشد، مسیر بدون پیوند نمادین را نیز چاپ می‌کند\&. .TP \fB\-S\fP مانند \fB\-s\fP، اما اگر نام مسیر با دنبال کردن چندین پیوند نمادین حل شده باشد، مراحل میانی نیز چاپ می‌شوند\&. پیوند نمادین حل‌شده در هر مرحله ممکن است در هر کجای مسیر باشد\&. .TP \fB\-x\fP \fInum\fP هنگام خروجی دادن توابع پوسته با استفاده از گزینه \fB\-c\fP، فاصله‌های تب را باز می‌کند (expand)\&. این همان تأثیر گزینه \fB\-x\fP در دستور توکار \fBfunctions\fP را دارد\&. .RE .TP \fBwhere\fP [ \fB\-wpmsS\fP ] [ \fB\-x\fP \fInum\fP ] \fIname\fP \&.\&.\&. معادل با \fBwhence \-ca\fP است\&. .TP \fBwhich\fP [ \fB\-wpamsS\fP ] [ \fB\-x\fP \fInum\fP ] \fIname\fP \&.\&.\&. معادل با \fBwhence \-c\fP است\&. .TP .PD 0 \fBzcompile\fP [ \fB\-U\fP ] [ \fB\-z\fP | \fB\-k\fP ] [ \fB\-R\fP | \fB\-M\fP ] \fIfile\fP [ \fIname\fP \&.\&.\&. ] .TP .PD 0 \fBzcompile\fP \fB\-ca\fP [ \fB\-m\fP ] [ \fB\-R\fP | \fB\-M\fP ] \fIfile\fP [ \fIname\fP \&.\&.\&. ] .TP .PD \fBzcompile \-t\fP \fIfile\fP [ \fIname\fP \&.\&.\&. ] از این دستور توکار می‌توان برای کامپایل کردن توابع یا اسکریپت‌ها، ذخیره شکل کامپایل‌شده در یک فایل، و بررسی فایل‌های حاوی شکل کامپایل‌شده استفاده کرد\&. این کار با جلوگیری از تجزیه (parsing) متن در هنگام خواندن فایل‌ها، امکان بارگذاری خودکار سریع‌تر توابع و منبع‌دهی (sourcing) اسکریپت‌ها را فراهم می‌کند\&. .RS .PP شکل اول (بدون گزینه‌های \fB\-c\fP، \fB\-a\fP یا \fB\-t\fP) یک فایل کامپایل‌شده ایجاد می‌کند\&. اگر فقط آرگومان \fIfile\fP داده شود، فایل خروجی نام `\fIfile\fP\fB\&.zwc\fP\&' را خواهد داشت و در همان دایرکتوری \fIfile\fP قرار می‌گیرد\&. پوسته هنگام بارگذاری خودکار تابع، فایل کامپایل‌شده را به جای فایل عادی تابع بارگذاری خواهد کرد؛ برای توضیحات مربوط به نحوه جستجوی توابع بارگذاری خودکار، بخش `Autoloading Functions\&' در \fIzshmisc\fP(1) را ببینید\&. پسوند \fB\&.zwc\fP مخفف «zsh word code» است\&. .PP اگر حداقل یک آرگومان \fIname\fP وجود داشته باشد، تمام فایل‌های نام‌برده‌شده در فایل خروجی \fIfile\fP که به عنوان اولین آرگومان مشخص شده کامپایل می‌شوند\&. اگر \fIfile\fP به \fB\&.zwc\fP ختم نشود، این پسوند به‌طور خودکار اضافه می‌شود\&. فایل‌های حاوی چندین تابع کامپایل‌شده فایل‌های «digest» نامیده می‌شوند و به عنوان عناصر آرایه ویژه \fBFPATH\fP/\fBfpath\fP در نظر گرفته شده‌اند\&. .PP شکل دوم، با گزینه‌های \fB\-c\fP یا \fB\-a\fP، تعاریف کامپایل‌شده تمام توابع نام‌برده‌شده را در \fIfile\fP می‌نویسد\&. برای \fB\-c\fP، نام‌ها باید توابعی باشند که در حال حاضر در پوسته تعریف شده‌اند، نه آن‌هایی که برای بارگذاری خودکار نشانه‌گذاری شده‌اند\&. توابع تعریف‌نشده که برای بارگذاری خودکار نشانه‌گذاری شده‌اند را می‌توان با استفاده از گزینه \fB\-a\fP نوشت؛ در این حالت \fBfpath\fP جستجو می‌شود و در صورت یافت شدن، محتوای فایل‌های تعریف آن توابع در \fIfile\fP کامپایل می‌شود\&. اگر هر دو گزینه \fB\-c\fP و \fB\-a\fP مشخص شوند، می‌توان نام هر دو نوع توابع تعریف‌شده و توابع نشانه‌گذاری‌شده برای بارگذاری خودکار را داد\&. در هر دو حالت، توابع موجود در فایل‌های نوشته‌شده با گزینه \fB\-c\fP یا \fB\-a\fP طوری بارگذاری خودکار می‌شوند که گویی گزینه \fBKSH_AUTOLOAD\fP غیرفعال بوده است\&. .PP دلیل مدیریت توابع بارگذاری‌شده و توابعی که هنوز بارگذاری نشده‌اند با گزینه‌های متفاوت این است که برخی از فایل‌های تعریف برای بارگذاری خودکار، چندین تابع را تعریف می‌کنند، از جمله تابعی با همان نام فایل، و در پایان، آن تابع را فراخوانی می‌کنند\&. در چنین مواردی خروجی `\fBzcompile \-c\fP\&' شامل توابع اضافی تعریف‌شده در فایل نمی‌شود و هر کد مقداردهی اولیه دیگر در فایل از دست می‌رود\&. استفاده از `\fBzcompile \-a\fP\&' تمام این اطلاعات اضافی را ثبت می‌کند\&. .PP اگر گزینه \fB\-m\fP با \fB\-c\fP یا \fB\-a\fP ترکیب شود، \fIname\fPها به عنوان الگو استفاده می‌شوند و تمام توابعی که نامشان با یکی از این الگوها مطابقت دارد نوشته خواهند شد\&. اگر هیچ \fIname\fPای داده نشود، تعاریف تمام توابعی که در حال حاضر تعریف شده‌اند یا به عنوان بارگذاری خودکار نشانه‌گذاری شده‌اند، نوشته خواهد شد\&. .PP توجه داشته باشید که از شکل دوم نمی‌توان برای کامپایل توابعی استفاده کرد که بازهدایت‌ها را به عنوان بخشی از تعریف به جای داخل بدنه تابع دارند؛ برای مثال .PP .RS .nf \fBfn1() { { \&.\&.\&. } >~/logfile }\fP .fi .RE .PP می‌تواند کامپایل شود، اما .PP .RS .nf \fBfn1() { \&.\&.\&. } >~/logfile\fP .fi .RE.PP نمی‌تواند\&. امکان استفاده از اولین شکل \fBzcompile\fP برای کامپایل توابع قابل بارگذاری خودکار (autoloadable) که به جای صرفاً بدنهٔ تابع شامل تعریف کامل تابع هستند، وجود دارد\&. .PP شکل سوم، همراه با گزینهٔ \fB\-t\fP، یک فایل کامپایل‌شدهٔ موجود را بررسی می‌کند\&. بدون آرگومان‌های بیشتر، نام فایل‌های اصلی که در آن کامپایل شده‌اند فهرست می‌شود\&. اولین سطر خروجی، نسخهٔ پوسته‌ای که فایل را کامپایل کرده و نحوهٔ استفاده از فایل را نشان می‌دهد (یعنی از طریق خواندن مستقیم آن یا نگاشت آن در حافظه)\&. در صورت وجود آرگومان، هیچ خروجی‌ای چاپ نمی‌شود و اگر تعاریف برای \fIتمام\fP \fIname\fPها در فایل کامپایل‌شده پیدا شود، وضعیت بازگشتی برابر با صفر و در صورتی که تعریف دست‌کم یک \fIname\fP پیدا نشود، غیر صفر تنظیم می‌شود\&. .PP سایر گزینه‌ها: .PP .PD 0 .TP .PD \fB\-U\fP هنگام کامپایل فایل‌های \fIname\fP، نام‌های مستعار (aliasها) بسط داده نمی‌شوند\&. .TP \fB\-R\fP هنگامی که فایل کامپایل‌شده خوانده می‌شود، محتوای آن به جای نگاشت در حافظه (memory\-mapped، گزینهٔ \fB\-M\fP را ببینید)، در حافظهٔ پوسته کپی می‌شود\&. این کار در سیستم‌هایی که از نگاشت حافظه پشتیبانی نمی‌کنند به طور خودکار رخ می‌دهد\&. .RS .PP هنگام کامپایل اسکریپت‌ها به جای توابع autoloadable، اغلب استفاده از این گزینه مطلوب است؛ در غیر این صورت کل فایل، از جمله کدهای مربوط به تعریف توابعی که پیش‌تر تعریف شده‌اند، نگاشت‌شده باقی می‌ماند و در نتیجه حافظه تلف می‌شود\&. .RE .TP \fB\-M\fP فایل کامپایل‌شده هنگام خوانده شدن در حافظهٔ پوسته نگاشت می‌شود\&. این کار به گونه‌ای انجام می‌گیرد که چندین نمونه از پوسته که روی یک میزبان یکسان اجرا می‌شوند، این فایل نگاشت‌شده را به اشتراک بگذارند\&. اگر نه \fB\-R\fP و نه \fB\-M\fP مشخص نشده باشند، دستور توکار \fBzcompile\fP بر اساس اندازهٔ فایل کامپایل‌شده تصمیم می‌گیرد چه کاری انجام دهد\&. .TP .PD 0 \fB\-k\fP .TP .PD \fB\-z\fP این گزینه‌ها زمانی استفاده می‌شوند که فایل کامپایل‌شده حاوی توابعی باشد که باید به صورت خودکار بارگذاری (autoload) شوند\&. اگر \fB\-z\fP داده شود، تابع به گونه‌ای بارگذاری خودکار می‌شود که گویی گزینهٔ \fBKSH_AUTOLOAD\fP تنظیم \fIنشده\fP است، حتی اگر در زمان خواندن فایل کامپایل‌شده تنظیم شده باشد، در حالی که اگر \fB\-k\fP داده شود، تابع به گونه‌ای بارگذاری می‌شود که گویی \fBKSH_AUTOLOAD\fP تنظیم \fIشده\fP است\&. این گزینه‌ها همچنین بر هرگونه گزینهٔ \fB\-k\fP یا \fB\-z\fP تعیین‌شده برای دستور توکار \fBautoload\fP اولویت دارند\&. اگر هیچ‌یک از این گزینه‌ها داده نشود، تابع بر اساس وضعیت گزینهٔ \fBKSH_AUTOLOAD\fP در زمان خواندن فایل کامپایل‌شده بارگذاری خواهد شد\&. این گزینه‌ها همچنین می‌توانند هر چند بار که لازم است میان \fIname\fPهای فهرست‌شده ظاهر شوند تا شیوهٔ بارگذاری تمام توابع بعدی را تا گزینهٔ \fB\-k\fP یا \fB\-z\fP بعدی مشخص نمایند\&. فایل ایجادشده همیشه شامل دو نسخه از قالب کامپایل‌شده است: یکی برای ماشین‌های big\-endian و دیگری برای ماشین‌های small\-endian\&. نتیجهٔ این امر این است که فایل کامپایل‌شده مستقل از ماشین است و در صورت خوانده شدن یا نگاشت شدن، تنها نیمی از فایل عملاً مورد استفاده قرار می‌گیرد (و نگاشت می‌شود)\&. .RE .TP \fBzformat\fP بخش `The zsh/zutil Module\&' را در \fIzshmodules\fP(1) ببینید\&. .TP \fBzftp\fP بخش `The zsh/zftp Module\&' را در \fIzshmodules\fP(1) ببینید\&. .TP \fBzle\fP بخش `Zle Builtins\&' را در \fIzshzle\fP(1) ببینید\&. .TP .PD 0 \fBzmodload\fP [ \fB\-dL\fP ] [ \fB\-s\fP ] [ \&.\&.\&. ] .TP .PD 0 \fBzmodload \-F\fP [ \fB\-alLme\fP \fB\-P\fP \fIparam\fP ] \fImodule\fP [ [\fB+\-\fP]\fIfeature\fP \&.\&.\&. ] .TP .PD 0 \fBzmodload \-e\fP [ \fB\-A\fP ] [ \&.\&.\&. ] .TP .PD 0 \fBzmodload\fP [ \fB\-a\fP [ \fB\-bcpf\fP [ \fB\-I\fP ] ] ] [ \fB\-iL\fP ] \&.\&.\&. .TP .PD 0 \fBzmodload\fP \fB\-u\fP [ \fB\-abcdpf\fP [ \fB\-I\fP ] ] [ \fB\-iL\fP ] \&.\&.\&. .TP .PD 0 \fBzmodload\fP \fB\-A\fP [ \fB\-L\fP ] [ \fImodalias\fP[\fB=\fP\fImodule\fP] \&.\&.\&. ] .TP .PD \fBzmodload\fP \fB\-R\fP \fImodalias\fP \&.\&.\&. عملیات مربوط به ماژول‌های قابل بارگذاری zsh را انجام می‌دهد\&. بارگذاری ماژول‌ها در حین اجرای پوسته (`بارگذاری پویا\&') در تمام سیستم‌عامل‌ها یا تمام نصب‌ها در یک سیستم‌عامل خاص در دسترس نیست، هرچند خود دستور \fBzmodload\fP همواره در دسترس است و می‌تواند برای دستکاری ماژول‌های تعبیه‌شده در نسخه‌هایی از فایل اجرایی پوسته که فاقد بارگذاری پویا هستند استفاده شود\&. .RS .PP بدون آرگومان، نام تمام ماژول‌های دودویی که در حال حاضر بارگذاری شده‌اند چاپ می‌شود\&. گزینهٔ \fB\-L\fP باعث می‌شود این فهرست در قالب مجموعه‌ای از دستورهای \fBzmodload\fP درآید\&. شکل‌های دارای آرگومان عبارتند از: .PP .PD 0 .TP .PD 0 \fBzmodload\fP [ \fB\-is\fP ] \fIname\fP \&.\&.\&. .TP .PD \fBzmodload\fP \fB\-u\fP [ \fB\-i\fP ] \fIname\fP \&.\&.\&. در ساده‌ترین حالت، \fBzmodload\fP یک ماژول دودویی را بارگذاری می‌کند\&. ماژول باید در فایلی با نامی متشکل از \fIname\fP مشخص‌شده به همراه یک پسوند استاندارد، معمولاً `\fB\&.so\fP\&' (در HPUX به صورت `\fB\&.sl\fP') باشد\&. اگر ماژولی که باید بارگذاری شود از قبل بارگذاری شده باشد، ماژول تکراری نادیده گرفته می‌شود\&. اگر \fBzmodload\fP ناسازگاری‌ای مانند نام ماژول نامعتبر یا فهرست وابستگی چرخشی را تشخیص دهد، بلوک کد فعلی متوقف می‌شود\&. در صورت در دسترس بودن، ماژول در صورت نیاز بارگذاری می‌شود، در حالی که در صورت در دسترس نبودن، وضعیت غیر صفر در سکوت بازگردانده می‌شود\&. گزینهٔ \fB\-i\fP برای سازگاری پذیرفته شده است اما هیچ اثری ندارد\&. .RS .PP ماژول تعیین‌شده در \fIname\fP به همان روشی که برای دستورها جستجو می‌شود مورد جستجو قرار می‌گیرد، با این تفاوت که به جای \fB$path\fP از \fB$module_path\fP استفاده می‌شود\&. با این حال، جستجوی مسیر حتی زمانی که نام ماژول شامل یک `\fB/\fP\&' باشد (که معمولاً همین‌طور است) انجام می‌پذیرد\&. هیچ راهی برای جلوگیری از جستجوی مسیر وجود ندارد\&. .PP اگر ماژول از قابلیت‌ها پشتیبانی کند (به زیر مراجعه کنید)، \fBzmodload\fP هنگام بارگذاری ماژول تلاش می‌کند همهٔ قابلیت‌ها را فعال کند\&. اگر ماژول با موفقیت بارگذاری شود اما همهٔ قابلیت‌ها فعال نشوند، \fBzmodload\fP وضعیت ۲ را بازمی‌گرداند\&. .PP اگر گزینهٔ \fB\-s\fP مشخص شود، در صورتی که ماژول در دسترس نباشد خطایی چاپ نمی‌شود (اگرچه سایر خطاها که نشان‌دهندهٔ اشکال در ماژول هستند چاپ می‌شوند)\&. وضعیت بازگشتی نشان می‌دهد که آیا ماژول بارگذاری شده است یا خیر\&. این گزینه زمانی مناسب است که فراخواننده، ماژول را اختیاری در نظر بگیرد\&. .PP با \fB\-u\fP، دستور \fBzmodload\fP ماژول‌ها را تخلیه (unload) می‌کند\&. باید همان \fIname\fPای داده شود که هنگام بارگذاری ماژول مشخص شده بود، اما نیازی نیست که ماژول در سیستم‌فایل موجود باشد\&. گزینهٔ \fB\-i\fP در صورتی که ماژول از قبل تخلیه شده باشد (یا هرگز بارگذاری نشده باشد) از نمایش خطا جلوگیری می‌کند\&. .PP هر ماژول دارای یک تابع boot و یک تابع cleanup است\&. اگر تابع boot آن ناموفق باشد، ماژول بارگذاری نخواهد شد\&. به همین ترتیب، یک ماژول تنها در صورتی می‌تواند تخلیه شود که تابع cleanup آن با موفقیت اجرا شود\&. .RE .TP \fBzmodload \-F\fP [ \fB\-almLe\fP \fB\-P\fP \fIparam\fP ] \fImodule\fP [ [\fB+\-\fP]\fIfeature\fP \&.\&.\&. ] دستور \fBzmodload \-F\fP امکان کنترل گزینشی‌تری را بر قابلیت‌های ارائه‌شده توسط ماژول‌ها فراهم می‌آورد\&. بدون گزینه‌های دیگر به جز \fB\-F\fP، ماژول نام‌برده‌شده در \fImodule\fP در صورتی که از قبل بارگذاری نشده باشد، بارگذاری می‌شود و فهرست \fIfeature\fPها به وضعیت خواسته‌شده تنظیم می‌گردد\&. اگر هیچ \fIfeature\fPی مشخص نشده باشد، ماژول در صورت عدم بارگذاری قبلی، بارگذاری می‌شود، اما وضعیت قابلیت‌ها بدون تغییر باقی می‌ماند\&. هر قابلیت می‌تواند با \fB+\fP برای روشن کردن آن یا با \fB\-\fP برای خاموش کردن آن پیشوندگذاری شود؛ در صورت عدم حضور هر دو نویسه، \fB+\fP فرض می‌گردد\&. هر قابلیتی که صریحاً ذکر نشده باشد در وضعیت کنونی خود رها می‌شود؛ اگر ماژول قبلاً بارگذاری نشده باشد، این به معنای غیرفعال ماندن چنین قابلیت‌هایی خواهد بود\&. وضعیت بازگشتی در صورت تنظیم موفق تمام قابلیت‌ها صفر، در صورت عدم موفقیت در بارگذاری ماژول ۱، و در صورتی که برخی قابلیت‌ها تنظیم نشوند (به عنوان مثال، یک پارامتر نتواند اضافه شود زیرا پارامتر متفاوتی با همان نام وجود دارد) اما ماژول بارگذاری شده باشد، ۲ است\&. .RS .PP قابلیت‌های استاندارد شامل دستورهای توکار (builtins)، شرط‌ها (conditions)، پارامترها و توابع ریاضی هستند؛ این موارد به ترتیب با پیشوندهای `\fBb:\fP\&'، `\fBc:\fP' (`\fBC:\fP\&' برای شرط میان‌وند یا infix)، `\fBp:\fP' و `\fBf:\fP' مشخص می‌شوند و پس از آن‌ها نامی می‌آید که قابلیت متناظر در پوسته خواهد داشت\&. برای نمونه، `\fBb:strftime\fP\&' نشان‌دهندهٔ یک دستور توکار به نام \fBstrftime\fP و `\fBp:EPOCHSECONDS\fP\&' نشان‌دهندهٔ یک پارامتر به نام \fBEPOCHSECONDS\fP است\&. ماژول ممکن است قابلیت‌های دیگری (قابلیت‌های `abstract\&') مخصوص به خود را طبق آنچه در مستنداتش آمده ارائه دهد؛ این قابلیت‌ها هیچ پیشوندی ندارند\&. .PP با \fB\-l\fP یا \fB\-L\fP، قابلیت‌های ارائه‌شده توسط ماژول فهرست می‌شوند\&. تنها با \fB\-l\fP، فهرستی از قابلیت‌ها به همراه وضعیت آن‌ها در هر سطر یک قابلیت نمایش داده می‌شود\&. تنها با \fB\-L\fP، یک دستور \fBzmodload \-F\fP نمایش داده می‌شود که موجب روشن شدن قابلیت‌های فعال ماژول می‌گردد\&. با \fB\-lL\fP، یک دستور \fBzmodload \-F\fP نمایش داده می‌شود که باعث تنظیم تمام قابلیت‌ها بر روی وضعیت کنونی‌شان خواهد شد\&. اگر یکی از این ترکیب‌ها به همراه گزینهٔ \fB\-P\fP \fIparam\fP داده شود، پارامتر \fIparam\fP روی آرایه‌ای از قابلیت‌ها تنظیم می‌شود؛ یا قابلیت‌ها به همراه وضعیتشان یا (در صورتی که تنها \fB\-L\fP داده شده باشد) قابلیت‌های فعال‌شده\&..PP با گزینهٔ \fB\-L\fP نام ماژول می‌تواند حذف شود؛ در این صورت فهرستی از تمام ویژگی‌های فعال‌شده برای همهٔ ماژول‌هایی که ویژگی ارائه می‌دهند، در قالب دستورهای \fBzmodload \-F\fP چاپ می‌شود\&. اگر \fB\-l\fP نیز داده شود، وضعیت هر دو ویژگی‌های فعال و غیرفعال در آن قالب خروجی داده می‌شود\&. .PP مجموعه‌ای از ویژگی‌ها ممکن است به همراه \fB\-l\fP یا \fB\-L\fP و یک نام ماژول ارائه شود؛ در این صورت تنها وضعیت آن ویژگی‌ها در نظر گرفته می‌شود\&. هر ویژگی می‌تواند با \fB+\fP یا \fB\-\fP آغاز شود، اما این نویسه هیچ اثری ندارد\&. اگر هیچ مجموعه‌ای از ویژگی‌ها ارائه نشود، تمام ویژگی‌ها در نظر گرفته می‌شوند\&. .PP با \fB\-e\fP، دستور ابتدا بررسی می‌کند که آیا ماژول بارگذاری شده است یا خیر؛ اگر نشده باشد، وضعیت ۱ بازگردانده می‌شود\&. اگر ماژول بارگذاری شده باشد، فهرست ویژگی‌های داده‌شده به‌عنوان آرگومان بررسی می‌شود\&. هر ویژگیِ ارائه‌شده بدون پیشوند، صرفاً آزمایش می‌شود تا مشخص گردد آیا ماژول آن را ارائه می‌دهد یا خیر؛ هر ویژگی با پیشوند \fB+\fP یا \fB\-\fP بررسی می‌شود تا مشخص گردد آیا ارائه شده و در وضعیت داده‌شده قرار دارد یا خیر\&. اگر آزمایش‌ها بر روی تمام ویژگی‌های درون فهرست موفقیت‌آمیز باشد، وضعیت ۰ بازگردانده می‌شود، در غیر این صورت وضعیت ۱\&. .PP با \fB\-m\fP، هر مدخل در فهرست ویژگی‌های ارائه‌شده به‌عنوان یک الگو در نظر گرفته می‌شود تا با فهرست ویژگی‌های ارائه‌شده توسط ماژول مطابقت داده شود\&. یک \fB+\fP یا \fB\-\fP اولیه باید به‌طور صریح مشخص شود\&. این گزینه نباید با گزینهٔ \fB\-a\fP ترکیب شود چرا که بارگذاری‌های خودکار باید به‌صورت صریح تعیین شوند\&. .PP با \fB\-a\fP، فهرست مشخص‌شده از ویژگی‌ها برای بارگذاری خودکار از ماژول معین علامت‌گذاری می‌شود، ماژولی که ممکن است هنوز بارگذاری نشده باشد\&. یک \fB+\fP اختیاری می‌تواند پیش از نام ویژگی بیاید\&. اگر ویژگی دارای پیشوند \fB\-\fP باشد، هر بارگذاری خودکارِ موجود حذف می‌شود\&. گزینه‌های \fB\-l\fP و \fB\-L\fP می‌توانند برای فهرست کردن بارگذاری‌های خودکار استفاده شوند\&. بارگذاری خودکار مختص تک‌تک ویژگی‌هاست؛ هنگامی که ماژول بارگذاری می‌شود، تنها ویژگی درخواست‌شده فعال می‌گردد\&. درخواست‌های بارگذاری خودکار در صورتی که ماژول متعاقباً تخلیه شود باقی می‌مانند، تا زمانی که یک `\fBzmodload \-Fa\fP \fImodule\fP \fB\-\fP\fIfeature\fP\&' صریح صادر شود\&. درخواست بارگذاری خودکار برای ویژگی‌ای از ماژولی که پیش‌تر بارگذاری شده خطا محسوب نمی‌شود\&. .PP هنگامی که ماژول بارگذاری می‌شود، هر بارگذاری خودکار با ویژگی‌هایی که واقعاً توسط ماژول ارائه شده‌اند تطبیق داده می‌شود؛ اگر ویژگی ارائه نشده باشد، درخواست بارگذاری خودکار حذف می‌گردد\&. یک پیام هشدار خروجی داده می‌شود؛ اگر ماژول برای ارائهٔ ویژگی متفاوتی بارگذاری شود، و آن بارگذاری خودکار موفق باشد، هیچ اثری بر وضعیت دستور جاری نخواهد داشت\&. اگر در زمان اجرای \fBzmodload \-Fa\fP ماژول از پیش بارگذاری شده باشد، یک پیام خطا چاپ شده و وضعیت ۱ بازگردانده می‌شود\&. .PP دستور \fBzmodload \-Fa\fP می‌تواند با گزینه‌های \fB\-l\fP، \fB\-L\fP، \fB\-e\fP و \fB\-P\fP برای فهرست کردن و آزمایش وجود ویژگی‌های قابل بارگذاری خودکار به کار رود\&. در این حالت، اگر \fB\-L\fP مشخص شده باشد، \fB\-l\fP نادیده گرفته می‌شود\&. دستور \fBzmodload \-FaL\fP بدون نام ماژول، بارگذاری‌های خودکار همهٔ ماژول‌ها را فهرست می‌کند\&. .PP توجه داشته باشید که تنها ویژگی‌های استاندارد شرح‌داده‌شده در بالا می‌توانند به‌صورت خودکار بارگذاری شوند؛ سایر ویژگی‌ها مستلزم آن هستند که ماژول پیش از فعال‌سازی بارگذاری شود\&. .RE .TP .PD 0 \fBzmodload\fP \fB\-d\fP [ \fB\-L\fP ] [ \fIname\fP ] .TP .PD 0 \fBzmodload\fP \fB\-d\fP \fIname\fP \fIdep\fP \&.\&.\&. .TP .PD \fBzmodload\fP \fB\-ud\fP \fIname\fP [ \fIdep\fP \&.\&.\&. ] گزینهٔ \fB\-d\fP می‌تواند برای مشخص کردن وابستگی‌های ماژول استفاده شود\&. ماژول‌های نام‌برده در آرگومان دوم و آرگومان‌های بعدی، پیش از ماژول نام‌برده در آرگومان نخست بارگذاری خواهند شد\&. .RS .PP با \fB\-d\fP و یک آرگومان، تمام وابستگی‌های آن ماژول فهرست می‌شوند\&. با \fB\-d\fP و بدون آرگومان، تمام وابستگی‌های ماژول‌ها فهرست می‌شوند\&. این فهرست‌بندی به‌طور پیش‌فرض در قالبی شبیه به Makefile است\&. گزینهٔ \fB\-L\fP این قالب را به فهرستی از دستورهای \fBzmodload \-d\fP تغییر می‌دهد\&. .PP اگر هر دو گزینهٔ \fB\-d\fP و \fB\-u\fP استفاده شوند، وابستگی‌ها حذف می‌شوند\&. اگر تنها یک آرگومان داده شود، تمام وابستگی‌های آن ماژول حذف می‌شوند\&. .RE .TP .PD 0 \fBzmodload\fP \fB\-ab\fP [ \fB\-L\fP ] .TP .PD 0 \fBzmodload\fP \fB\-ab\fP [ \fB\-i\fP ] \fIname\fP [ \fIbuiltin\fP \&.\&.\&. ] .TP .PD \fBzmodload\fP \fB\-ub\fP [ \fB\-i\fP ] \fIbuiltin\fP \&.\&.\&. گزینهٔ \fB\-ab\fP دستورهای توکارِ دارای بارگذاری خودکار را تعریف می‌کند\&. این گزینه \fIbuiltin\fPهای مشخص‌شده را تعریف می‌نماید\&. هنگامی که هر یک از این توکارها فراخوانی شوند، ماژول مشخص‌شده در آرگومان نخست بارگذاری شده و تمام ویژگی‌های آن فعال می‌گردد (برای کنترل گزینشی ویژگی‌ها از `\fBzmodload \-F \-a\fP\&' همان‌طور که در بالا شرح داده شد استفاده کنید)\&. اگر تنها \fIname\fP داده شود، یک دستور توکار با نامی یکسان با ماژول تعریف می‌شود\&. گزینهٔ \fB\-i\fP در صورتی که دستور توکار از قبل تعریف شده یا دارای بارگذاری خودکار باشد، خطا را نادیده می‌گیرد، اما نه در صورتی که دستور توکار دیگری با همان نام از پیش تعریف شده باشد\&. .RS .PP با \fB\-ab\fP و بدون آرگومان، تمام توکارهای دارای بارگذاری خودکار فهرست می‌شوند، و نام ماژول (در صورت تفاوت) در پرانتز پس از نام توکار نمایش داده می‌شود\&. گزینهٔ \fB\-L\fP این قالب را به فهرستی از دستورهای \fBzmodload \-a\fP تغییر می‌دهد\&. .PP اگر \fB\-b\fP همراه با گزینهٔ \fB\-u\fP استفاده شود، دستورهای توکاری را که قبلاً با \fB\-ab\fP تعریف شده‌اند حذف می‌کند\&. این امر تنها در صورتی ممکن است که دستور توکار هنوز بارگذاری نشده باشد\&. در صورتی که دستور توکار از قبل حذف شده باشد (یا هرگز وجود نداشته باشد)، \fB\-i\fP از نمایش خطا جلوگیری می‌کند\&. .PP درخواست‌های بارگذاری خودکار در صورتی که ماژول متعاقباً تخلیه شود باقی می‌مانند تا زمانی که یک `\fBzmodload \-ub\fP \fIbuiltin\fP\&' صریح صادر شود\&. .RE .TP .PD 0 \fBzmodload\fP \fB\-ac\fP [ \fB\-IL\fP ] .TP .PD 0 \fBzmodload\fP \fB\-ac\fP [ \fB\-iI\fP ] \fIname\fP [ \fIcond\fP \&.\&.\&. ] .TP .PD \fBzmodload\fP \fB\-uc\fP [ \fB\-iI\fP ] \fIcond\fP \&.\&.\&. گزینهٔ \fB\-ac\fP برای تعریف کدهای شرطی با بارگذاری خودکار استفاده می‌شود\&. رشته‌های \fIcond\fP نام شرط‌های تعریف‌شده توسط ماژول را مشخص می‌کنند\&. گزینهٔ اختیاری \fB\-I\fP برای تعریف نام‌های شرط میانوندی استفاده می‌شود\&. بدون این گزینه، نام‌های شرط پیشوندی تعریف می‌گردند\&. .RS .PP در صورت مشخص نشدن نام‌های شرط، تمام نام‌های تعریف‌شده فهرست می‌شوند (در صورت تعیین گزینهٔ \fB\-L\fP، به‌صورت مجموعه‌ای از دستورهای \fBzmodload\fP)\&. .PP گزینهٔ \fB\-uc\fP تعاریف شرط‌های با بارگذاری خودکار را حذف می‌کند\&. .RE .TP .PD 0 \fBzmodload\fP \fB\-ap\fP [ \fB\-L\fP ] .TP .PD 0 \fBzmodload\fP \fB\-ap\fP [ \fB\-i\fP ] \fIname\fP [ \fIparameter\fP \&.\&.\&. ] .TP .PD \fBzmodload\fP \fB\-up\fP [ \fB\-i\fP ] \fIparameter\fP \&.\&.\&. گزینهٔ \fB\-p\fP شبیه به گزینه‌های \fB\-b\fP و \fB\-c\fP است، اما در عوض باعث می‌شود \fBzmodload\fP بر روی پارامترهای دارای بارگذاری خودکار عمل کند\&. .TP .PD 0 \fBzmodload\fP \fB\-af\fP [ \fB\-L\fP ] .TP .PD 0 \fBzmodload\fP \fB\-af\fP [ \fB\-i\fP ] \fIname\fP [ \fIfunction\fP \&.\&.\&. ] .TP .PD \fBzmodload\fP \fB\-uf\fP [ \fB\-i\fP ] \fIfunction\fP \&.\&.\&. گزینهٔ \fB\-f\fP مانند گزینه‌های \fB\-b\fP، \fB\-p\fP و \fB\-c\fP است، اما در عوض باعث می‌شود \fBzmodload\fP بر روی توابع ریاضیِ دارای بارگذاری خودکار عمل کند\&. .TP .PD 0 \fBzmodload\fP \fB\-a\fP [ \fB\-L\fP ] .TP .PD 0 \fBzmodload\fP \fB\-a\fP [ \fB\-i\fP ] \fIname\fP [ \fIbuiltin\fP \&.\&.\&. ] .TP .PD \fBzmodload\fP \fB\-ua\fP [ \fB\-i\fP ] \fIbuiltin\fP \&.\&.\&. معادل با \fB\-ab\fP و \fB\-ub\fP\&. .TP \fBzmodload \-e\fP [ \fB\-A\fP ] [ \fIstring\fP \&.\&.\&. ] گزینهٔ \fB\-e\fP بدون آرگومان تمام ماژول‌های بارگذاری‌شده را فهرست می‌کند؛ اگر گزینهٔ \fB\-A\fP نیز داده شده باشد، نام‌های مستعار ماژولِ متناظر با ماژول‌های بارگذاری‌شده نیز نمایش داده می‌شوند\&. اگر آرگومان‌هایی ارائه شوند، چیزی چاپ نمی‌شود؛ وضعیت بازگشتی در صورتی که تمام \fIstring\fPهای داده‌شده به‌عنوان آرگومان نام ماژول‌های بارگذاری‌شده باشند صفر، و در صورتی که دست‌کم یک \fIstring\fP نام ماژولی بارگذاری‌شده نباشد، یک تنظیم می‌شود\&. این می‌تواند برای بررسی در دسترس بودن مواردی که توسط ماژول‌ها پیاده‌سازی شده‌اند به کار رود\&. در این حالت، هر نام مستعاری به‌طور خودکار رفع (resolve) می‌شود و پرچم \fB\-A\fP استفاده نخواهد شد\&. .TP \fBzmodload\fP \fB\-A\fP [ \fB\-L\fP ] [ \fImodalias\fP[\fB=\fP\fImodule\fP] \&.\&.\&. ] به ازای هر آرگومان، اگر هر دو \fImodalias\fP و \fImodule\fP داده شده باشند، \fImodalias\fP را به‌عنوان یک نام مستعار برای ماژول \fImodule\fP تعریف می‌کند\&. اگر ماژول \fImodalias\fP بعداً درخواست شود، چه از طریق فراخوانی \fBzmodload\fP یا به‌صورت ضمنی، پوسته تلاش خواهد کرد تا \fImodule\fP را به جای آن بارگذاری کند\&. اگر \fImodule\fP داده نشود، تعریف \fImodalias\fP را نمایش می‌دهد\&. اگر هیچ آرگومانی داده نشود، تمام نام‌های مستعار تعریف‌شده برای ماژول‌ها فهرست می‌شوند\&. هنگام فهرست‌بندی، اگر پرچم \fB\-L\fP نیز داده شده باشد، تعریف را به‌صورت یک دستور \fBzmodload\fP برای بازسازی نام مستعار فهرست می‌کند\&. .RS.PP وجود نام‌های مستعار برای پودمان‌ها کاملاً مستقل از این است که نام حل‌شده در عمل به عنوان یک پودمان بارگذاری شده باشد یا خیر: تا زمانی که نام مستعار وجود دارد، بارگذاری و تخلیه پودمان تحت هر نام مستعاری دقیقاً همان اثر استفاده از نام حل‌شده را دارد، و تأثیری بر پیوند میان نام مستعار و نام حل‌شده نمی‌گذارد؛ این پیوند را می‌توان با \fBzmodload \-R\fP یا با تعریف مجدد نام مستعار حذف کرد\&. زنجیره‌هایی از نام‌های مستعار (یعنی جایی که نخستین نام حل‌شده خود یک نام مستعار است) تا زمانی که دَوَرانی (حلقوی) نباشند معتبر هستند\&. از آنجا که نام‌های مستعار قالبی مشابه نام‌های پودمان دارند، می‌توانند شامل جداکننده‌های مسیر نیز باشند: در این حالت، هیچ نیازی به وجود خارجی بخشی از مسیر مشخص‌شده نیست، زیرا نام مستعار ابتدا حل خواهد شد\&. برای نمونه، «\fBany/old/alias\fP» همواره یک نام مستعار معتبر است\&. .PP وابستگی‌هایی که به پودمان‌های دارای نام مستعار اضافه می‌شوند، در واقع به پودمان حل‌شده افزوده خواهند شد؛ این وابستگی‌ها حتی در صورت حذف نام مستعار باقی می‌مانند\&. ساخت نام مستعاری که نام آن مشابه یکی از پودمان‌های استاندارد پوسته باشد و به پودمان دیگری حل شود، مجاز است\&. با این حال، اگر پودمانی دارای وابستگی باشد، امکان استفاده از نام آن پودمان به عنوان یک نام مستعار وجود نخواهد داشت، چرا که پودمان مذکور پیشاپیش به خودی خود به عنوان یک پودمان قابل بارگذاری نشانه‌گذاری شده است\&. .PP جدا از موارد بالا، از نام‌های مستعار می‌توان در دستور \fBzmodload\fP در هر جایی که نام پودمان مورد نیاز است استفاده کرد\&. با این حال، نام‌های مستعار در فهرست پودمان‌های بارگذاری‌شده حاصل از اجرای سادهٔ «\fBzmodload\fP» نشان داده نخواهند شد\&. .RE .TP \fBzmodload\fP \fB\-R\fP \fImodalias\fP \&.\&.\&. به ازای هر آرگومان \fImodalias\fP که پیش‌تر از طریق \fBzmodload \-A\fP به عنوان نام مستعار پودمان تعریف شده است، آن نام مستعار را حذف می‌کند\&. اگر موردی تعریف نشده باشد، خطایی رخ داده و از باقی خط صرف‌نظر می‌شود\&. .PP توجه داشته باشید که \fBzsh\fP هیچ تفاوتی بین پودمان‌هایی که به صورت درون‌برنامه‌ای به پوسته پیوند خورده‌اند (link شده‌اند) و پودمان‌هایی که به صورت پویا بارگذاری می‌شوند قائل نمی‌شود\&. در هر دو حالت، باید از این دستور توکار برای در دسترس قرار دادن توکارها و موارد دیگرِ تعریف‌شده توسط پودمان‌ها استفاده کرد (مگر اینکه پودمان بر اساس این تعاریف به صورت خودکار بارگذاری/autoload شود)\&. این موضوع حتی برای سیستم‌هایی که از بارگذاری پویای پودمان‌ها پشتیبانی نمی‌کنند نیز صادق است\&. .RE .TP \fBzparseopts\fP بخش «The zsh/zutil Module» را در \fIzshmodules\fP(1) ببینید\&. .TP \fBzprof\fP بخش «The zsh/zprof Module» را در \fIzshmodules\fP(1) ببینید\&. .TP \fBzpty\fP بخش «The zsh/zpty Module» را در \fIzshmodules\fP(1) ببینید\&. .TP \fBzregexparse\fP بخش «The zsh/zutil Module» را در \fIzshmodules\fP(1) ببینید\&. .TP \fBzsocket\fP بخش «The zsh/net/socket Module» را در \fIzshmodules\fP(1) ببینید\&. .TP \fBzstyle\fP بخش «The zsh/zutil Module» را در \fIzshmodules\fP(1) ببینید\&. .TP \fBztcp\fP بخش «The zsh/net/tcp Module» را در \fIzshmodules\fP(1) ببینید\&.