| ZSHBUILTINS(1) | General Commands Manual | ZSHBUILTINS(1) |
نام (NAME)
zshbuiltins - دستورهای توکار zsh
دستورهای توکار شل (SHELL BUILTIN COMMANDS)
برخی دستورهای توکار شل گزینههایی میپذیرند که در مدخلهای مربوطه شرح داده شدهاند؛ در فهرست زیر برای جلوگیری از سردرگمی با گزینههای شل که ممکن است بر رفتار دستورهای توکار نیز تأثیر بگذارند، اغلب با عنوان `flags' (پرچمها) از آنها یاد میشود. در این بخش مقدماتی، `option' همواره به معنای گزینهٔ یک دستور است که برای بیشتر کاربران خط فرمان آشنا است.
معمولاً گزینهها تکحرفی بوده و پیش از آنها یک خط تیره (-) میآید. گزینههایی که آرگومان میپذیرند، آن را یا بلافاصله پس از حرف گزینه یا پس از یک فاصله سفید دریافت میکنند، برای نمونه `print -C3 {1..9}' و `print -C 3 {1..9}' معادل یکدیگرند. آرگومانهای گزینهها با آرگومانهای دستور یکسان نیستند؛ مستندات مشخص میکند کدام به کدام است. گزینههایی که آرگومان نمیگیرند را میتوان در یک کلمه ادغام کرد، برای نمونه `print -rca -- *' و `print -r -c -a -- *' معادل یکدیگرند.
برخی دستورهای توکار شل گزینههایی نیز میپذیرند که بهجای `-' با `+' آغاز میشوند. فهرست زیر مشخص میکند کدام دستورها از این دستهاند.
گزینهها (به همراه آرگومانهای خاص خود، در صورت وجود) باید پیش از هرگونه آرگومان غیرگزینهای به صورت یک گروه ظاهر شوند؛ به محض یافتن نخستین آرگومان غیرگزینهای، پردازش گزینهها پایان مییابد.
به همهٔ دستورهای توکار بهجز `echo' و پیرایندههای پیشدستور (precommand modifiers)، حتی مواردی که هیچ گزینهای ندارند، میتوان آرگومان `--' را برای خاتمه دادن به پردازش گزینهها داد. این کار نشان میدهد که کلمات پس از آن آرگومانهای غیرگزینهای هستند، اما در غیر این صورت نادیده گرفته میشود. این قابلیت در مواردی مفید است که ممکن است آرگومانهای دستور با `-' آغاز شوند. بنا به دلایل تاریخی، بیشتر دستورهای توکار (از جمله `echo') یک `-' تنها را در یک کلمهٔ مجزا نیز برای این منظور شناسایی میکنند؛ توجه داشته باشید که این روش استاندارد کمتری دارد و استفاده از `--' توصیه میشود.
- - simple command
- بخش `Precommand Modifiers' را در zshmisc(1) ببینید.
- . file [ arg ... ]
- دستورها را از file خوانده و آنها را در محیط جاری شل اجرا میکند.
اگر file شامل اسلش نباشد، یا اگر PATH_DIRS تنظیم شده باشد، شل مؤلفههای $path را برای یافتن دایرکتوری حاوی file جستجو میکند. فایلهای موجود در دایرکتوری جاری خوانده نمیشوند مگر اینکه `.' در جایی از $path آمده باشد. اگر فایلی به نام `file.zwc' پیدا شود که تازهتر از file بوده و نگارش کامپایلشدهٔ (ایجادشده با دستور توکار zcompile) file باشد، دستورها بهجای file از آن فایل خوانده میشوند.
اگر هرگونه آرگومان arg داده شود، آنها به پارامترهای مکانی تبدیل میشوند؛ پس از پایان اجرای file، پارامترهای مکانی پیشین بازگردانده میشوند. با این حال، اگر هیچ آرگومانی داده نشود، پارامترهای مکانی همان پارامترهای بافت فراخواننده باقی میمانند و هیچ بازگردانی انجام نمیشود.
اگر file پیدا نشود، وضعیت بازگشتی 127 است؛ اگر file پیدا شود اما حاوی خطای نحوی باشد، وضعیت بازگشتی 126 است؛ در غیر این صورت، وضعیت بازگشتی همان وضعیت خروج آخرین دستور اجرا شده است.
- : [ arg ... ]
- این دستور هیچ کاری انجام نمیدهد، هرچند بسط معمول آرگومانها انجام میشود که ممکن است بر پارامترهای شل اثر بگذارد. وضعیت خروج صفر برگردانده میشود.
- alias [ {+|-}gmrsL ] [ name[=value] ... ]
- به ازای هر name دارای value متناظر، یک نام مستعار با آن مقدار تعریف میکند. وجود یک فاصله در انتهای value باعث میشود کلمهٔ بعدی نیز برای بسط نام مستعار بررسی شود. اگر پرچم -g داده شود، یک نام مستعار سراسری تعریف میکند؛ نامهای مستعار سراسری حتی اگر در جایگاه دستور نباشند نیز بسط داده میشوند:
% 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
اگر پرچم -s داده شود، یک نام مستعار پسوند تعریف میکند: اگر کلمهٔ دستور در خط فرمان به صورت `text.name' باشد، که در آن text هر رشتهٔ غیرخالی است، با متن `value text.name' جایگزین میشود. توجه داشته باشید که با name به عنوان یک رشتهٔ دقیق (literal) رفتار میشود، نه یک الگو. فاصله در انتهای value در این حالت معنای خاصی ندارد. برای نمونه،
alias -s ps='gv --'
باعث میشود دستور `*.ps' به `gv -- *.ps' بسط یابد. از آنجا که بسط نامهای مستعار پیش از الگوخوانی (globbing) انجام میشود، سپس `*.ps' بسط خواهد یافت. نامهای مستعار پسوند یک فضای نام مجزا از سایر نامهای مستعار تشکیل میدهند (بنابراین در مثال بالا همچنان امکان ساخت یک نام مستعار برای دستور ps وجود دارد) و این دو دسته هرگز با هم فهرست نمیشوند.
به ازای هر name بدون value، مقدار name (در صورت وجود) را چاپ میکند. بدون هیچ آرگومانی، تمامی نامهای مستعار تعریفشدهٔ کنونی بهجز نامهای مستعار پسوند را چاپ میکند. اگر پرچم -m داده شود، آرگومانها به عنوان الگو در نظر گرفته میشوند (باید نقلقول شوند تا از تفسیر شدنشان به عنوان الگوهای glob جلوگیری شود) و نامهای مستعار منطبق با این الگوها چاپ میشوند. هنگام چاپ نامهای مستعار و وجود یکی از پرچمهای -g، -r یا -s، چاپ به ترتیب به نامهای مستعار سراسری، عادی یا پسوندی محدود میشود؛ یک نام مستعار عادی نامی است که نه سراسری باشد و نه پسوندی. استفاده از `+' بهجای `-'، یا پایان دادن به فهرست گزینهها با یک `+' تنها، از چاپ مقادیر نامهای مستعار جلوگیری میکند.
اگر پرچم -L داده شود، هر نام مستعار را به شیوهای مناسب برای قرار دادن در یک اسکریپت راهاندازی چاپ میکند. اگر یک name (بدون value) داده شود که هیچ نام مستعاری برای آن تعریف نشده باشد، وضعیت خروج غیرصفر خواهد بود.
برای اطلاعات بیشتر درباره نامهای مستعار، شامل مشکلات رایج، بخش ALIASING را در zshmisc(1) ببینید.
- autoload [ {+|-}RTUXdkmrtWz ] [ -w ] [ name ... ]
- برای جزئیات کامل بخش `Autoloading Functions' را در zshmisc(1) ببینید. هنگام ارجاع اولیه به تابع، پارامتر fpath برای یافتن تعریف تابع جستجو خواهد شد.
اگر name شامل یک مسیر مطلق باشد، تابع به گونهای تعریف میشود که از فایل دادهشده بارگیری شود (با جستجوی معمول برای فایلهای dump در مکان مشخصشده). نام تابع همان بخش نام فایل (basename یا بخش غیردایرکتوری) است. به طور معمول اگر تابع در مکان دادهشده پیدا نشود یک خطا است؛ با این حال، اگر گزینهٔ -d داده شود، جستجو برای تابع به صورت پیشفرض به $fpath محول میشود. اگر تابعی با مسیر مطلق بارگیری شود، هر تابعی که از درون آن بارگیری شده و بدون مسیر مطلق برای autoload نشانهگذاری شده باشد، مسیر بارگیری تابع والد به طور موقت به ابتدای $fpath اضافه میشود.
اگر گزینهٔ -r یا -R داده شود، تابع بلافاصله جستجو شده و مکان آن برای استفاده هنگام اجرای تابع به صورت داخلی ثبت میشود؛ مسیر نسبی با استفاده از مقدار $PWD بسط داده میشود. این کار در برابر تغییر در $fpath پس از فراخوانی autoload محافظت میکند. با -r، اگر تابع پیدا نشود، تا زمان اجرا در سکوت حلنشده باقی میماند؛ با -R، به محض شکست جستجو یک پیام خطا چاپ شده و پردازش دستور بیدرنگ متوقف میشود، یعنی در زمان دستور autoload نه در زمان اجرای تابع.
پرچم -X فقط میتواند درون یک تابع شل استفاده شود. این پرچم باعث میشود تابع فراخواننده برای بارگیری خودکار نشانهگذاری شده و سپس بلافاصله بارگیری و اجرا شود، در حالی که آرایهٔ فعلی پارامترهای مکانی به عنوان آرگومان به آن داده میشود. این کار جایگزین تعریف قبلی تابع میشود. اگر تعریفی برای تابع یافت نشود، خطایی چاپ میشود و تابع تعریفنشده و نشانهگذاریشده برای بارگیری خودکار باقی میماند. اگر آرگومانی داده شود، به عنوان دایرکتوریای استفاده میشود (یعنی شامل نام تابع نیست) که تابع باید در آن پیدا شود؛ این گزینه میتواند با گزینهٔ -d ترکیب شود تا اگر تابع در مکان دادهشده نبود، جستجوی تابع به طور پیشفرض به $fpath واگذار شود.
پرچم +X تلاش میکند هر name را به عنوان یک تابع بارگیریشوندهٔ خودکار بارگیری کند، اما آن را اجرا نمیکند. وضعیت خروج در صورتی صفر (موفقیت) خواهد بود که تابع از قبل تعریف نشده باشد و تعریفی برای آن پیدا شود. این کار هیچیک از تعاریف موجود تابع را جایگزین نمیکند. اگر تابع از پیش تعریف شده باشد یا وقتی هیچ تعریفی یافت نشود، وضعیت خروج غیرصفر (شکست) خواهد بود. در حالت دوم، تابع تعریفنشده و نشانهگذاریشده برای بارگیری خودکار باقی میماند. اگر بارگیری خودکار به سبک ksh فعال باشد، تابع ایجادشده حاوی محتویات فایل به همراه فراخوانی به خود تابع خواهد بود که به انتهای آن ضمیمه شده است؛ بنابراین در نخستین فراخوانی تابع، رفتار عادی بارگیری خودکار ksh حاصل میشود. اگر پرچم -m نیز داده شود، با هر name مانند یک الگو رفتار میشود و تمام توابعی که از قبل برای بارگیری خودکار نشانهگذاری شده و با الگو تطابق دارند، بارگیری میشوند..PP با پرچم -t، ردیابی اجرای دستورها فعال میشود؛ با -T، ردیابی اجرا فقط برای تابع فعلی فعال میگردد و هنگام ورود به هر تابع فراخوانیشدهای که ردیابی برای آن فعال نشده باشد، غیرفعال میشود.
با پرچم -U، هنگام بارگذاری تابع از بسط نامهای مستعار (alias expansion) جلوگیری میشود.
با پرچم -w، آرگومانهای name به عنوان نام فایلهای کامپایلشده با دستور درونی zcompile در نظر گرفته میشوند و تمامی توابع تعریفشده در آنها برای بارگذاری خودکار نشانهگذاری میشوند.
پرچمهای -z و -k تابع را به گونهای نشانهگذاری میکنند که به ترتیب به سبک zsh یا ksh بارگذاری خودکار شود، درست مانند اینکه گزینه KSH_AUTOLOAD به ترتیب غیرفعال یا فعال شده باشد. این پرچمها تنظیمات این گزینه را در هنگام بارگذاری تابع بازنویسی (override) میکنند.
توجه داشته باشید که دستور autoload هیچ تلاشی نمیکند تا اطمینان حاصل کند گزینههای شلِ تنظیمشده در حین بارگذاری یا اجرای فایل، مقدار خاصی داشته باشند. برای این منظور، میتوان از دستور emulate استفاده کرد:
emulate zsh -c 'autoload -Uz func'
این دستور ترتیب میدهد که هنگام بارگذاری func، شل در حالت شبیهسازی بومی zsh باشد و این شبیهسازی هنگام اجرای func نیز اعمال گردد.
برخی از عملکردهای autoload توسط functions -u یا functions -U نیز ارائه میشوند، اما autoload رابط کاربری جامعتری است.
- bg [ job ... ]
- job ... &
- هر job مشخصشده، یا در صورت مشخص نشدن، کار فعلی را در پسزمینه قرار میدهد.
- bindkey
- بخش `Zle Builtins' در zshzle(1) را ببینید.
- break [ n ]
- خروج از یک حلقه محصورکننده for، while، until، select یا repeat. اگر عبارت حسابی n مشخص شده باشد، به جای یک سطح، از n سطح حلقه خارج میشود.
- builtin name [ args ... ]
- دستور توکار name را با آرگومانهای دادهشده args اجرا میکند.
- bye
- همانند exit.
- cap
- بخش `The zsh/cap Module' در zshmodules(1) را ببینید.
- cd [ -qsLP ] [ arg ]
- cd [ -qsLP ] old new
- cd [ -qsLP ] {+|-}n
- دایرکتوری فعلی را تغییر میدهد. در حالت اول، دایرکتوری فعلی را به arg تغییر میدهد، یا اگر arg مشخص نشده باشد، به مقدار $HOME تغییر مییابد. اگر arg برابر `-' باشد، به دایرکتوری قبلی تغییر مسیر میدهد.
در غیر این صورت، اگر arg با یک اسلش آغاز شود، برای تغییر مسیر به دایرکتوری ارائهشده توسط arg تلاش میکند.
اگر arg با اسلش آغاز نشود، رفتار به این بستگی دارد که آیا دایرکتوری فعلی `.' در فهرست دایرکتوریهای موجود در متغیر شل cdpath وجود دارد یا خیر. اگر وجود نداشته باشد، ابتدا تلاش میکند به دایرکتوری arg در زیر دایرکتوری فعلی برود، و اگر ناموفق بود اما cdpath تنظیم شده و حداقل حاوی یک عضو باشد، تلاش میکند به نوبت به دایرکتوری arg در زیر هر جزء از cdpath برود تا موفق شود. اگر `.' در cdpath آمده باشد، cdpath دقیقاً به ترتیب جستجو میشود به گونهای که `.' تنها در نقطه مناسب خود بررسی میشود.
در صورتی که گزینه POSIX_CD تنظیم شده باشد، ترتیب بررسی cdpath به همان ترتیبی که در مستندات آن گزینه شرح داده شده، تغییر مییابد.
اگر دایرکتوریای یافت نشود، گزینه CDABLE_VARS تنظیم شده باشد، و متغیری به نام arg وجود داشته باشد که مقدار آن با یک اسلش آغاز شود، مقدار آن به عنوان دایرکتوری در نظر گرفته میشود. در آن حالت، متغیر مذکور به جدول درهمسازی (hash table) دایرکتوریهای نامگذاریشده اضافه میشود.
حالت دوم cd، رشته new را به جای رشته old در نام دایرکتوری فعلی جایگزین کرده و تلاش میکند به این دایرکتوری جدید برود.
حالت سوم cd یک مدخل را از پشته دایرکتوریها استخراج کرده و به آن دایرکتوری تغییر مسیر میدهد. آرگومانی به شکل `+n' مدخلی از پشته را با شمارش از سمت چپ فهرست نمایشدادهشده توسط دستور dirs، با شروع از صفر، مشخص میکند. آرگومانی به شکل `-n' از سمت راست شمارش میکند. اگر گزینه PUSHD_MINUS تنظیم شده باشد، معانی `+' و `-' در این زمینه جابجا میشوند. اگر گزینه POSIX_CD تنظیم شده باشد، این حالت از cd شناخته نخواهد شد و به عنوان حالت اول تفسیر میشود.
اگر گزینه -q (بیصدا یا quiet) مشخص شده باشد، تابع قلاب chpwd و توابع موجود در آرایه chpwd_functions فراخوانی نمیشوند. این گزینه برای فراخوانیهایی از cd که محیط دیدهشده توسط یک کاربر تعاملی را تغییر نمیدهند، مفید است.
اگر گزینه -s مشخص شده باشد، در صورتی که مسیر دادهشده حاوی پیوندهای نمادین باشد، cd از تغییر دایرکتوری فعلی خودداری میکند. اگر گزینه -P داده شود یا گزینه CHASE_LINKS فعال باشد، پیوندهای نمادین به مقادیر واقعی خود وضوح مییابند. اگر گزینه -L داده شود، صرفنظر از وضعیت گزینه CHASE_LINKS، پیوندهای نمادین در مسیر دایرکتوری حفظ میشوند (و حل نمیشوند).
- chdir
- همانند cd.
- clone
- بخش `The zsh/clone Module' در zshmodules(1) را ببینید.
- command [ -pvV ] simple command
- آرگومان simple command به جای اینکه به عنوان یک تابع یا دستور توکار در نظر گرفته شود، به عنوان یک دستور خارجی در نظر گرفته شده و اجرا میشود. اگر گزینه POSIX_BUILTINS فعال باشد، دستورات توکار نیز اجرا خواهند شد اما برخی ویژگیهای خاص آنها سرکوب میگردد. پرچم -p باعث میشود تا به جای مسیر موجود در $path، یک مسیر پیشفرض جستجو شود. با پرچم -v، دستور command مشابه whence عمل میکند و با -V، معادل با whence -v است.
همچنین بخش `Precommand Modifiers' در zshmisc(1) را ببینید.
- comparguments
- بخش `The zsh/computil Module' در zshmodules(1) را ببینید.
- compcall
- بخش `The zsh/compctl Module' در zshmodules(1) را ببینید.
- compctl
- بخش `The zsh/compctl Module' در zshmodules(1) را ببینید.
- compdescribe
- بخش `The zsh/computil Module' در zshmodules(1) را ببینید.
- compfiles
- بخش `The zsh/computil Module' در zshmodules(1) را ببینید.
- compgroups
- بخش `The zsh/computil Module' در zshmodules(1) را ببینید.
- compquote
- بخش `The zsh/computil Module' در zshmodules(1) را ببینید.
- بخش `The zsh/computil Module' در zshmodules(1) را ببینید.
- comptry
- بخش `The zsh/computil Module' در zshmodules(1) را ببینید.
- compvalues
- بخش `The zsh/computil Module' در zshmodules(1) را ببینید.
- continue [ n ]
- تکرار بعدی حلقه محصورکننده for، while، until، select یا repeat را از سر میگیرد. اگر عبارت حسابی n مشخص شده باشد، از n-1 حلقه خارج شده و کار را در n-امین حلقه محصورکننده از سر میگیرد.
- declare
- همانند typeset.
- dirs [ -c ] [ arg ... ].TP
- dirs [ -lpv ] بدون آرگومان، محتویات پشتهٔ دایرکتوریها را چاپ میکند. دایرکتوریها با دستور pushd به این پشته اضافه میشوند، و با دستورهای cd یا popd حذف میگردند. اگر آرگومانهایی مشخص شوند، آنها را در پشتهٔ دایرکتوری بارگذاری کرده، جایگزین محتوای قبلی آن میکند و دایرکتوری کنونی را به پشته اضافه مینماید.
- -c
- پاک کردن پشتهٔ دایرکتوریها.
- -l
- چاپ کامل نام دایرکتوریها به جای استفاده از عبارتهای ~ (بخش Dynamic و Static named directories را در zshexpn(1) ببینید).
- -p
- چاپ مدخلهای دایرکتوری، هر کدام در یک خط جداگانه.
- -v
- شمارهگذاری دایرکتوریها در پشته هنگام چاپ.
- disable [ -afmprs ] name ...
- موقتاً عناصر یا الگوهای نامبردهشدهٔ (name) جدول درهمسازی را غیرفعال میکند. حالت پیشفرض، غیرفعال کردن دستورهای توکار است. این به شما اجازه میدهد از یک دستور خارجی با نامی مشابه یک دستور توکار استفاده کنید. گزینهٔ -a باعث میشود disable روی نامهای مستعار عادی یا سراسری عمل کند. گزینهٔ -s باعث میشود disable روی نامهای مستعار پسوند عمل کند. گزینهٔ -f باعث میشود disable روی توابع پوسته عمل کند. گزینهٔ -r باعث میشود disable روی کلمات رزروشده عمل کند. بدون آرگومان، تمام عناصر غیرفعالشده از جدول درهمسازی متناظر چاپ میشوند. با پرچم -m، آرگومانها به عنوان الگو در نظر گرفته میشوند (که برای جلوگیری از اعمال بسط نام فایل، باید در نقلقول قرار گیرند)، و تمام عناصر جدول درهمسازی متناظر که با این الگوها مطابقت داشته باشند غیرفعال میشوند. اشیاء غیرفعالشده را میتوان با دستور enable مجدداً فعال کرد.
با گزینهٔ -p، آرگومانهای name ... به عناصر نحو الگوی پوسته، همانطور که در بخش «Filename Generation» شرح داده شده است، اشاره دارند. برخی عناصر را میتوان به صورت جداگانه غیرفعال کرد، همانطور که در زیر آمده است.
توجه داشته باشید الگوهایی که با تنظیمات فعلی برای گزینههای EXTENDED_GLOB، KSH_GLOB و SH_GLOB مجاز نیستند، صرفنظر از تنظیمات اینجا، هرگز فعال نمیشوند. برای مثال، اگر EXTENDED_GLOB فعال نباشد، الگوی ^ بیاثر است حتی اگر «disable -p "^"» اجرا نشده باشد. فهرست زیر تنظیمات هر گزینهای را که استفاده از الگو را محدود میکند نشان میدهد. لازم به ذکر است که تنظیم SH_GLOB اثر گستردهتری نسبت به صرفاً غیرفعال کردن الگوها دارد، چرا که عبارات خاص، بهویژه آنهایی که دارای پرانتز هستند، به گونهای متفاوت تجزیه میشوند.
الگوهای زیر را میتوان غیرفعال کرد؛ تمام رشتهها در خط فرمان نیاز به نقلقول دارند تا از تفسیر فوری آنها به عنوان الگو جلوگیری شود، و الگوها در زیر به عنوان یادآوری درون نقلقول تکی نمایش داده شدهاند.
- '?'
- نویسهٔ الگوی ? در هر کجایی که ظاهر شود، از جمله زمانی که در KSH_GLOB قبل از یک پرانتز قرار گیرد.
- '*'
- نویسهٔ الگوی * در هر کجایی که ظاهر شود، از جمله تطبیق بازگشتی (recursive globbing) و زمانی که در KSH_GLOB قبل از یک پرانتز قرار گیرد.
- '['
- کلاسهای نویسه (Character classes).
- '<' (NO_SH_GLOB)
- محدودههای عددی.
- '|' (NO_SH_GLOB)
- تناوب (انتخاب بین گزینهها) در الگوهای گروهبندیشده، دستورهای case، یا عبارتهای دارای پرانتز در KSH_GLOB.
- '(' (NO_SH_GLOB)
- گروهبندی با استفاده از پرانتز تکی. غیرفعال کردن این مورد، استفاده از پرانتزها را برای KSH_GLOB در جایی که توسط یک نویسهٔ خاص معرفی میشوند، و همچنین برای توصیفکنندههای گلوب غیرفعال نمیکند (از «setopt NO_BARE_GLOB_QUAL» برای غیرفعال کردن توصیفکنندههای گلوبی که صرفاً از پرانتز استفاده میکنند، بهره ببرید).
- '~' (EXTENDED_GLOB)
- استثنا کردن به شکل A~B.
- '^' (EXTENDED_GLOB)
- استثنا کردن به شکل A^B.
- '#' (EXTENDED_GLOB)
- نویسهٔ الگوی # در هر کجایی که ظاهر شود، هم برای تکرار الگوی قبلی و هم برای نشان دادن پرچمهای گلوبینگ.
- '?(' (KSH_GLOB)
- شکل گروهبندی ?(...). توجه داشته باشید در صورتی که '?' غیرفعال باشد، این مورد نیز غیرفعال میشود.
- '*(' (KSH_GLOB)
- شکل گروهبندی *(...). توجه داشته باشید در صورتی که '*' غیرفعال باشد، این مورد نیز غیرفعال میشود.
- '+(' (KSH_GLOB)
- شکل گروهبندی +(...).
- '!(' (KSH_GLOB)
- شکل گروهبندی !(...).
- '@(' (KSH_GLOB)
- شکل گروهبندی @(...).
- disown [ job ... ]
- job ... &|
- job ... &!
- کارهای مشخصشده (job) را از جدول کارها حذف میکند؛ پوسته دیگر وضعیت آنها را گزارش نخواهد داد و در صورتی که تلاش کنید با وجود در حال اجرا یا متوقف بودن آنها از یک پوستهٔ تعاملی خارج شوید، هشداری نخواهد داد. اگر هیچ jobی مشخص نشود، کار فعلی سلب مالکیت (disown) میشود.
اگر jobها در حال حاضر متوقف باشند و گزینهٔ AUTO_CONTINUE تنظیم نشده باشد، هشداری حاوی اطلاعاتی در مورد نحوهٔ به اجرا درآوردن آنها پس از سلب مالکیت چاپ میشود. اگر از یکی از دو شکل آخر استفاده شود، صرفنظر از تنظیمات گزینهٔ AUTO_CONTINUE، jobها به طور خودکار به حالت اجرا درمیآیند.
- echo [ -neE ] [ arg ... ]
- هر arg را در خروجی استاندارد مینویسد و بین هر کدام یک فاصله قرار میدهد. اگر پرچم -n وجود نداشته باشد، یک خط جدید در انتها چاپ میکند. echo توالیهای گریز زیر را تشخیص میدهد:
- \a
- نویسهٔ زنگ (bell)
- \b
- پسبر (backspace)
- \c
- جلوگیری از چاپ نویسههای بعدی و خط جدید پایانی
- \e
- گریز (escape)
- \f
- برگهبر (form feed)
- \n
- خط جدید (newline)
- \r
- بازگشت به ابتدای سطر (carriage return)
- \t
- تب افقی (horizontal tab)
- \v
- تب عمودی (vertical tab)
- \\
- بکاسلش (backslash)
- \0NNN
- کد نویسه در مبنای هشت (اکتال).TP \xNN کد نویسه در مبنای شانزده
- \uNNNN
- کد نویسه یونیکد در مبنای شانزده
- \UNNNNNNNN
- کد نویسه یونیکد در مبنای شانزده
میتوان از پرچم -E یا گزینهٔ BSD_ECHO برای غیرفعال کردن این توالیهای گریز استفاده کرد. در حالت دوم، میتوان از پرچم -e برای فعالسازی مجدد آنها بهره برد.
توجه داشته باشید که برای سازگاری با استانداردها، خط تیره دوگانه پردازش گزینهها را خاتمه نمیدهد؛ بلکه مستقیماً چاپ میشود. با این حال، یک خط تیره تکی پردازش گزینهها را خاتمه میدهد، بنابراین نخستین خط تیره (که ممکن است پس از گزینهها بیاید) چاپ نمیشود، اما هر چه پس از آن بیاید به عنوان آرگومان چاپ خواهد شد. رفتار خط تیره تکی با سایر پوستهها متفاوت است. برای روشی با سازگاری و انتقالپذیری بیشتر جهت چاپ متن، printf و برای روشی با کنترل بیشتر در zsh، دستور print را ببینید.
- echotc
- بخش «The zsh/termcap Module» در zshmodules(1) را ببینید.
- echoti
- بخش «The zsh/terminfo Module» در zshmodules(1) را ببینید.
- emulate [ -lLR ] [ {zsh|sh|ksh|csh} [ flags ... ] ]
- بدون هیچ آرگومانی، حالت شبیهسازی فعلی را چاپ میکند.
با یک تکآرگومان، گزینههای zsh را برای شبیهسازی پوستهٔ مشخصشده تا حد امکان تنظیم میکند. پوستهٔ csh هرگز بهطور کامل شبیهسازی نخواهد شد. اگر آرگومان یکی از پوستههای فهرستشده در بالا نباشد، zsh به عنوان پیشفرض استفاده خواهد شد؛ دقیقتر بگوییم، آزمونهای انجامشده روی آرگومان همانهایی هستند که برای تعیین شبیهسازی در هنگام راهاندازی بر اساس نام پوسته استفاده میشوند، بخش COMPATIBILITY در zsh(1) را ببینید. علاوه بر تنظیم گزینههای پوسته، این دستور همچنین وضعیت دستنخوردهٔ فعالسازی الگوها را بازمیگرداند، گویی تمام الگوها با استفاده از enable -p فعال شده باشند.
اگر دستور emulate درون تابعی رخ دهد که با functions -t برای ردگیری اجرا نشانهگذاری شده است، آنگاه گزینهٔ xtrace بدون توجه به حالت شبیهسازی یا سایر گزینهها روشن خواهد شد. توجه داشته باشید کدی که درون تابع توسط دستورهای .، source یا eval اجرا میشود، به عنوان اجرای مستقیم از تابع در نظر گرفته نمیشود و بنابراین این رفتار را برنمیانگیزد.
اگر کلید -R داده شود، تمام گزینههای قابل تنظیم به جز برخی گزینههای توصیفکنندهٔ محیط تعاملی، به مقدار پیشفرض خود متناظر با حالت شبیهسازی مشخصشده بازنشانی میشوند؛ در غیر این صورت، تنها گزینههایی تغییر میکنند که احتمال دارد در اسکریپتها و توابع مشکلات سازگاری ایجاد کنند. اگر کلید -L داده شود، گزینههای LOCAL_OPTIONS، LOCAL_PATTERNS و LOCAL_TRAPS نیز تنظیم خواهند شد، که باعث میشود اثرات دستور emulate و هر دستور setopt، disable -p یا enable -p، و trap برای تابع پوستهٔ بلافاصله دربرگیرنده (در صورت وجود) محلی شود؛ معمولاً این گزینهها در تمام حالتهای شبیهسازی به جز ksh خاموش هستند. کلید -L با استفاده از -c در flags ناسازگار است.
اگر یک تکآرگومان وجود داشته باشد و کلید -l داده شود، گزینههایی که تنظیم یا لغو تنظیم میشوند (مورد دوم با پیشوند «no» مشخص میشود) فهرست میگردند. -l را میتوان با -L یا -R ترکیب کرد و فهرست به شیوهٔ مناسب اصلاح خواهد شد. توجه داشته باشید که فهرست به تنظیمات فعلی گزینهها بستگی ندارد، یعنی شامل همهٔ گزینههایی است که اصولاً ممکن است تغییر کنند، نه صرفاً آنهایی که واقعاً تغییر خواهند کرد.
پارامتر flags میتواند هر یک از پرچمهای زمان فراخوانی توصیفشده در بخش INVOCATION در zsh(1) باشد، به جز اینکه «-o EMACS» و «-o VI» ممکن است استفاده نشوند. پرچمهایی مانند «+r»/«+o RESTRICTED» ممکن است در برخی شرایط ممنوع باشند.
اگر -c arg در flags ظاهر شود، arg در حالی ارزیابی میشود که شبیهسازی درخواستی بهطور موقت فعال است. در این حالت، پیش از بازگشت emulate، حالت شبیهسازی و تمام گزینهها به مقادیر قبلی خود بازگردانده میشوند. کلید -R میتواند پیش از نام پوستهای که باید شبیهسازی شود قرار گیرد؛ توجه داشته باشید که این معنایی متمایز از گنجاندن -R در flags دارد.
استفاده از -c، حالت شبیهسازی «چسبنده» را برای توابع تعریفشده در عبارت ارزیابیشده فعال میکند: حالت شبیهسازی از آن پس با تابع پیوند میخورد به طوری که هر زمان تابع اجرا شود، شبیهسازی (با رعایت کلید -R در صورت وجود) و تمام گزینهها پیش از ورود به تابع تنظیم میشوند (و غیرفعالسازی الگوها پاک میشود)، و وضعیت پس از خروج بازگردانده میشود. اگر تابع زمانی فراخوانی شود که شبیهسازی چسبنده از پیش در حال اجرا باشد، چه درون یک عبارت «emulate shell -c» و چه درون تابع دیگری با همان شبیهسازی چسبنده، ورود و خروج از تابع باعث تغییر گزینهها نمیشود (مگر به دلیل پردازش استاندارد مانند گزینهٔ LOCAL_OPTIONS). این موضوع همچنین در مورد توابعی که برای بارگذاری خودکار در شبیهسازی چسبنده نشانهگذاری شدهاند صدق میکند؛ مجموعهٔ مناسب گزینهها هم در زمان بارگذاری تابع و هم هنگام اجرای آن اعمال خواهد شد.
برای مثال:
emulate sh -c 'fni() { setopt cshnullglob; }
fno() { fni; }'
fno
دو تابع fni و fno با شبیهسازی چسبندهٔ sh تعریف شدهاند. سپس fno اجرا میشود، و باعث میگردد گزینههای مرتبط با شبیهسازیها به مقادیرشان در sh تنظیم شوند. سپس fno تابع fni را فراخوانی میکند؛ از آنجا که fni نیز برای شبیهسازی چسبندهٔ sh نشانهگذاری شده است، در ورود یا خروج از آن هیچ تغییری در گزینهها رخ نمیدهد. از این رو گزینهٔ cshnullglob، که توسط شبیهسازی sh خاموش شده بود، درون fni روشن شده و در بازگشت به fno روشن باقی میماند. در هنگام خروج از fno، حالت شبیهسازی و تمام گزینهها به وضعیتی که پیش از ورود به شبیهسازی موقت داشتند بازگردانده خواهند شد.
مستندات بالا معمولاً برای هدف مورد نظر، یعنی اجرای کدهای طراحیشده برای سایر پوستهها در یک محیط مناسب، کافی است. قواعد دقیقتر در ادامه آمده است.
- 1.
- محیط شبیهسازی چسبندهٔ ارائهشده توسط «emulate shell -c» دقیقاً همانند محیط حاصل از ورود به تابعی است که در نتیجهٔ تعریف شدن در چنین محیطی، برای شبیهسازی چسبنده نشانهگذاری شده است. بنابراین، برای نمونه، شبیهسازی چسبنده توسط زیرتوابع تعریفشده درون توابعی با شبیهسازی چسبنده به ارث برده میشود.
- 2.
- هیچ تغییری در گزینهها در ورود یا خروج از توابعی که برای شبیهسازی چسبنده نشانهگذاری نشدهاند رخ نمیدهد، مگر تغییراتی که بهطور معمول رخ میدهند، حتی اگر آن توابع درون یک شبیهسازی چسبنده فراخوانی شوند.
- 3.
- هیچ رفتار خاصی برای توابع نشانهگذاریشده برای autoload و همچنین توابع موجود در wordcode ایجادشده توسط دستور zcompile در نظر گرفته نشده است.
- 4.
- وجود یا عدم وجود کلید -R برای emulate با حالتهای متفاوتی از شبیهسازی چسبنده مطابقت دارد؛ بنابراین برای نمونه، «emulate sh -c»، «emulate -R sh -c» و «emulate csh -c» به عنوان سه شبیهسازی چسبندهٔ متمایز تلقی میشوند.
- 5.
- تفاوت در گزینههای پوسته که علاوه بر شبیهسازی پایه ارائه میشوند نیز به معنای تفاوت در شبیهسازیهای چسبنده است، بنابراین برای نمونه «emulate zsh -c» و «emulate zsh -o cbases -c» به عنوان شبیهسازیهای چسبندهٔ متمایز تلقی میشوند.
- enable [ -afmprs ] name ...
- عناصر جدول درهمسازیِ name را که احتمالاً پیشتر با disable غیرفعال شدهاند، فعال میکند. حالت پیشفرض، فعالسازی دستورهای توکار (builtin) است. گزینهٔ -a باعث میشود enable روی نامهای مستعار عادی یا سراسری عمل کند. گزینهٔ -s باعث میشود enable روی نامهای مستعار پسوند عمل کند. گزینهٔ -f باعث میشود enable روی توابع پوسته عمل کند. گزینهٔ -r باعث میشود enable روی کلمات رزروشده عمل کند. بدون آرگومان، تمام عناصر فعال جدول درهمسازی مربوطه چاپ میشوند. با پرچم -m آرگومانها به عنوان الگو در نظر گرفته میشوند (باید نقلقول شوند) و تمام عناصر جدول درهمسازی متناظر که با این الگوها مطابقت دارند فعال میگردند. اشیاء فعالشده را میتوان با دستور توکار disable غیرفعال کرد.
دستور enable -p الگوهایی را که با disable -p غیرفعال شدهاند، دوباره فعال میکند. توجه داشته باشید که این دستور بر گزینههای بسط الگو تقدم ندارد؛ به عنوان مثال، «enable -p "~"» باعث فعال شدن نویسهٔ الگوی ~ نمیشود مگر اینکه گزینهٔ EXTENDED_GLOB نیز تنظیم شده باشد. برای فعال کردن تمام الگوهای ممکن (تا بتوان آنها را بعداً بهطور جداگانه با disable -p غیرفعال کرد)، از «setopt EXTENDED_GLOB KSH_GLOB NO_SH_GLOB» استفاده کنید. eval [ arg ... ] آرگومانها را به عنوان ورودی شل خوانده و دستور(های) حاصل را در فرایند فعلی شل اجرا میکند. وضعیت بازگشتی همانند حالتی است که گویی دستورها مستقیماً توسط شل اجرا شدهاند؛ اگر هیچ arg وجود نداشته باشد یا شامل هیچ دستوری نباشند (یعنی یک رشته خالی یا فاصله خالی باشند)، وضعیت بازگشتی صفر خواهد بود.
- exec [ -cl ] [ -a argv0 ] [ command [ arg ... ] ]
- جایگزین کردن فرایند شل فعلی با command به جای ایجاد فرایند جدید (forking). اگر command یک دستور توکار شل یا یک تابع شل باشد، شل آن را اجرا کرده و پس از اتمام دستور خارج میشود.
با -c محیط پاکسازی میشود؛ با -l نویسه - به ابتدای رشته argv[0] دستورِ در حال اجرا اضافه میشود (برای شبیهسازی یک login shell)؛ با -a argv0 رشته argv[0] دستورِ اجرا شده تنظیم میشود. بخش `Precommand Modifiers' در zshmisc(1) را ببینید.
اگر گزینه POSIX_BUILTINS تنظیم شده باشد، command هرگز به عنوان یک دستور توکار شل یا تابع شل تفسیر نمیشود. این بدان معناست که سایر اصلاحکنندههای پیشفرمان (precommand modifiers) مانند builtin و noglob نیز درون شل تفسیر نخواهند شد. بنابراین command همیشه از طریق جستجوی مسیر دستور پیدا میشود.
اگر command حذف شود اما هرگونه بازهدایتی مشخص شده باشد، آنگاه بازهدایتها در شل فعلی اعمال خواهند شد.
- exit [ n ]
- خروج از شل با وضعیت خروج مشخصشده توسط عبارت حسابی n؛ اگر مقداری مشخص نشده باشد، از وضعیت خروج آخرین دستورِ اجراشده استفاده میشود. وضعیت EOF نیز باعث خروج از شل میشود، مگر اینکه گزینه IGNORE_EOF تنظیم شده باشد.
برای برخی رفتارهای متقابل احتمالاً غیرمنتظره دستور exit با کارها (jobs)، نکات انتهای بخش JOBS در zshmisc(1) را ببینید.
- export [ name[=value] ... ]
- نامهای (name) مشخصشده برای برونریزی (export) خودکار به محیط دستورهایی که پس از آن اجرا میشوند علامتگذاری میشوند. معادل typeset -gx است. اگر پارامتر مشخصشده از قبل وجود نداشته باشد، در حوزه سراسری (global scope) ایجاد میشود.
- false [ arg ... ]
- کاری انجام نمیدهد و وضعیت خروج 1 را بازمیگرداند.
- fc [ -e ename ] [ -s ] [ -LI ] [ -m match ] [ old=new ... ] [ first [ last ] ]
- fc -l [ -LI ] [ -nrdfEiD ] [ -t timefmt ] [ -m match ]
- [ old=new ... ] [ first [ last ] ]
- fc -p [ -a ] [ filename [ histsize [ savehistsize ] ] ]
- fc -P
- fc -ARWI [ filename ]
- دستور fc سازوکار تاریخچه تعاملی را کنترل میکند. توجه داشته باشید که خواندن و نوشتن گزینههای تاریخچه تنها در صورتی انجام میشود که شل تعاملی (interactive) باشد. معمولاً این حالت به طور خودکار تشخیص داده میشود، اما میتوان هنگام شروع شل با تنظیم گزینه interactive آن را اجبار کرد.
دو شکل نخست این دستور، محدودهای از رویدادها را از first تا last از فهرست تاریخچه انتخاب میکنند. آرگومانهای first و last میتوانند به صورت یک عدد یا یک رشته مشخص شوند. یک عدد منفی به عنوان فاصله (offset) نسبت به شماره رویداد تاریخچه فعلی در نظر گرفته میشود. یک رشته، جدیدترین رویدادی را که با آن رشته دادهشده آغاز میشود مشخص میکند. سپس تمام جایگزینیهای old=new، در صورت وجود، روی متن رویدادها انجام میشوند.
محدوده رویدادهای انتخابشده با اعداد را میتوان با پرچمهای زیر بیشتر محدود کرد.
- -I
- تنها به رویدادهای داخلی محدود میکند (نه از $HISTFILE)
- -L
- تنها به رویدادهای محلی محدود میکند (نه از شلهای دیگر، به SHARE_HISTORY در zshoptions(1) مراجعه کنید -- توجه داشته باشید که $HISTFILE هنگام خوانده شدن در شروع محلی در نظر گرفته میشود)
- -m
- نخستین آرگومان را به عنوان یک الگو (که باید داخل نقلقول باشد) در نظر میگیرد و تنها رویدادهای تاریخچه منطبق با این الگو بررسی میشوند
اگر first مشخص نشود، روی -1 (جدیدترین رویداد) تنظیم میشود، یا اگر پرچم -l داده شده باشد روی -16 تنظیم خواهد شد. اگر last مشخص نشود، روی first تنظیم میشود، یا اگر پرچم -l داده شده باشد روی -1 تنظیم خواهد شد. با این حال، اگر رویداد فعلی ورودیهایی را با `print -s' یا `fc -R' به تاریخچه اضافه کرده باشد، مقدار پیشفرض last برای -l شامل تمام ورودیهای جدید تاریخچه از زمان آغاز رویداد فعلی خواهد بود.
هنگامی که پرچم -l داده شود، رویدادهای حاصل در خروجی استاندارد فهرست میشوند. در غیر این صورت، برنامه ویرایشگرِ مشخصشده توسط -e ename روی فایلی حاوی این رویدادهای تاریخچه فراخوانی میشود. اگر -e داده نشود، از مقدار پارامتر FCEDIT استفاده میشود؛ اگر تنظیم نشده باشد از مقدار پارامتر EDITOR استفاده میشود؛ اگر آن هم تنظیم نشده باشد، یک پیشفرض توکار، معمولاً `vi' استفاده میشود. اگر ename برابر با `-' باشد، هیچ ویرایشگری فراخوانی نمیشود. پس از اتمام ویرایش، دستورِ ویرایششده اجرا میشود.
پرچم `-s' معادل `-e -' است. پرچم -r ترتیب رویدادها را معکوس میکند و پرچم -n هنگام فهرست کردن، شماره رویدادها را حذف میکند.
همچنین هنگام فهرست کردن،
- -d
- برچسبهای زمان را برای هر رویداد چاپ میکند
- -f
- برچسبهای کامل زمان-تاریخ را در قالب آمریکایی `MM/DD/YY hh:mm' چاپ میکند
- -E
- برچسبهای کامل زمان-تاریخ را در قالب اروپایی `dd.mm.yyyy hh:mm' چاپ میکند
- -i
- برچسبهای کامل زمان-تاریخ را در قالب ISO8601 `yyyy-mm-dd hh:mm' چاپ میکند
- -t fmt
- برچسبهای زمان و تاریخ را در قالب مشخصشده چاپ میکند؛ fmt توسط تابع strftime با افزونههای zsh شرحدادهشده برای قالب خط اعلان %D{string} در بخش EXPANSION OF PROMPT SEQUENCES در zshmisc(1) قالببندی میشود. رشته قالببندیشده حاصل نباید بیش از 256 نویسه باشد، در غیر این صورت چاپ نخواهد شد
- -D
- زمانهای سپریشده را چاپ میکند؛ میتواند با یکی از گزینههای بالا ترکیب شود
دستور `fc -p' فهرست تاریخچه فعلی را در یک پشته (stack) قرار داده و به یک فهرست تاریخچه جدید تغییر وضعیت میدهد. اگر گزینه -a نیز مشخص شده باشد، این فهرست تاریخچه هنگام خروج از حوزه تابع فعلی به طور خودکار از پشته بیرون کشیده میشود (pop)، که راهکاری بسیار بهتر از ایجاد یک تابع trap برای فراخوانی دستی `fc -P' است. اگر هیچ آرگومانی مشخص نشود، فهرست تاریخچه خالی رها میشود، $HISTFILE لغو مقدار شده، و $HISTSIZE و $SAVEHIST روی مقادیر پیشفرض خود تنظیم میشوند. اگر یک آرگومان داده شود، $HISTFILE روی آن نام فایل تنظیم میشود، $HISTSIZE و $SAVEHIST بدون تغییر باقی میمانند، و فایل تاریخچه (در صورت وجود) برای مقداردهی اولیه فهرست جدید خوانده میشود. اگر آرگومان دوم مشخص شود، $HISTSIZE و $SAVEHIST در عوض روی همان مقدار عددی مشخصشده تنظیم میشوند. در نهایت، اگر آرگومان سوم مشخص شود، $SAVEHIST روی مقداری مجزا از $HISTSIZE تنظیم میشود. شما آزاد هستید تا این مقادیر محیطی را برای فهرست تاریخچه جدید به هر نحوی که میخواهید تغییر دهید تا فهرست تاریخچه جدید را دستکاری کنید.
دستور `fc -P' فهرست تاریخچه را به فهرست قدیمیتری که توسط `fc -p' ذخیره شده بود بازمیگرداند. فهرست فعلی پیش از نابودی، در $HISTFILE خود ذخیره میشود (البته با این فرض که $HISTFILE و $SAVEHIST به درستی تنظیم شده باشند). مقادیر $HISTFILE، $HISTSIZE، و $SAVEHIST به مقادیری که هنگام فراخوانی `fc -p' داشتند بازگردانده میشوند. توجه داشته باشید که این بازیابی میتواند با «local» کردن این متغیرها تداخل داشته باشد، بنابراین بهترین راهکار این است که از اعلان محلی (local) این متغیرها در توابعی که از `fc -p' استفاده میکنند خودداری کنید. ترکیب امنِ تضمینشده دیگر، اعلان این متغیرها به صورت محلی در ابتدای تابع شما و استفاده از گزینه خودکار (-a) به همراه `fc -p' است. در نهایت، توجه داشته باشید که اگر لازم باشد پیش از خروج تابع این کار را انجام دهید، بیرون کشیدن دستی موردی که برای خروج خودکار نشانهگذاری شده، کاملاً مجاز است..PP دستور `fc -R' تاریخچه را از فایل دادهشده میخواند، `fc -W' تاریخچه را در فایل دادهشده مینویسد، و `fc -A' تاریخچه را به فایل دادهشده ضمیمه میکند. اگر نام فایلی مشخص نشود، $HISTFILE فرض میشود. اگر گزینهٔ -I به -R اضافه شود، تنها رویدادهایی که هنوز در فهرست داخلی تاریخچه وجود ندارند افزوده میشوند. اگر گزینهٔ -I به -A یا -W اضافه شود، تنها آن رویدادهایی ضمیمه یا نوشته میشوند که از زمان آخرین ضمیمهسازی/نوشتنِ افزایشی به فایل تاریخچه جدید باشند. در هر صورت، فایل ایجادشده بیش از $SAVEHIST مدخل نخواهد داشت.
- fg [ job ... ]
- job ...
- هر job مشخصشده را به نوبت به پیشزمینه میآورد. اگر هیچ jobی مشخص نشود، کار فعلی از سر گرفته میشود.
- float [ {+|-}Hghlprtux ] [ {+|-}EFLRZ [ n ] ] [ name[=value] ... ]
- معادل با typeset -E است، با این تفاوت که گزینههای نامربوط به اعداد ممیز شناور مجاز نیستند.
- functions [ {+|-}UkmtTuWz ] [ -x num ] [ name ... ]
- functions -c oldfn newfn
- functions -M [-s] mathfn [ min [ max [ shellfn ] ] ]
- functions -M [ -m pattern ... ]
- functions +M [ -m ] mathfn ...
- معادل با typeset -f است، به استثنای گزینههای -c، -x، -M و -W. برای functions -u و functions -U، autoload را ببینید که گزینههای بیشتری ارائه میدهد. برای functions -t و functions -T، به typeset -f مراجعه کنید.
گزینهٔ -x مشخص میکند که در خروجی هر تابعی، هر نویسهٔ تبِ ابتدای خط برای تورفتگی که توسط شل جهت نمایش ساختار نحوی افزوده شده است، به تعداد مشخصشدهٔ num با فاصله (space) جایگزین شود. num همچنین میتواند 0 باشد تا از تمام تورفتگیها جلوگیری شود.
گزینهٔ -W گزینهٔ WARN_NESTED_VAR را تنها برای تابع یا توابع نامبرده فعال میکند. این گزینه در آغاز توابع تو در تو (بهجز توابع ناشناس) غیرفعال میشود مگر اینکه تابع فراخوانیشده نیز ویژگی -W را داشته باشد.
گزینهٔ -c باعث کپی شدن oldfn در newfn میشود. این کپی در داخل به صورت بهینه و با شمارش ارجاع (reference counting) مدیریت میشود. اگر oldfn برای بارگذاری خودکار نشانهگذاری شده باشد، ابتدا بارگذاری میشود و اگر این کار با شکست مواجه شود کپی نیز با شکست مواجه خواهد شد. پس از آن، هر یک از توابع میتوانند بدون تأثیر بر دیگری بازتعریف شوند. یک الگوی معمول این است که oldfn نام یک تابع شل کتابخانهای است که سپس بازتعریف میشود تا newfn را فراخوانی کند، و بدین ترتیب نسخهٔ تغییریافتهای از تابع مستقر میگردد.
پرچمهای -M و +M
استفاده از گزینهٔ -M نمیتواند با هیچیک از گزینههایی که توسط typeset -f مدیریت میشوند ترکیب شود.
دستور functions -M mathfn، نام mathfn را به عنوان یک تابع ریاضی تعریف میکند که در تمام اَشکال عبارتهای حسابی شناخته میشود؛ بخش `Arithmetic Evaluation' در zshmisc(1) را ببینید. بهطور پیشفرض mathfn میتواند هر تعداد آرگومان جداشده با کاما دریافت کند. اگر min مشخص شده باشد، باید دقیقاً min آرگومان داشته باشد؛ اگر min و max هر دو مشخص شده باشند، باید حداقل min و حداکثر max آرگومان داشته باشد. max میتواند -1 باشد تا مشخص کند هیچ حد بالایی وجود ندارد.
بهطور پیشفرض این تابع توسط یک تابع شل همنام پیادهسازی میشود؛ اگر shellfn مشخص شده باشد، نام تابع شل متناظر را تعیین میکند در حالی که mathfn همان نامِ مورد استفاده در عبارتهای حسابی باقی میماند. نام تابع در $0 برابر با mathfn است (نه shellfn آنگونه که معمولاً انتظار میرود)، به شرط آنکه گزینهٔ FUNCTION_ARGZERO فعال باشد. پارامترهای مکانی در تابع شل با آرگومانهای فراخوانی تابع ریاضی متناظر هستند.
نتیجهٔ آخرین عبارت حسابی ارزیابیشده در داخل تابع شل، حاصل تابع ریاضی را به دست میدهد. این موضوع محدود به جایگزینیهای حسابی به شکل $((...)) نیست، بلکه شامل عبارتهای حسابی ارزیابیشده به هر روش دیگر نیز میشود، از جمله توسط دستور توکار let، توسط گزارههای ((...))، و حتی توسط دستور توکار return و توسط اندیسهای آرایه. بنابراین، باید مراقبت کرد تا از ساختارهای نحوی که پس از ارزیابی حاصل مورد نظرِ تابع، ارزیابی حسابی انجام میدهند، استفاده نشود. به عنوان مثال:
# WRONG
zmath_cube() {
(( $1 * $1 * $1 ))
return 0
}
functions -M cube 1 1 zmath_cube
print $(( cube(3) ))
این دستور به دلیل وجود return مقدار `0' را چاپ خواهد کرد.
کامنت کردنِ دستور return به مشکل متفاوتی منجر میشود: گزارهٔ ((...)) آخرین گزاره در تابع خواهد شد، بنابراین وضعیت بازگشت ($?) تابع در هر زمانی که نتیجهٔ حسابی تابع (به صورت عددی) صفر باشد، غیرصفر (نشاندهندهٔ شکست) خواهد بود:
# WRONG
zmath_cube() {
(( $1 * $1 * $1 ))
}
functions -M cube 1 1 zmath_cube
print $(( cube(0) ))
در عوض، میتوان از دستور توکار true استفاده کرد:
# RIGHT
zmath_cube() {
(( $1 * $1 * $1 ))
true
}
functions -M cube 1 1 zmath_cube
print $(( cube(3) ))
اگر گزینهٔ اضافی -s به functions -M داده شود، آرگومانِ تابع یک رشتهٔ منفرد است: هر چیزی میان پرانتز باز و پرانتز بستهٔ متناظر به عنوان یک آرگومان منفرد به تابع منتقل میشود، حتی اگر حاوی کاما یا فاصلههای خالی باشد. بنابراین، مشخصکنندههای حداقل و حداکثر آرگومان در صورت تعیین شدن باید 1 باشند. یک فهرست آرگومان خالی به عنوان رشتهای با طول صفر منتقل میشود. بدین ترتیب، تابع رشتهایِ زیر یک آرگومان منفرد را شامل کاماها دریافت میکند و 11 را چاپ میکند:
stringfn() { (( $#1 )); true }
functions -Ms stringfn
print $(( stringfn(foo,bar,rod) ))
دستور functions -M بدون هیچ آرگومانی، تمامی این توابعِ تعریفشده توسط کاربر را در همان شکلِ تعریف فهرست میکند. با گزینهٔ اضافی -m و فهرستی از آرگومانها، تمامی توابعی که mathfn آنها با یکی از آرگومانهای الگو مطابقت داشته باشد فهرست میشوند.
دستور function +M فهرست توابع ریاضی را حذف میکند؛ با گزینهٔ اضافی -m آرگومانها به عنوان الگو در نظر گرفته میشوند و تمامی توابعی که mathfn آنها با الگو تطابق دارد حذف میشوند. توجه داشته باشید که تابع شلِ پیادهسازیکنندهٔ این رفتار حذف نمیشود (صرفنظر از اینکه نام آن با mathfn همخوانی داشته باشد یا نه).
- getcap
- بخش `The zsh/cap Module' در zshmodules(1) را ببینید.
- getln [ -AclneE ] name ...
- بالاترین مقدار را از پشتهٔ بافر میخواند و در پارامتر شل name قرار میدهد. معادل با read -zr است..TP getopts optstring name [ arg ... ] argها را برای یافتن گزینههای مجاز بررسی میکند. اگر argها حذف شده باشند، از پارامترهای مکانی استفاده میشود. یک آرگومان گزینهٔ معتبر با یک `+' یا یک `-' آغاز میشود. آرگومانی که با یک `+' یا یک `-' شروع نشود، یا آرگومان `--'، به گزینهها پایان میدهد. توجه داشته باشید که یک `-' منفرد، آرگومان گزینهٔ معتبر بهشمار نمیآید. optstring شامل حروفی است که getopts آنها را بازمیشناسد. اگر پس از یک حرف یک `:' بیاید، آن گزینه نیازمند یک آرگومان است. گزینهها میتوانند با فاصلهها از آرگومان جدا شوند.
هر بار که فراخوانی شود، getopts نویسهٔ گزینهٔ یافتهشده را در پارامتر شل name قرار میدهد، که اگر arg با یک `+' آغاز شده باشد، یک `+' به ابتدای آن افزوده میشود. نمایهٔ arg بعدی در OPTIND ذخیره میشود. آرگومان گزینه، در صورت وجود، در OPTARG ذخیره میگردد.
نخستین گزینهای که بررسی میشود را میتوان با مقداردهی صریح به OPTIND تغییر داد. OPTIND دارای مقدار اولیهٔ 1 است و معمولاً هنگام ورود به یک تابع شل روی 1 تنظیم شده و پس از خروج بازیابی میشود. (گزینهٔ POSIX_BUILTINS این رفتار را غیرفعال کرده و همچنین شیوهٔ محاسبهٔ مقدار را برای مطابقت با سایر شلها تغییر میدهد.) OPTARG بازنشانی نمیشود و مقدار خود از تازهترین فراخوانی getopts را حفظ میکند. اگر هر یک از OPTIND یا OPTARG بهطور صریح لغو مقدار (unset) شود، بدون مقدار باقی میماند و نمایه یا آرگومان گزینه ذخیره نمیشود. در این حالت، خود گزینه همچنان در name ذخیره میشود.
وجود یک `:' در ابتدای optstring باعث میشود getopts حرفِ هر گزینهٔ نامعتبر را در OPTARG ذخیره کرده و مقدار name را برای گزینههای ناشناخته به `?' و در صورت مفقود بودن یک آرگومان الزامی به `:' تنظیم کند. در غیر این صورت، وقتی گزینهای نامعتبر باشد، getopts متغیر name را روی `?' قرار داده و یک پیام خطا چاپ میکند. زمانی که هیچ گزینهٔ دیگری باقی نمانده باشد، وضعیت خروج غیرصفر خواهد بود.
- hash [ -Ldfmrv ] [ name[=value] ] ...
- دستور hash را میتوان برای اصلاح مستقیم محتویات جدول درهمسازی دستورها، و جدول درهمسازی دایرکتوریهای نامگذاریشده استفاده کرد. معمولاً این جدولها با تغییر دادن PATH (برای جدول درهمسازی دستورها) یا با ایجاد پارامترهای شل مناسب (برای جدول درهمسازی دایرکتوریهای نامگذاریشده) دستخوش تغییر میشوند. انتخاب اینکه با کدام جدول درهمسازی کار شود بر عهدهٔ گزینهٔ -d است؛ بدون این گزینه از جدول درهمسازی دستورها استفاده میشود، و همراه با این گزینه، از جدول درهمسازی دایرکتوریهای نامگذاریشده استفاده خواهد شد.
یک name دستور که با / یا با یک مسیر نسبی که با ./ یا ../ آغاز میشود، هرگز با جستجو در جدول درهمسازی دستورها اجرا نمیشود، و این موارد را تنها میتوان با استفادهٔ صریح از دستور hash به جدول اضافه کرد. چنین دستوری همواره با جستجوی مستقیم در سیستمفایل یافت میشود.
در صورت عدم ارائهٔ آرگومان و عدم استفاده از گزینههای -r یا -f، جدول درهمسازی انتخابشده بهطور کامل فهرست خواهد شد.
گزینهٔ -r باعث خالی شدن جدول درهمسازی انتخابشده میشود. این جدول متعاقباً به روال معمول بازسازی خواهد شد. گزینهٔ -f باعث میشود جدول درهمسازی انتخابشده بیدرنگ و بهطور کامل بازسازی گردد. برای جدول درهمسازی دستورها، این کار تمامی دایرکتوریهای مطلق موجود در PATH (و فقط همانها) را درهمسازی میکند، و برای جدول درهمسازی دایرکتوریهای نامگذاریشده، دایرکتوری خانگی همهٔ کاربران را اضافه میکند. این دو گزینه همراه با هیچ آرگومانی نمیتوانند به کار روند. هر دو گزینه، عناصر افزودهشده بهطور صریح را حذف میکنند.
گزینهٔ -m باعث میشود آرگومانها به عنوان الگو (که باید در نقلقول قرار گیرند) در نظر گرفته شوند و عناصری از جدول درهمسازی که با آن الگوها مطابقت دارند چاپ شوند. این تنها راه برای نمایش گزینش محدودی از عناصر جدول درهمسازی است.
به ازای هر name که دارای یک value متناظر است، `name' را در جدول درهمسازی انتخابشده قرار میدهد و آن را به ناممسیر `value' مرتبط میسازد. در جدول درهمسازی دستورها، این بدان معناست که هرگاه `name' به عنوان آرگومان دستور استفاده شود، شل تلاش میکند تا فایل ارائهشده توسط `value' را اجرا کند. در جدول درهمسازی دایرکتوریهای نامگذاریشده، بدین معناست که میتوان به `value' بهصورت `~name' ارجاع داد.
به ازای هر name بدون value متناظر، تلاش میکند name را به جدول درهمسازی بیفزاید، و به شیوهٔ معمول برای آن جدول درهمسازی بررسی میکند که value مناسب چیست. اگر value مناسبی پیدا نشود، جدول درهمسازی بدون تغییر خواهد ماند.
گزینهٔ -v باعث میشود ورودیهای جدول درهمسازی همانطور که از طریق تعیین صریح اضافه میشوند، فهرست گردند. در صورت استفاده همراه با -f هیچ تأثیری ندارد.
اگر پرچم -L داده شده باشد، هر ورودی جدول درهمسازی در قالب یک فراخوانی به hash چاپ میشود.
- history
- همان fc -l است.
- integer [ {+|-}Hghlprtux ] [ {+|-}LRZi [ n ] ] [ name[=value] ... ]
- معادل typeset -i است، با این تفاوت که گزینههای نامربوط به اعداد صحیح مجاز نیستند.
- jobs [ -dlprs ] [ job ... ]
- jobs -Z string
- اطلاعات هر کار مشخصشده، یا در صورت حذف job تمامی کارها را فهرست میکند. پرچم -l شناسههای فرایند و پرچم -p گروههای فرایند را فهرست میکند. اگر پرچم -r مشخص شده باشد، تنها کارهای در حال اجرا فهرست میشوند و اگر پرچم -s داده شود، فقط کارهای متوقفشده نشان داده خواهند شد. اگر پرچم -d داده شود، دایرکتوریای که کار از آن آغاز شده است (که ممکن است دایرکتوری فعلی کار نباشد) نیز نشان داده خواهد شد.
گزینهٔ -Z فضای آرگومان و محیط شل را با رشتهٔ ارائهشده جایگزین میکند، که در صورت لزوم برای جا شدن کوتاه میشود. این مورد معمولاً در خروجیهای ps (ps(1)) قابل مشاهده است. این ویژگی معمولاً توسط دیمنها برای نشان دادن وضعیتشان استفاده میشود.
کنترل کامل کار تنها در شل تعاملی سطح بالا (اصلی) در دسترس است، نه در دستورهایی که در سمت چپ خطلولهها یا درون ساختار (...) اجرا میشوند. با این حال، یک تصویر لحظهای از وضعیت کار در آن نقطه گرفته میشود، بنابراین هنوز هم امکان استفاده از دستور داخلی jobs یا هر پارامتری که اطلاعات کار را فراهم میکند وجود دارد. این دستور اطلاعات مربوط به وضعیت کارها را در نقطهای که زیرشل ایجاد شده است ارائه میدهد. اگر فرایندهای پسزمینه درون زیرشل ایجاد شوند، به جای آن اطلاعات مربوط به آن فرایندها ارائه خواهد شد.
برای نمونه،
sleep 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 &" )
- kill [ -s signal_name | -n signal_number | -sig ] [ -q value ] job ...
- kill -l [ sig ... ]
- kill -L
- سیگنال SIGTERM یا سیگنال مشخصشده را به کارها یا فرایندهای دادهشده ارسال میکند. سیگنالها با شماره یا بر اساس نام، با یا بدون پیشوند `SIG'، مشخص میشوند. اگر سیگنال ارسالی `KILL' یا `CONT' نباشد، در صورتی که کار متوقف باشد، یک سیگنال `CONT' به آن ارسال خواهد شد. آرگومان job میتواند شناسهٔ فرایند کاری باشد که در فهرست کارها نیست. در شکل دوم، kill -l، اگر sig مشخص نشده باشد، نام سیگنالها فهرست میشوند. در غیر این صورت، برای هر sig که یک نام است، شمارهٔ سیگنال متناظر فهرست میشود. برای هر sig که یک شمارهٔ سیگنال یا عددی نمایانگر وضعیت خروج فرایندی است که توسط یک سیگنال متوقف شده یا خاتمه یافته است، نام سیگنال چاپ میشود. شکل پایانی با -L هر نام سیگنال را همراه با شمارهٔ متناظر آن فهرست میکند.
در برخی سیستمها، نامهای سیگنال جایگزین برای چند سیگنال مجاز است. نمونههای معمول SIGCHLD و SIGCLD یا SIGPOLL و SIGIO هستند، با این فرض که به همان شمارهٔ سیگنال متناظر باشند. دستور kill -l تنها فرم ترجیحی را فهرست میکند، اما kill -l alt نشان خواهد داد که آیا فرم جایگزین به یک شمارهٔ سیگنال مطابقت دارد یا خیر. برای نمونه، در لینوکس kill -l IO و kill -l POLL هر دو 29 را در خروجی نمایش میدهند، بنابراین kill -IO و kill -POLL اثر یکسانی دارند.
بسیاری از سیستمها اجازه میدهند شناسههای فرایند برای خاتمه دادن به یک گروه فرایند منفی، یا برای خاتمه دادن به گروه فرایند جاری صفر باشند.
گزینهٔ -q امکان ارسال یک مقدار عدد صحیح همراه با سیگنال را در سیستمهایی که از sigqueue() پشتیبانی میکنند، فراهم میسازد. let arg ... ارزیابی هر arg به عنوان یک عبارت حسابی. برای توصیف عبارتهای حسابی، بخش `Arithmetic Evaluation' در zshmisc(1) را ببینید. وضعیت خروج برابر ۰ خواهد بود اگر مقدار آخرین عبارت غیرصفر باشد، ۱ اگر صفر باشد، و ۲ اگر خطایی رخ دهد.
- limit [ -hs ] [ resource [ limit ] ] ...
- تنظیم یا نمایش محدودیتهای منابع. مگر اینکه پرچم -s داده شده باشد، محدودیت فقط بر فرزندان پوسته اعمال میشود. اگر -s بدون آرگومانهای دیگر داده شود، محدودیتهای منابع پوسته کنونی بر روی محدودیتهای منابع از پیش تنظیمشده برای فرزندان تنظیم میگردد.
اگر limit مشخص نشده باشد، محدودیت کنونی اعمالشده بر resource چاپ میشود، در غیر این صورت محدودیت به مقدار مشخصشده تنظیم میگردد. اگر پرچم -h داده شده باشد، به جای محدودیتهای نرم از محدودیتهای سخت استفاده میشود. اگر هیچ resource مشخص نشده باشد، تمام محدودیتها چاپ میشوند.
هنگام پیمایش چندین منبع، اگر پوسته آرگومانی با ساختار نادرست را تشخیص دهد بلافاصله متوقف خواهد شد. با این حال، اگر به دلیلی دیگر در تنظیم یک محدودیت شکست بخورد، به تلاش برای تنظیم محدودیتهای باقیمانده ادامه خواهد داد.
resource میتواند یکی از موارد زیر باشد:
- addressspace
- حداکثر مقدار فضای آدرس استفادهشده.
- aiomemorylocked
- حداکثر مقدار حافظه قفلشده در RAM برای عملیاتهای AIO.
- aiooperations
- حداکثر تعداد عملیاتهای AIO.
- cachedthreads
- حداکثر تعداد نخهای (threads) کَششده.
- coredumpsize
- حداکثر اندازه رونوشت حافظه (core dump).
- cputime
- حداکثر ثانیههای پردازنده (CPU) به ازای هر فرایند.
- datasize
- حداکثر اندازه داده (شامل پشته) برای هر فرایند.
- descriptors
- حداکثر مقدار برای یک توصیفکننده فایل (file descriptor).
- filesize
- بزرگترین اندازه مجاز برای یک تکفایل.
- kqueues
- حداکثر تعداد صفهای کا (kqueues) تخصیصیافته.
- maxfilelocks
- حداکثر تعداد قفلهای فایل.
- maxproc
- حداکثر تعداد فرایندها.
- maxpthreads
- حداکثر تعداد نخها به ازای هر فرایند.
- memorylocked
- حداکثر مقدار حافظه قفلشده در RAM.
- memoryuse
- حداکثر اندازه مجموعه مقیم (resident set size).
- msgqueue
- حداکثر تعداد بایتها در صفهای پیام POSIX.
- nice
- حداکثر مقدار nice.
- pipebuf
- حداکثر اندازه بافرها برای لولهها/fifoها.
- posixlocks
- حداکثر تعداد قفلهای POSIX به ازای هر کاربر.
- pseudoterminals
- حداکثر تعداد شبهترمینالها (pseudo-terminals).
- resident
- حداکثر اندازه مجموعه مقیم (resident set size).
- rt_priority
- حداکثر اولویت بلادرنگ (real-time priority).
- rt_time
- حداکثر زمان پردازنده (CPU) بدون فراخوانی سیستمی مسدودکننده.
- sigpending
- حداکثر تعداد سیگنالهای معلق.
- sockbufsize
- حداکثر اندازه تمامی بافرهای سوکت.
- stacksize
- حداکثر اندازه پشته برای هر فرایند.
- swapsize
- حداکثر مقدار فضای swap استفادهشده.
- umtxp
- حداکثر تعداد اشیاء کتابخانه نخ POSIX.
- vmemorysize
- حداکثر مقدار حافظه مجازی.
- vnodemonitors
- حداکثر تعداد ناظرهای باز vnode.
اینکه کدام یک از این محدودیتهای منابع در دسترس هستند به سیستم بستگی دارد. resource را میتوان به هر پیشوند یکتا و غیرمبهمی خلاصه کرد. همچنین میتواند یک عدد صحیح باشد که متناظر با عدد صحیح تعریفشده برای آن منبع توسط سیستمعامل است.
اگر آرگومان متناظر با عددی باشد که خارج از محدوده منابع پیکربندیشده در پوسته است، پوسته به هر حال سعی میکند محدودیت را بخواند یا بنویسد، و اگر این کار شکست بخورد، خطایی را گزارش خواهد داد. از آنجا که پوسته چنین منابعی را به طور داخلی ذخیره نمیکند، تلاش برای تنظیم محدودیت شکست خواهد خورد مگر اینکه گزینه -s مشخص شده باشد.
limit یک عدد است با یک ضریب مقیاس اختیاری، به شرح زیر:
هنگامی که پوسته در حالتی برای شبیهسازی پوستهای دیگر راهاندازی میشود، دستور limit به طور پیشفرض در دسترس قرار نمیگیرد. این دستور را میتوان با دستور `zmodload -F zsh/rlimits b:limit' در دسترس قرار داد.
- local [ {+|-}AHUahlprtux ] [ {+|-}EFLRZi [ n ] ] [ name[=value] ... ]
- مشابه typeset است، با این تفاوت که گزینههای -g و -f مجاز نیستند. در این حالت گزینه -x استفاده از -g را اجباری نمیکند، یعنی متغیرهای صادرشده (exported) برای توابع محلی خواهند ماند.
- logout [ n ]
- مشابه exit است، با این تفاوت که تنها در یک پوسته لاگین (login shell) کار میکند.
- noglob simple command
- بخش `Precommand Modifiers' در zshmisc(1) را ببینید.
- popd [ -q ] [ {+|-}n ]
- یک مدخل را از پشته دایرکتوری حذف کرده و دستور cd را به دایرکتوری جدیدِ بالای پشته اجرا میکند. بدون آرگومان، مدخل فعلی در بالای پشته حذف میشود. آرگومانی به شکل `+n' یک مدخل پشته را با شمارش از سمت چپِ فهرستِ ارائهشده توسط دستور dirs، با شروع از صفر مشخص میکند. آرگومانی به شکل -n از سمت راست میشمارد. اگر گزینه PUSHD_MINUS تنظیم شده باشد، معانی `+' و `-' در این چارچوب جابهجا میشوند.
اگر گزینه -q (بیصدا یا quiet) مشخص شده باشد، تابع قلاب (hook) chpwd و توابع موجود در آرایه $chpwd_functions فراخوانی نمیشوند و پشته دایرکتوری جدید چاپ نمیشود. این امر برای فراخوانیهایی از popd کاربرد دارد که محیط دیدهشده توسط یک کاربر تعاملی را تغییر نمیدهند. print [ -abcDilmnNoOpPrsSz ] [ -u n ] [ -f format ] [ -C cols ]
- [ -v name ] [ -xX tabstop ] [ -R [ -en ]] [ arg ... ]
- با گزینهٔ `-f'، آرگومانها طبق آنچه در printf توضیح داده شده چاپ میشوند. بدون هیچ نشانهای یا با نشانهٔ `-'، آرگومانها همانند آنچه برای echo توصیف شده روی خروجی استاندارد چاپ میشوند، با تفاوتهای زیر: توالی گریز `\M-x' (یا `\Mx') نویسهٔ x را متا میکند (بالاترین بیت را ۱ میکند)، `\C-x' (یا `\Cx') یک نویسهٔ کنترلی تولید میکند (`\C-@' و `\C-?' نویسههای NULL و delete را به دست میدهند)، کد نویسه در مبنای هشت با `\NNN' نمایش داده میشود (بهجای `\0NNN')، و `\E' مترادفی برای `\e' است. در نهایت، اگر درون یک توالی گریز نباشد، `\' نویسهٔ بعدی را گریزدهی کرده و خودش چاپ نمیشود.
- -a
- چاپ آرگومانها بهطوریکه ابتدا ستونها افزایش یابند. تنها با گزینههای -c و -C کاربرد دارد.
- -b
- شناسایی تمام توالیهای گریزی که برای دستور bindkey تعریف شدهاند، بخش `Zle Builtins' را در zshzle(1) ببینید.
- -c
- چاپ آرگومانها در قالب ستونها. مگر اینکه -a نیز داده شده باشد، آرگومانها بهطوری چاپ میشوند که ابتدا سطرها افزایش مییابند.
- -C cols
- چاپ آرگومانها در cols ستون. مگر اینکه -a نیز داده شده باشد، آرگومانها بهطوری چاپ میشوند که ابتدا سطرها افزایش مییابند.
- -D
- تلقی آرگومانها بهعنوان مسیر، و جایگزین کردن پیشوندهای دایرکتوری با عبارات ~ متناظر با نامهای دایرکتوری در صورت امکان.
- -i
- اگر همراه با -o یا -O داده شود، مرتبسازی بدون در نظر گرفتن بزرگی و کوچکی حروف (case-independently) انجام میشود.
- -l
- چاپ آرگومانها در حالی که با خط جدید بهجای فاصله از هم جدا شدهاند. نکته: اگر فهرست آرگومانها خالی باشد، print -l همچنان یک خط خالی در خروجی میدهد. برای چاپ یک فهرست احیاناً خالی از آرگومانها بهصورت یکی در هر خط، از print -C1 استفاده کنید، مانند `print -rC1 -- "$list[@]"'.
- -m
- اولین آرگومان را به عنوان یک الگو (باید نقلقول شود) در نظر میگیرد، و آن را به همراه آرگومانهای بعدی که با این الگو مطابقت ندارند از فهرست آرگومانها حذف میکند.
- -n
- از اضافه کردن خط جدید به خروجی خودداری میکند.
- -N
- چاپ آرگومانها بهگونهای که با نویسههای تهی (null) از هم جدا و خاتمه داده شدهاند. مجدداً، `print -rNC1 -- "$list[@]"' روش متعارفی برای چاپ یک فهرست دلخواه به صورت رکوردهای جداشده با null است.
- -o
- چاپ آرگومانها بهصورت مرتبشده به ترتیب صعودی.
- -O
- چاپ آرگومانها بهصورت مرتبشده به ترتیب نزولی.
- -p
- چاپ آرگومانها به ورودی همروند (coprocess).
- -P
- انبساط اعلان (prompt expansion) را انجام میدهد (بخش EXPANSION OF PROMPT SEQUENCES در zshmisc(1) را ببینید). در ترکیب با `-f'، توالیهای گریز اعلان تنها در آرگومانهای درونیابیشده تجزیه میشوند، نه درون رشتهٔ قالب.
- -r
- نادیده گرفتن قراردادهای گریز echo.
- -R
- شبیهسازی دستور echo در BSD، که توالیهای گریز را پردازش نمیکند مگر اینکه پرچم -e داده شود. پرچم -n خط جدید پایانی را سرکوب میکند. تنها پرچمهای -e و -n پس از -R شناخته میشوند؛ تمام آرگومانها و گزینههای دیگر چاپ خواهند شد.
- -s
- قرار دادن نتایج در فهرست تاریخچه (history) بهجای خروجی استاندارد. هر آرگومان به دستور print صرفنظر از محتوایش، به عنوان یک کلمهٔ منفرد در تاریخچه در نظر گرفته میشود.
- -S
- قرار دادن نتایج در فهرست تاریخچه بهجای خروجی استاندارد. در این حالت تنها یک آرگومان مجاز است؛ که مانند یک خط فرمان کامل شل به کلمات تقسیم خواهد شد. اثر آن مشابه خواندن خط از یک فایل تاریخچه در زمانی است که گزینهٔ HIST_LEX_WORDS فعال باشد.
- -u n
- چاپ آرگومانها در توصیفگر فایل n.
- -v name
- ذخیرهٔ آرگومانهای چاپشده بهعنوان مقدار پارامتر name.
- -x tab-stop
- تبدیل تبهای ابتدایی در هر خط از خروجیِ رشتهٔ چاپشده با فرض یک موقعیت تب (tab stop) در هر tab-stop نویسه. این گزینه برای قالببندی کدهایی که ممکن است با تب تورفتگی پیدا کرده باشند مناسب است. توجه داشته باشید که تبهای ابتدایی هر آرگومانی به print، و نه فقط اولین آرگومان، باز میشوند، حتی اگر print از فاصلهها برای جداسازی آرگومانها استفاده کند (شمارش ستونها در بین آرگومانها حفظ میشود اما به دلیل تبهای بازنشدهٔ قبلی ممکن است در خروجی نادرست باشد).
فرض بر این است که شروع خروجی هر دستور print با یک tab stop تراز شده است. در صورتی که گزینهٔ MULTIBYTE فعال باشد، عرض نویسههای چندبایتی مدیریت میشود. اگر سایر گزینههای قالببندی فعال باشند، یعنی تراز ستونی یا سبک printf، یا اگر خروجی به مکانی خاص مانند تاریخچهٔ شل یا ویرایشگر خط فرمان برود، این گزینه نادیده گرفته میشود.
- -X tab-stop
- مشابه با -x است، با این تفاوت که تمام تبهای موجود در رشتهٔ چاپشده باز میشوند. این گزینه زمانی مناسب است که از تبها در آرگومانها برای تولید قالب جدولی استفاده شود.
- -z
- پوش کردن (قراردادن) آرگومانها در پشتهٔ بافر ویرایش، در حالی که با فاصله جدا شدهاند.
اگر هر یک از `-m'، `-o' یا `-O' در ترکیب با `-f' استفاده شوند و آرگومانی وجود نداشته باشد (پس از فرایند حذف در مورد `-m')، چیزی چاپ نمیشود.
- printf [ -v name ] format [ arg ... ]
- چاپ آرگومانها بر اساس مشخصات قالب (format). قواعد قالببندی همانند قواعد مورد استفاده در زبان C است. همان توالیهای گریزِ echo در قالب نیز شناسایی میشوند. تمامی مشخصات تبدیل C که به یکی از csdiouxXeEfgGn ختم میشوند، مدیریت میشوند. افزون بر این، میتوان از `%b' بهجای `%s' استفاده کرد تا توالیهای گریز موجود در آرگومان شناسایی شوند و از `%q' میتوان برای نقلقول کردن آرگومان به نحوی استفاده کرد که امکان استفادهٔ مجدد از آن به عنوان ورودی شل وجود داشته باشد. با مشخصکنندههای قالب عددی، اگر آرگومان متناظر با یک نویسهٔ نقلقول شروع شود، مقدار عددی نویسهٔ پس از آن به عنوان عدد چاپی در نظر گرفته میشود؛ در غیر این صورت، آرگومان به عنوان یک عبارت حسابی ارزیابی میشود. برای شرح عبارتهای حسابی، بخش `Arithmetic Evaluation' در zshmisc(1) را ببینید. با `%n'، آرگومان متناظر به عنوان شناساگری در نظر گرفته میشود که به عنوان یک پارامتر عدد صحیح ایجاد میشود.
بهطور معمول، مشخصات تبدیل به ترتیب روی هر آرگومان اعمال میشوند اما میتوان با جایگزین کردن `%' با `%n$' و `*' با `*n$'، بهطور صریح مشخص کرد که آرگومان nـم استفاده شود. توصیه میشود ارجاعات این سبکِ صریح را با سبک معمولی ترکیب نکنید؛ نحوهٔ مدیریت چنین سبکهای ترکیبی ممکن است در آینده تغییر کند.
اگر آرگومانهایی پس از قالببندی بدون استفاده باقی بمانند، رشتهٔ قالب تا زمانی که همهٔ آرگومانها مصرف شوند دوباره استفاده میشود. در دستور توکار print، با استفاده از گزینهٔ -r میتوان از این رفتار جلوگیری کرد. اگر آرگومانهای بیشتری نسبت به آنچه مشخص شده توسط قالب مورد نیاز باشد، رفتار برنامه بهگونهای است که گویی صفر یا یک رشتهٔ خالی به عنوان آرگومان مشخص شده باشد.
گزینهٔ -v باعث میشود خروجی بهجای چاپ شدن، بهعنوان مقدار پارامتر name ذخیره شود. اگر name یک آرایه باشد و هنگام مصرف آرگومانها، رشتهٔ قالب بازاستفاده شود، برای هر بار استفاده از رشتهٔ قالب، یک عنصر آرایه به کار خواهد رفت.
- pushd [ -qsLP ] [ arg ]
- pushd [ -qsLP ] old new
- pushd [ -qsLP ] {+|-}n
- دایرکتوری جاری را تغییر میدهد، و دایرکتوری جاری پیشین را روی پشتهٔ دایرکتوری قرار میدهد (push میکند). در حالت اول، دایرکتوری جاری به arg تغییر مییابد. اگر arg مشخص نشده باشد، به دایرکتوری دوم روی پشته تغییر مییابد (یعنی دو ورودی بالای پشته جابهجا میشوند)، یا اگر گزینهٔ PUSHD_TO_HOME تنظیم شده باشد و یا تنها یک ورودی روی پشته وجود داشته باشد، به $HOME تغییر مییابد. در غیر این صورت، arg به همان شیوهای که توسط cd تفسیر میشود، تفسیر خواهد شد. معنای old و new در حالت دوم نیز همانند cd است.
حالت سوم pushd، دایرکتوری را با چرخاندن فهرست دایرکتوریها تغییر میدهد. آرگومانی به شکل «+n» ورودی پشته را با شمارش از سمت چپ فهرستِ نمایشدادهشده توسط دستور dirs، با شروع از صفر مشخص میکند. آرگومانی به شکل «-n» از سمت راست شمارش میکند. اگر گزینهٔ PUSHD_MINUS تنظیم شده باشد، معنای «+» و «-» در این زمینه معکوس میشود.
اگر گزینهٔ -q (بیصدا) مشخص شود، تابع قلاب chpwd و توابع موجود در آرایهٔ $chpwd_functions فراخوانی نمیشوند و پشتهٔ دایرکتوری جدید چاپ نمیشود. این ویژگی برای فراخوانیهایی از pushd مفید است که محیط دیدهشده توسط کاربر تعاملی را تغییر نمیدهند.
اگر گزینهٔ -q مشخص نشده باشد و گزینهٔ شل PUSHD_SILENT تنظیم نشده باشد، پس از انجام pushd پشتهٔ دایرکتوری چاپ خواهد شد.
گزینههای -s، -L و -P همان معانی موجود در دستور توکار cd را دارند.
- pushln [ arg ... ]
- معادل print -nz.
- pwd [ -rLP ]
- نام مسیر مطلق دایرکتوری کاری جاری را چاپ میکند. اگر پرچم -r یا -P مشخص شده باشد، یا گزینهٔ CHASE_LINKS تنظیم شده و پرچم -L داده نشده باشد، مسیر چاپشده شامل پیوندهای نمادین نخواهد بود.
- r
- مشابه fc -e -.
- read [ -rszpqAclneE ] [ -t [ num ] ] [ -k [ num ] ] [ -d delim ]
- [ -u n ] [ [name][?prompt] ] [ name ... ]
- یک خط را میخواند و به استثنای موارد ذکرشده در زیر، آن را با استفاده از نویسههای موجود در $IFS به عنوان جداکننده به فیلدهایی تقسیم میکند. فیلد اول به نخستین name، فیلد دوم به دومین name، و به همین ترتیب تخصیص مییابد و فیلدهای باقیمانده به آخرین name اختصاص داده میشوند. اگر name حذف شود، از REPLY برای مقادیر اسکالر و از reply برای آرایهها استفاده میشود.
- -r
- حالت خام: یک «\» در انتهای یک خط به معنای ادامهیافتن خط نیست و بکاسلشهای موجود در خط، نویسهٔ پس از خود را نقلقول نمیکنند و حذف نمیشوند.
- -s
- در صورت خواندن از ترمینال، نویسهها را بازتاب (echo) نمیدهد.
- -q
- تنها یک نویسه از ترمینال میخواند و در صورتی که این نویسه «y» یا «Y» باشد، name را روی «y» و در غیر این صورت روی «n» تنظیم میکند. با تنظیم این پرچم، وضعیت بازگشتی تنها در صورتی صفر است که نویسه «y» یا «Y» باشد. این گزینه ممکن است با مهلت زمانی استفاده شود (به -t مراجعه کنید)؛ اگر مهلت خواندن به پایان برسد یا با پایان فایل (EOF) مواجه شود، وضعیت ۲ بازگردانده میشود. ورودی از ترمینال خوانده میشود مگر اینکه یکی از گزینههای -u یا -p داده شده باشد. این گزینه ممکن است در ویجتهای zle نیز استفاده شود.
- -k [ num ]
- تنها یک (یا num) نویسه میخواند. همهٔ آنها بدون جداسازی کلمات به نخستین name اختصاص داده میشوند. این پرچم در صورت وجود -q نادیده گرفته میشود. ورودی از ترمینال خوانده میشود مگر اینکه یکی از گزینههای -u یا -p مشخص شده باشد. این گزینه ممکن است در ویجتهای zle نیز استفاده شود.
توجه داشته باشید که علیرغم نام اختصاری «key»، این گزینه نویسههای کامل را میخواند که در صورت تنظیم بودن گزینهٔ MULTIBYTE، ممکن است از چندین بایت تشکیل شده باشند.
- -z
- یک ورودی از پشتهٔ بافر ویرایشگر میخواند و آن را بدون تفکیک کلمات به نخستین name تخصیص میدهد. متن با «print -z» یا با push-line از ویرایشگر خط روی پشته قرار میگیرد (به zshzle(1) مراجعه کنید). این پرچم در صورت وجود پرچمهای -k یا -q نادیده گرفته میشود.
- -e
- -E
- ورودی خواندهشده در خروجی استاندارد چاپ (بازتاب) میشود. اگر از پرچم -e استفاده شود، هیچ ورودیای به پارامترها اختصاص داده نمیشود.
- -A
- نخستین name به عنوان نام یک آرایه در نظر گرفته میشود و همهٔ کلمات به آن تخصیص مییابند.
- -c
- -l
- این پرچمها تنها در صورتی مجاز هستند که درون تابعی که برای تکمیل (completion) استفاده میشود (مشخصشده با پرچم -K برای compctl) فراخوانی شوند. اگر پرچم -c داده شود، کلمات دستور جاری خوانده میشوند. اگر پرچم -l داده شود، کل خط به عنوان یک مقدار اسکالر اختصاص داده میشود. اگر هر دو پرچم داده شوند، -l استفاده شده و -c نادیده گرفته میشود.
- -n
- همراه با -c، شمارهٔ کلمهای که مکاننما روی آن قرار دارد خوانده میشود. با -l، نمایهٔ (اندیس) نویسهای که مکاننما روی آن است خوانده میشود. توجه داشته باشید که نام دستور کلمهٔ شمارهٔ ۱ است، نه کلمهٔ ۰، و زمانی که مکاننما در انتهای خط است، نمایهٔ نویسهٔ آن برابر با طول خط به علاوهٔ یک است.
- -u n
- ورودی از توصیفگر فایل n خوانده میشود.
- -p
- ورودی از همروند (coprocess) خوانده میشود.
- -d delim
- ورودی به جای نویسهٔ خط جدید، با اولین نویسهٔ delim خاتمه مییابد.
- -t [ num ]
- پیش از تلاش
برای
خواندن، در
دسترس بودن
ورودی را
بررسی
میکند. اگر
num مشخص شده
باشد، باید
با یک رقم
شروع شود و
برای تعیین
تعداد
ثانیهها
(که
میتواند
عددی با
ممیز شناور
باشد)
ارزیابی
خواهد شد؛
در این حالت
اگر ورودی
در این زمان
در دسترس
نباشد،
مهلت
خواندن به
پایان
میرسد. اگر
num مشخص
نشود، صفر
در نظر
گرفته
میشود تا
در صورتی که
ورودی در
دسترس
نباشد، read
بلافاصله
بازگردد.
اگر ورودی
در دسترس
نباشد،
وضعیت ۱
بازگردانده
میشود و
هیچ متغیری
مقداردهی
نمیگردد.
این گزینه هنگام خواندن از بافر ویرایشگر با -z، هنگام فراخوانی از درون تکمیل با -c یا -l، همراه با -q که صف ورودی را قبل از خواندن پاک میکند، یا درون zle که سازوکارهای دیگری باید برای بررسی ورودی استفاده شوند، در دسترس نیست.
توجه داشته باشید که read تلاشی برای تغییر حالت پردازش ورودی نمیکند. حالت پیشفرض ورودی کانونیکال (canonical) است که در آن در هر نوبت یک خط کامل خوانده میشود، بنابراین معمولاً «read -t» تا زمانی که یک خط کامل تایپ نشود چیزی نخواهد خواند. با این حال، هنگام خواندن از ترمینال با -k ورودی کلید به کلید پردازش میشود؛ در این حالت، تنها در دسترس بودن نخستین نویسه بررسی میشود، بهطوری که برای نمونه «read -t -k 2» همچنان میتواند روی نویسهٔ دوم مسدود (block) شود. اگر این رفتار مطلوب نیست، از دو بار فراخوانی «read -t -k» استفاده کنید.
اگر آرگومان نخست شامل یک «?» باشد، باقیماندهٔ این کلمه در زمانی که شل تعاملی باشد، به عنوان یک prompt (اعلان) در خطای استاندارد استفاده میشود.
مقدار (وضعیت خروج) read در صورتی که با پایان فایل (EOF) مواجه شود، یا زمانی که -c یا -l داده شده باشد و دستور از تابعی مربوط به compctl فراخوانی نشده باشد، یا همانگونه که برای -q توضیح داده شد، ۱ است. در غیر این صورت مقدار آن ۰ خواهد بود.
رفتار برخی ترکیبهای پرچمهای -k، -p، -q، -u و -z تعریفنشده است. در حال حاضر -q همهٔ موارد دیگر را لغو میکند، -p گزینهٔ -u را لغو میکند، -k گزینهٔ -z را لغو میکند، و در غیر این صورت -z هر دو پرچم -p و -u را لغو میکند.
پرچمهای -c یا -l هر یک و همهٔ پرچمهای -kpquz را لغو میکنند. readonly همانند typeset -r است. با تنظیم گزینهٔ POSIX_BUILTINS، همانند typeset -gr عمل میکند.
- rehash
- همانند hash -r است.
- return [ n ]
- باعث میشود یک تابع پوسته یا اسکریپت اجراشده با «.» با وضعیت بازگشتی تعیینشده توسط یک عبارت حسابی n به اسکریپت فراخواننده بازگردد. برای مثال، دستور زیر مقدار «42» را چاپ میکند:
() { integer foo=40; return "foo + 2" }
echo $?
اگر n حذف شود، وضعیت بازگشتی برابر با وضعیت آخرین دستور اجرا شده خواهد بود.
اگر return از درون یک تله (trap) در تابع TRAPNAL اجرا شود، تأثیر آن برای وضعیت بازگشتی صفر و غیرصفر متفاوت خواهد بود. با وضعیت صفر (یا پس از یک بازگشت ضمنی در پایان تله)، پوسته به هر آنچه قبلاً در حال پردازش آن بود بازمیگردد؛ با وضعیت غیرصفر، پوسته طوری رفتار میکند که گویی دچار وقفه شده است، مگر اینکه وضعیت بازگشتیِ تله حفظ شود. توجه داشته باشید که مقدار عددی سیگنالی که باعث ایجاد تله شده به عنوان اولین آرگومان ارسال میشود، بنابراین عبارت «return "128+$1"» همان وضعیتی را بازمیگرداند که گویی سیگنال به دام نیفتاده است.
- sched
- بخش «The zsh/sched Module» در zshmodules(1) را ببینید.
- set [ {+|-}options | {+|-}o [ option_name ] ] ... [ {+|-}A [ name ] ]
- [ arg ... ]
- گزینههای پوسته را تنظیم میکند و/یا پارامترهای مکانی را مقداردهی مینماید، یا یک آرایه را اعلان و مقداردهی میکند. اگر گزینهٔ -s داده شود، باعث میشود آرگومانهای مشخصشده پیش از انتساب به پارامترهای مکانی (یا به آرایهٔ name در صورت استفاده از -A) مرتب شوند. با +s آرگومانها به ترتیب نزولی مرتب میشوند. برای آگاهی از مفهوم سایر پرچمها، zshoptions(1) را ببینید. پرچمها را میتوان با نام و با استفاده از گزینهٔ -o مشخص کرد. اگر هیچ نام گزینهای با -o ارائه نشود، وضعیتهای فعلی گزینهها چاپ میشوند: برای اطلاعات بیشتر دربارهٔ قالب آن، توضیحات setopt در زیر را ببینید. با +o آنها به قالبی چاپ میشوند که میتواند به عنوان ورودی برای پوسته استفاده شود.
اگر پرچم -A مشخص شود، name به یک آرایه حاوی argهای دادهشده تنظیم میشود؛ اگر هیچ nameای مشخص نشود، تمام آرایهها همراه با مقادیرشان چاپ میشوند.
اگر +A استفاده شود و name یک آرایه باشد، آرگومانهای دادهشده جایگزین عناصر ابتدایی آن آرایه خواهند شد؛ اگر هیچ nameای مشخص نشود، تمام آرایهها بدون مقادیرشان چاپ میشوند.
رفتار آرگومانها پس از -A name یا +A name بستگی به این دارد که گزینهٔ KSH_ARRAYS تنظیم شده باشد یا خیر. اگر تنظیم نشده باشد، تمام آرگومانهای بعد از name صرفنظر از شکل آنها به عنوان مقادیر آرایه در نظر گرفته میشوند. اگر این گزینه تنظیم شده باشد، پردازش عادی گزینهها در آن نقطه ادامه مییابد؛ تنها آرگومانهای عادی به عنوان مقادیر برای آرایه در نظر گرفته میشوند. این بدان معناست که
set -A array -x -- foo
در صورتی که KSH_ARRAYS تنظیم نشده باشد، array را به «-x -- foo» تنظیم میکند، اما اگر تنظیم شده باشد، آرایه را به foo تنظیم کرده و گزینهٔ «-x» را فعال مینماید.
اگر پرچم -A وجود نداشته باشد، اما آرگومانهایی فراتر از گزینهها وجود داشته باشند، پارامترهای مکانی مقداردهی میشوند. اگر فهرست گزینهها (در صورت وجود) به «--» ختم شود و هیچ آرگومان دیگری وجود نداشته باشد، پارامترهای مکانی لغو (unset) خواهند شد.
اگر هیچ آرگومان و هیچ «--»ای داده نشود، نامها و مقادیر تمام پارامترها در خروجی استاندارد چاپ میشوند. اگر تنها آرگومان «+» باشد، نام تمام پارامترها چاپ میشود.
به دلایل تاریخی، هنگامی که در هر حالت شبیهسازی دیگری به غیر از حالت بومی zsh باشیم، دستور «set -» معادل «set +xv» و دستور «set - args» معادل «set +xv -- args» در نظر گرفته میشود.
- setcap
- بخش «The zsh/cap Module» در zshmodules(1) را ببینید.
- setopt [ {+|-}options | {+|-}o option_name ] [ -m ] [ name ... ]
- گزینههای پوسته را تنظیم میکند. تمام گزینههایی که یا با پرچمها یا با نام مشخص شدهاند فعال میگردند.
اگر هیچ آرگومانی ارائه نشود، نام تمام گزینههایی که در حال حاضر فعال هستند چاپ میشود. قالب نمایش به گونهای انتخاب شده که تفاوتها با گزینههای پیشفرض برای شبیهسازی فعلی را به حداقل برساند (شبیهسازی پیشفرض zsh بومی است که با <Z> در zshoptions(1) نشان داده شده است). گزینههایی که بهطور پیشفرض برای آن شبیهسازی فعال هستند، تنها در صورتی با پیشوند no نشان داده میشوند که غیرفعال باشند، در حالی که سایر گزینهها بدون پیشوند no و تنها در صورتی که فعال باشند نشان داده میشوند. علاوه بر گزینههایی که وضعیت آنها توسط کاربر از حالت پیشفرض تغییر یافته است، هر گزینهای که بهطور خودکار توسط پوسته فعال شده باشد (برای مثال SHIN_STDIN یا INTERACTIVE) در فهرست نمایش داده خواهد شد. این قالب توسط گزینهٔ KSH_OPTION_PRINT بیشتر تغییر مییابد، هرچند منطق انتخاب گزینهها با یا بدون پیشوند no در این حالت نیز یکسان باقی میماند.
اگر پرچم -m داده شود، آرگومانها به عنوان الگو (که باید برای محافظت در برابر بسط نام فایل داخل گیومه قرار گیرند) در نظر گرفته میشوند، و تمام گزینههایی که نام آنها با این الگوها مطابقت داشته باشد تنظیم میگردند.
توجه داشته باشید که نام نامعتبر یک گزینه باعث متوقف شدن اجرای کدهای بعدی پوسته نمیشود؛ این رفتار با رفتار «set -o» تفاوت دارد. دلیل این امر آن است که دستور set طبق استاندارد POSIX یک دستور داخلی ویژه (special builtin) در نظر گرفته میشود، اما setopt چنین نیست.
- shift [ -p ] [ n ] [ name ... ]
- پارامترهای مکانی ${n+1} ... به $1 ... تغییر نام مییابند، که در آن n یک عبارت حسابی است که مقدار پیشفرض آن 1 میباشد. اگر هرگونه name داده شود، به جای پارامترهای مکانی، آرایههای با این نامها جابهجا (شیفت) داده میشوند.
اگر گزینهٔ -p داده شود، آرگومانها به جای ابتدای آرایه، از انتهای آن حذف (pop) میشوند.
- source file [ arg ... ]
- همانند «.» است، با این تفاوت که دایرکتوری فعلی همیشه و همواره پیش از دایرکتوریهای موجود در $path جستجو میشود.
- stat
- بخش «The zsh/stat Module» در zshmodules(1) را ببینید.
- suspend [ -f ]
- اجرای پوسته را معلق میکند (سیگنال SIGTSTP برای آن میفرستد) تا زمانی که یک SIGCONT دریافت کند. مگر اینکه گزینهٔ -f داده شده باشد، این دستور از معلق کردن یک پوستهٔ ورود (login shell) امتناع خواهد کرد.
- test [ arg ... ]
- [ [ arg ... ] ]
- همانند نسخهٔ سیستمی test است. برای سازگاری اضافه شده است؛ در عوض از عبارتهای شرطی استفاده کنید (بخش «Conditional Expressions» را ببینید). تفاوتهای اصلی بین نحو عبارت شرطی و دستورهای داخلی test و [ عبارتند از: این دستورها از نظر نحوی مدیریت نمیشوند، بنابراین برای مثال بسط یک متغیر خالی ممکن است باعث حذف شدن یک آرگومان شود؛ خطاهای نحوی به جای خطای پوسته باعث بازگرداندن وضعیت 2 میشوند؛ و عملگرهای حسابی به جای عبارتهای حسابی، انتظار آرگومانهای عدد صحیح دارند.
این دستور تلاش میکند تا استاندارد POSIX و افزونههای آن را در مواردی که مشخص شدهاند پیادهسازی کند. متأسفانه ابهامات ذاتی در نحو آن وجود دارد؛ بهویژه هیچ تمایزی بین عملگرهای آزمون و رشتههایی که شبیه آنها هستند وجود ندارد. استاندارد تلاش میکند این موارد را برای تعداد اندکی از آرگومانها (حداکثر چهار مورد) برطرف کند؛ برای پنج آرگومان یا بیشتر نمیتوان به سازگاری اعتماد کرد. به کاربران اکیداً توصیه میشود تا حد امکان از نحو آزمون «[[» که این ابهامات را ندارد استفاده کنند.
- times
- زمانهای تجمیعی کاربر و سیستم را برای پوسته و برای فرآیندهای اجراشده از درون پوسته چاپ میکند.
- trap [ arg ] [ sig ... ]
- arg دنبالهای از دستورها است (که معمولاً برای محافظت در برابر ارزیابی فوری توسط پوسته در گیومه قرار میگیرد) تا زمانی که پوسته هر یک از سیگنالهای مشخصشده توسط یک یا چند آرگومان sig را دریافت کرد، خوانده و اجرا شود. هر sig میتواند به صورت یک عدد یا به عنوان نام یک سیگنال با پیشوند یا بدون رشتهٔ SIG در ابتدا مشخص شود (به عنوان مثال 1، HUP و SIGHUP همگی سیگنال یکسانی هستند). اگر arg برابر «-» باشد، سیگنالهای مشخصشده به مقادیر پیشفرض خود بازنشانی میشوند، یا اگر هیچ آرگومان sig مشخص نشده باشد، تمام تلهها بازنشانی خواهند شد.
اگر arg یک رشتهٔ خالی باشد، سیگنالهای مشخصشده توسط پوسته (و دستوراتی که فراخوانی میکند) نادیده گرفته میشوند.
اگر arg حذف شود اما یک یا چند آرگومان sig ارائه شده باشد (یعنی نخستین آرگومان یک شماره یا نام معتبر سیگنال باشد)، نتیجه همانند حالتی است که arg به صورت «-» مشخص شده باشد.
دستور trap بدون هیچ آرگومانی، فهرستی از دستورهای مرتبط با هر سیگنال را چاپ میکند.
اگر sig برابر ZERR باشد، arg پس از هر دستور با وضعیت خروج غیرصفر اجرا خواهد شد. در سیستمهایی که سیگنال SIGERR ندارند (که حالت معمول است)، ERR یک نام مستعار برای ZERR است.
اگر sig برابر DEBUG باشد، در صورتی که گزینهٔ DEBUG_BEFORE_CMD تنظیم شده باشد (که به طور پیشفرض چنین است)، arg پیش از هر دستور اجرا میشود، و در غیر این صورت پس از هر دستور اجرا خواهد شد. در اینجا، منظور از «دستور» همان چیزی است که در دستور زبان پوسته به عنوان یک «زیرفهرست» (sublist) توصیف شده است؛ بخش SIMPLE COMMANDS & PIPELINES را در zshmisc(1) ببینید. اگر DEBUG_BEFORE_CMD تنظیم شده باشد، قابلیتهای اضافی گوناگونی در دسترس خواهد بود. نخست، با تنظیم گزینهٔ ERR_EXIT میتوان از اجرای دستور بعدی صرفنظر کرد؛ به شرح گزینهٔ ERR_EXIT در zshoptions(1) مراجعه کنید. همچنین، متغیر پوستهٔ ZSH_DEBUG_CMD بر روی رشتهٔ متناظر با دستوری که قرار است پس از تله اجرا شود تنظیم میگردد. توجه داشته باشید که این رشته از قالب داخلی بازسازی میشود و ممکن است قالببندی آن دقیقاً مشابه متن اصلی نباشد. این پارامتر پس از اجرای تله لغو مقدار (unset) میشود.
اگر sig برابر 0 یا EXIT باشد و دستور trap درون بدنهٔ یک تابع اجرا شود، دستور arg پس از پایان یافتن تابع اجرا خواهد شد. مقدار $? در آغاز اجرا، وضعیت خروج پوسته یا وضعیت بازگشت تابع در حال خروج است. اگر sig برابر 0 یا EXIT باشد و عبارت trap درون بدنهٔ تابع اجرا نشود، دستور arg هنگام خاتمهٔ پوسته اجرا میشود؛ این تله پیش از هر تابع قلاب (hook) zshexit اجرا میگردد.
تلههای ZERR، DEBUG و EXIT درون تلههای دیگر اجرا نمیشوند. تلههای ZERR و DEBUG درون زیرپوستهها (subshells) حفظ میشوند، در حالی که تلههای دیگر بازنشانی میگردند.
توجه داشته باشید تلههایی که با دستور توکار trap تعریف میشوند اندکی با تلههایی که به صورت «TRAPNAL () { ... }» تعریف میگردند تفاوت دارند، چرا که مورد دوم محیط تابعی مخصوص به خود را دارد (شمارههای خط، متغیرهای محلی، و غیره) در حالی که مورد نخست از محیط دستوری که در آن فراخوانی شده است استفاده میکند. برای نمونه،
trap 'print $LINENO' DEBUG
شماره خط یک دستور را پس از پایان اجرای آن چاپ میکند، در حالی که
TRAPDEBUG() { print $LINENO; }
همواره عدد صفر را چاپ خواهد کرد.
نامهای جایگزین سیگنالها همانطور که در بالا ذیل kill شرح داده شد مجاز هستند. تعریف یک تله تحت هر یک از نامها باعث میشود که هر تلهٔ دیگری تحت نام جایگزین حذف شود. با این حال، توصیه میشود برای حفظ یکپارچگی، کاربران منحصراً از یک نام یا نام دیگر استفاده کنند.
- true [ arg ... ]
- هیچ کاری انجام ندهد و وضعیت خروج 0 را برگرداند.
- ttyctl [ -fu ]
- گزینهٔ -f پایانه یا tty (یعنی پایانه یا شبیهساز پایانه) را منجمد (freeze) میکند، و -u انجماد آن را لغو میکند. هنگامی که tty منجمد است، هیچ تغییری که توسط برنامههای خارجی در تنظیمات tty ایجاد شود توسط پوسته اعمال نخواهد شد، به جز تغییرات در اندازهٔ صفحه نمایش؛ پوسته به سادگی به محض خروج یا معلق شدن هر دستور، تنظیمات را به مقادیر پیشین خود بازنشانی میکند. بنابراین، stty و برنامههای مشابه هنگامی که tty منجمد است هیچ اثری ندارند. منجمد کردن tty باعث به خاطر سپردن وضعیت فعلی نمیشود؛ در عوض، سبب میشود که تغییرات بعدی در وضعیت مسدود شوند.
بدون گزینهها، گزارش میدهد که پایانه منجمد است یا خیر.
توجه داشته باشید که صرفنظر از منجمد بودن یا نبودن tty، پوسته هنگام شروع ویرایشگر خط (line editor) نیازمند تغییر تنظیمات است، بنابراین رفع انجماد tty تضمین نمیکند که تنظیمات اعمالشده در خط فرمان حفظ شوند. رشته دستورهایی که بین ویرایش خط فرمان اجرا میشوند، وضعیت یکنواختی از tty را مشاهده خواهند کرد. همچنین برای راهاندازی اولیهٔ tty پیش از اجرای دستورهای خارجی و/یا منجمد کردن tty در طول اجرای یک دستور واحد، متغیر پوستهٔ STTY را ببینید.
- type [ -wfpamsS ] name ...
- معادل whence -v است.
- typeset [ {+|-}AHUaghlmrtux ] [ {+|-}EFLRZip [ n ] ]
- [ + ] [ name[=value] ... ]
- typeset -T [ {+|-}Uglrux ] [ {+|-}LRZp [ n ] ]
- [ + | SCALAR[=value] array[=(value ...)] [ sep ] ]
- typeset -f [ {+|-}TUkmtuz ] [ + ] [ name ... ]
- تنظیم یا نمایش مشخصهها و مقادیر برای پارامترهای پوسته.
به استثنای موارد ذکرشده در زیر برای پرچمهای کنترلی که رفتار را تغییر میدهند، برای هر name که از پیش به پارامتری اشاره نمیکند، یک پارامتر جدید ایجاد میشود. درون یک تابع، برای هر name (حتی نامهایی که از قبل وجود دارند) یک پارامتر جدید ایجاد میشود، و با پایان یافتن تابع دوباره لغو مقدار (unset) میگردد. به «Local Parameters» در zshparam(1) مراجعه کنید. همین قواعد برای پارامترهای ویژهٔ پوسته نیز اعمال میشوند، که این پارامترها هنگام محلی شدن، مشخصههای ویژهٔ خود را حفظ میکنند.
برای هر انتساب name=value، پارامتر name بر روی value تنظیم میشود. اگر انتساب حذف شود و name به یک پارامتر موجود اشاره نکند، پارامتر جدید با رشتهٔ خالی، صفر، یا آرایهٔ خالی (بر حسب مورد) مقداردهی اولیه میشود، مگر اینکه گزینهٔ پوستهٔ TYPESET_TO_UNSET تنظیم شده باشد. هنگامی که این گزینه تنظیم باشد، مشخصههای پارامتر ثبت میشوند اما خود پارامتر بدون مقدار باقی میماند.
اگر گزینهٔ پوستهٔ TYPESET_SILENT تنظیم نشده باشد، به ازای هر name باقیمانده که به پارامتری با مقدار قبلی اشاره دارد، نام و مقدار پارامتر در قالب یک انتساب چاپ میشود. برای پارامترهای تازهساختهشده، یا هنگامی که هر یک از پرچمهای مشخصهٔ فهرستشده در زیر همراه با name داده شده باشد، چیزی چاپ نمیشود. استفاده از «+» به جای علامت تفریق برای معرفی یک مشخصه، آن را غیرفعال میکند.
اگر هیچ name وجود نداشته باشد، نام و مقدار تمام پارامترها چاپ میشود. در این حالت، پرچمهای مشخصه نمایش را تنها به پارامترهایی که مشخصههای تعیینشده را دارند محدود میکنند، و استفاده از «+» به جای «-» برای معرفی پرچم، در صورت عدم وجود نام پارامتر، از چاپ مقادیر پارامترها جلوگیری میکند.
تمام صورتهای این دستور انتساب مقادیر اسکالر را مدیریت میکنند. انتساب آرایه در صورتی امکانپذیر است که هنگام تجزیهٔ خط (توجه: نه در هنگام اجرای آن)، با هر یک از کلمات رزروشدهٔ declare، export، float، integer، local، readonly یا typeset مطابقت پیدا کند. در این حالت آرگومانها به صورت انتساب تجزیه میشوند، به استثنای اینکه نحو «+=» و گزینهٔ GLOB_ASSIGN پشتیبانی نمیشوند، و مقادیر اسکالر پس از =، حتی در صورت بسط، به کلمات بیشتر تفکیک نمیشوند (صرفنظر از تنظیمات گزینهٔ KSH_TYPESET؛ این گزینه منسوخ شده است).
مثالهایی از تفاوتهای میان تجزیه به عنوان دستور و کلمهٔ رزروشده:
# Reserved word parsing typeset svar=$(echo one word) avar=(several words)
دستور بالا یک پارامتر اسکالر svar و یک پارامتر آرایهٔ avar ایجاد میکند، گویی که انتسابها به صورت زیر بودهاند:
svar="one word" avar=(several words)
از سوی دیگر:.PP
# رابط معمول دستور توکار builtin typeset svar=$(echo two words)
کلیدواژهٔ builtin باعث میشود دستور بالا از رابط توکار استاندارد برای typeset استفاده کند که در آن تجزیهٔ آرگومانها به همان شیوهٔ سایر دستورها انجام میشود. این مثال یک متغیر اسکالر svar حاوی مقدار two و یک پارامتر اسکالر دیگر با نام words بدون مقدار ایجاد میکند. مقدار آرایه در این حالت یا باعث بروز خطا میشود یا بهعنوان مجموعهای مبهم از توصیفکنندههای تطبیق الگو (glob qualifiers) در نظر گرفته خواهد شد.
آرگومانهای اختیاری مجاز هستند اگر پس از بسط خط فرمان، به شکل انتساب درآیند؛ با این حال، این موارد فقط انتساب اسکالر را انجام میدهند:
var='svar=val' typeset $var
دستور بالا پارامتر اسکالر svar را با مقدار val مقداردهی میکند. قرار دادن پرانتز دور مقدار درون var باعث انتساب آرایهای نمیشود، چرا که هنگام جایگزینی $var با آنها مانند نویسههای معمولی رفتار خواهد شد. هرگونه بسط غیربدیهی در بخش نام انتساب باعث میشود با آرگومان به همین شکل رفتار شود:
typeset {var1,var2,var3}=name
نحو بالا معتبر است و اثر مورد انتظارِ تنظیم هر سه پارامتر به یک مقدار یکسان را دارد، اما خط فرمان پس از بسط، به صورت مجموعهای از سه آرگومان معمولی خط فرمان برای typeset تجزیه میشود. بنابراین انتساب همزمان به چند آرایه از این طریق ممکن نیست.
توجه داشته باشید که هر رابط برای هر یک از دستورها میتواند بهطور جداگانه غیرفعال شود. برای نمونه، `disable -r typeset' رابط کلمهٔ رزروشدهٔ typeset را غیرفعال کرده و رابط توکار را نمایان میسازد، در حالی که `disable typeset' دستور توکار را غیرفعال میکند. توجه کنید که غیرفعال کردن رابط کلمهٔ رزروشده برای typeset ممکن است باعث ایجاد مشکلاتی در خروجی `typeset -p' شود، که فرض میکند رابط کلمهٔ رزروشده برای بازیابی مقادیر آرایه و آرایهٔ انجمنی در دسترس است.
برخلاف عبارتهای انتساب پارامتر، وضعیت خروج typeset در انتسابی که شامل جایگزینی دستور است، وضعیت خروج آن جایگزینی دستور را منعکس نمیکند. بنابراین، برای بررسی خطا در یک جایگزینی دستور، اعلان پارامتر را از مقداردهی اولیهٔ آن جدا کنید:
# نادرست typeset var1=$(exit 1) || echo "Trouble with var1" # درست typeset var1 && var1=$(exit 1) || echo "Trouble with var1"
برای مقداردهی اولیهٔ یک پارامتر param با خروجی یک دستور و نشانهگذاری آن بهصورت فقطخواندنی، پس از عبارت انتساب پارامتر از typeset -r param یا readonly param استفاده کنید.
اگر هیچ پرچم صفتی داده نشود، و یا هیچ آرگومان name وجود نداشته باشد یا از پرچم +m استفاده شود، آنگاه پیش از هر نام پارامتر چاپشده، فهرستی از صفتهای آن پارامتر میآید (array، association، exported، float، integer، readonly، یا undefined برای پارامترهای خودبارگذاریشوندهای که هنوز بارگذاری نشدهاند). اگر +m همراه با پرچمهای صفت استفاده شود، و همهٔ آن پرچمها با + مشخص شوند، نامهای پارامترهای منطبق چاپ میشوند اما مقادیر آنها چاپ نخواهد شد.
پرچمهای کنترلی زیر رفتار typeset را تغییر میدهند:
- +
- اگر `+' به تنهایی در یک کلمهٔ مجزا به عنوان آخرین گزینه بیاید، نام تمام پارامترها (یا در صورت وجود -f، توابع) چاپ میشود، اما مقادیر (بدنهٔ توابع) چاپ نمیشوند. اگر آرگومانهای name ظاهر شوند، هم آن نامها و هم مقادیرشان به شکل انتساب چاپ میشوند. قرار گرفتن هر گزینهٔ دیگری پس از `+' خطا است، اما اثر `+' بهگونهای است که گویی تمام پرچمهای صفت پیش از آن با پیشوند `+' داده شدهاند. برای نمونه، `typeset -U +' معادل `typeset +U' است و نام تمامی آرایههای دارای صفت یکتایی را نمایش میدهد، در حالی که `typeset -f -U +' نام تمام توابع با قابلیت بارگذاری خودکار را نمایش میدهد. اگر + تنها گزینه باشد، اطلاعات نوع (آرایه، فقطخواندنی، و غیره) نیز برای هر پارامتر چاپ میشود، دقیقاً همانند `typeset +m "*"'.
- -g
- پرچم -g (سراسری یا global) بدین معناست که پارامتر حاصل به حوزهٔ محلی محدود نخواهد شد. توجه داشته باشید که این لزوماً به این معنا نیست که پارامتر سراسری خواهد بود، زیرا این پرچم بر روی هر پارامتر موجود (حتی اگر مقدار آن لغو شده باشد) از تابع دربرگیرنده اعمال خواهد شد. این پرچم پس از ایجاد پارامتر تأثیری بر آن ندارد، بنابراین هنگام فهرست کردن پارامترهای موجود هیچ اثری نخواهد داشت، و همچنین پرچم +g نیز به جز در ترکیب با -m هیچ تأثیری ندارد (به زیر مراجعه کنید).
- -m
- اگر پرچم -m داده شود، آرگومانهای name به عنوان الگو در نظر گرفته میشوند (برای جلوگیری از تفسیر آنها به عنوان الگوهای فایل، از نقلقول استفاده کنید). بدون پرچمهای صفت، تمام پارامترها (یا توابع در صورت استفاده از پرچم -f) با نامهای منطبق چاپ میشوند (گزینهٔ پوستهٔ TYPESET_SILENT در این حالت استفاده نمیشود).
اگر پرچم +g با -m ترکیب شود، به ازای هر پارامتر منطبقی که در حال حاضر محلی نیست، یک پارامتر محلی جدید ایجاد میشود. در غیر این صورت -m تمام پرچمها یا انتسابهای دیگر را بر روی پارامترهای موجود اعمال میکند.
به جز زمانی که انتسابها با name=value انجام شوند، استفاده از +m چاپ پارامترهای منطبق و صفتهای آنها را اجباری میکند، حتی در داخل یک تابع. توجه داشته باشید که اگر هیچ الگویی داده نشود -m نادیده گرفته میشود، بنابراین `typeset -m' صفتها را نمایش میدهد اما `typeset -a +m' آنها را نمایش نمیدهد. پارامترهای رشتهای اسکالر معمولی هیچ صفتی ندارند، بنابراین برای آنها +m فقط نامها را چاپ میکند.
- -p [ n ]
- اگر گزینهٔ -p داده شود، صرفنظر از سایر پرچمها و گزینهها، پارامترها و مقادیر به صورت یک دستور typeset همراه با یک انتساب چاپ میشوند. توجه داشته باشید که پرچم -H روی پارامترها رعایت میشود؛ هیچ مقداری برای این پارامترها نشان داده نخواهد شد.
-p میتواند با یک آرگومان عددی صحیح اختیاری همراه باشد. در حال حاضر فقط مقدار 1 پشتیبانی میشود. در این حالت، برای خوانایی بیشتر، آرایهها و آرایههای انجمنی با خطهای جدید بین عناصر دارای تورفتگی چاپ میشوند.
- -T [ scalar[=value] array[=(value ...)] [ sep ] ]
- این پرچم هنگام استفاده با -f معنای متفاوتی دارد؛ به بخش زیر مراجعه کنید. در غیر این صورت گزینهٔ -T نیازمند وجود صفر، دو یا سه آرگومان است. بدون هیچ آرگومانی، فهرست پارامترهایی که به این شیوه ایجاد شدهاند نشان داده میشود. با دو یا سه آرگومان، دو مورد نخست نامهای یک پارامتر اسکالر و یک پارامتر آرایه (به همان ترتیب) هستند که مانند $PATH و $path به یکدیگر گره میخورند. آرگومان اختیاری سوم، یک جداکنندهٔ تکنویسهای است که برای پیوند دادن عناصر آرایه جهت ساخت متغیر اسکالر استفاده خواهد شد؛ در صورت نبود آن، دونقطه (:) به کار میرود، همانند $PATH. تنها نخستین نویسهٔ جداکننده معنادار است؛ هر نویسهٔ باقیمانده نادیده گرفته میشود. نویسههای چندبایتی هنوز پشتیبانی نمیشوند.
تنها به یکی از پارامترهای اسکالر یا آرایه میتوان مقدار اولیه اختصاص داد (محدودیتهای مربوط به قالبهای انتساب که در بالا شرح داده شد نیز اعمال میشوند).
هر دو پارامتر اسکالر و آرایه را میتوان به صورت عادی دستکاری کرد. اگر مقدار یکی لغو شود (unset)، دیگری نیز بهطور خودکار لغو خواهد شد. هیچ راهی برای باز کردن گرهٔ متغیرها بدون لغو کردن مقدار آنها وجود ندارد، و همچنین تبدیل نوع یکی از آنها با یک دستور typeset دیگر ممکن نیست؛ +T کار نمیکند، انتساب یک آرایه به scalar خطا است، و انتساب یک مقدار اسکالر به array آن را به یک آرایهٔ تکعنصری تبدیل میکند.
توجه داشته باشید که هر دو دستور `typeset -xT ...' و `export -T ...' کار میکنند، اما تنها متغیر اسکالر برای صادر شدن (export) نشانهگذاری میشود. تنظیم مقدار با استفاده از نسخهٔ اسکالر موجب تفکیک بر روی تمام جداکنندهها میشود (که نمیتوان آنها را نقلقول کرد). میتوان -T را بر روی دو متغیر که قبلاً به هم گره خوردهاند اما با یک نویسهٔ جداکنندهٔ متفاوت اعمال کرد، که در این حالت متغیرها مانند گذشته پیوندخورده باقی میمانند اما نویسهٔ جداکننده تغییر میکند.
هنگامی که یک متغیر اسکالر موجود به یک آرایهٔ جدید گره میخورد، مقدار اسکالر حفظ میشود اما هیچ صفتی به جز export حفظ نخواهد شد.
پرچمهای صفتی که مقدار نهایی را تغییر میدهند (-L، -R، -Z، -l، -u) فقط روی مقدار بسطیافته در نقطهٔ عبارت بسط پارامتر با استفاده از `$' اعمال میشوند. آنها هنگامی که یک پارامتر برای هر مقصودی بهطور داخلی توسط پوسته فراخوانی میشود اعمال نمیگردند..PP پرچمهای ویژگی زیر را میتوان مشخص کرد:
- -A
- نامها به پارامترهای آرایهٔ انجمنی اشاره دارند؛ به `Array Parameters' در zshparam(1) مراجعه کنید.
- -L [ n ]
- چپچین کردن و حذف فاصلههای خالی ابتدایی از مقدار، هنگامی که پارامتر بسط داده میشود. اگر n غیرصفر باشد، پهنای فیلد را تعیین میکند. اگر n صفر باشد، پهنا با پهنای مقدارِ نخستین انتساب تعیین میشود. در مورد پارامترهای عددی، طول مقدار کامل اختصاصیافته به پارامتر برای تعیین پهنا استفاده میشود، نه مقداری که در خروجی نمایش داده خواهد شد.
پهنا برابر با تعداد نویسهها است، که اگر گزینهٔ MULTIBYTE فعال باشد ممکن است نویسههای چندبایتی باشند. توجه داشته باشید که پهنای روی صفحهٔ نویسه در نظر گرفته نمیشود؛ اگر به این کار نیاز است، از فاصلهگذاری (padding) با پرچمهای بسط پارامتر ${(ml...)...} همانطور که در `Parameter Expansion Flags' در zshexpn(1) توصیف شده، استفاده کنید.
هنگامی که پارامتر بسط داده میشود، در سمت راست با جاهای خالی پُر میشود یا در صورت نیاز برای جا شدن در فیلد، کوتاه (truncate) میشود. توجه داشته باشید که کوتاه کردن میتواند به نتایج غیرمنتظرهای در پارامترهای عددی منجر شود. صفرهای ابتدایی در صورتی که پرچم -Z نیز تنظیم شده باشد، حذف میشوند.
- -R [ n ]
- مشابه -L، با این تفاوت که از راستچین کردن استفاده میشود؛ هنگامی که پارامتر بسط داده میشود، فیلد از چپ با جاهای خالی پُر میشود یا از انتها کوتاه میشود. نمیتواند با پرچم -Z ترکیب شود.
- -U
- برای آرایهها (اما نه برای آرایههای انجمنی)، تنها اولین رخداد از هر مقدار تکراری را نگه میدارد. این پرچم همچنین میتواند برای پارامترهای پیوندخورده (به -T مراجعه کنید) یا پارامترهای ویژهٔ جداشده با دونقطه مانند PATH یا FIGNORE و غیره تنظیم شود. توجه داشته باشید که پرچم در زمان انتساب اثر میکند، و نوع متغیری که به آن مقدار اختصاص داده میشود تعیینکننده است؛ بنابراین برای متغیرهایی با مقادیر مشترک توصیه میشود پرچم را برای تمام رابطها تنظیم کنید، مانند `typeset -U PATH path'.
این پرچم در صورت استفاده همراه با -f معنای متفاوتی دارد؛ به ادامه مراجعه کنید.
- -Z [ n ]
- اگر همراه با پرچم -L تنظیم شود، رفتار ویژهای دارد. در غیر این صورت، مشابه -R است، با این تفاوت که اگر نخستین نویسهٔ غیرخالی یک رقم باشد، به جای فاصلههای خالی از صفرهای ابتدایی برای پُر کردن استفاده میشود. با پارامترهای عددی به صورت ویژه رفتار میشود: آنها همیشه واجد شرایط پُر شدن با صفرها هستند، و صفرها در جای مناسبی در خروجی درج میشوند.
- -a
- نامها به پارامترهای آرایه اشاره دارند. یک پارامتر آرایه میتواند از این طریق ایجاد شود، اما در عبارت typeset تنها در صورتی میتوان به آن مقدار اختصاص داد که شکل کلمهٔ کلیدی رزروشدهٔ typeset فعال باشد (که به طور پیشفرض چنین است). هنگام نمایش، هم آرایههای معمولی و هم انجمنی نشان داده میشوند.
- -f
- نامها به توابع اشاره دارند و نه به پارامترها. هیچ انتسابی نمیتواند انجام شود، و تنها پرچمهای معتبر دیگر -t، -T، -k، -u، -U و -z هستند. پرچم -t ردگیری اجرا را برای این تابع روشن میکند؛ پرچم -T نیز همین کار را انجام میدهد، اما ردگیری را برای هر تابع نامداری (نه ناشناس) که از تابع فعلی فراخوانی شود خاموش میکند، مگر اینکه آن تابع نیز پرچم -t یا -T را داشته باشد. پرچمهای -u و -U باعث میشوند تابع برای بارگذاری خودکار نشانهگذاری شود؛ -U همچنین هنگام بارگذاری تابع مانع از بسط نامهای مستعار (alias) میشود. برای جزئیات به توضیحات دستور توکار `autoload' مراجعه کنید.
توجه داشته باشید که دستور توکار functions قابلیتهای پایهای مشابهی با typeset -f فراهم میکند اما به چند گزینهٔ اضافی دسترسی میدهد؛ autoload برای حالتهای typeset -fu و typeset -fU گزینههای اضافی بیشتری ارائه میدهد.
- -h
- پنهان کردن: تنها برای پارامترهای ویژه (آنهایی که با `<S>' در جدول zshparam(1) مشخص شدهاند)، و برای پارامترهای محلی همنام با یک پارامتر ویژه مفید است، هرچند برای بقیه نیز بیضرر است. یک پارامتر ویژه با این ویژگی، هنگامی که محلی شود اثر ویژهٔ خود را حفظ نخواهد کرد. بنابراین پس از `typeset -h PATH'، تابعی حاوی `typeset PATH' یک پارامتر محلی معمولی بدون رفتار معمول PATH ایجاد میکند. همچنین میتوان این ویژگی را به خود پارامتر محلی داد؛ بنابراین درون یک تابع، `typeset -h PATH' یک پارامتر محلی معمولی ایجاد میکند و پارامتر ویژهٔ PATH به هیچ وجه دستکاری نمیشود. همچنین میتوان با استفاده از `typeset +h special' یک پارامتر محلی ایجاد کرد، که در آن نسخهٔ محلی special صرفنظر از داشتن ویژگی -h، ویژگیهای خاص خود را حفظ خواهد کرد. به پارامترهای ویژهٔ سراسری بارگذاریشده از ماژولهای پوسته (در حال حاضر ماژولهای موجود در zsh/mapfile و zsh/parameter) به طور خودکار ویژگی -h داده میشود تا از تداخل نامها جلوگیری شود.
- -H
- پنهان کردن مقدار: مشخص میکند که typeset هنگام فهرست کردن پارامترها، مقدار پارامتر را نمایش ندهد؛ نمایش این پارامترها همیشه به گونهای است که گویی پرچم `+' داده شده است. استفاده از پارامتر در سایر جنبهها عادی است، و این گزینه در صورتی که پارامتر با نام، یا با الگو توسط گزینهٔ -m مشخص شده باشد، اعمال نمیشود. این ویژگی به طور پیشفرض برای پارامترهای موجود در ماژولهای zsh/parameter و zsh/mapfile فعال است. با این حال توجه داشته باشید که برخلاف پرچم -h، این پرچم برای پارامترهای غیرویژه نیز مفید است.
- -i [ n ]
- استفاده از بازنمود درونی عدد صحیح (integer). اگر n غیرصفر باشد، مبنای محاسباتی خروجی را تعریف میکند، در غیر این صورت با نخستین انتساب تعیین میشود. مبناهای بین ۲ تا ۳۶ (شامل هر دو) مجاز هستند.
- -E [ n ]
- استفاده از بازنمود درونی ممیز شناور با دقت مضاعف (double-precision floating point). در خروجی، متغیر به نماد علمی تبدیل خواهد شد. اگر n غیرصفر باشد، تعداد ارقام بااهمیت را برای نمایش مشخص میکند؛ پیشفرض ده است.
- -F [ n ]
- استفاده از بازنمود درونی ممیز شناور با دقت مضاعف. در خروجی، متغیر به نماد اعشاری ممیز ثابت (fixed-point) تبدیل خواهد شد. اگر n غیرصفر باشد، تعداد ارقام پس از نقطهٔ اعشار را برای نمایش مشخص میکند؛ پیشفرض ده است.
- -l
- تبدیل نتیجه به حروف کوچک هر زمان که پارامتر بسط داده میشود. مقدار هنگام انتساب تبدیل نمیشود.
- -r
- نامهای دادهشده (nameها) به عنوان فقطخواندنی علامتگذاری میشوند. توجه داشته باشید که اگر name یک پارامتر ویژه باشد، ویژگی فقطخواندنی را میتوان روشن کرد، اما پس از آن نمیتوان آن را خاموش کرد.
اگر گزینهٔ POSIX_BUILTINS تنظیم شده باشد، ویژگی فقطخواندنی محدودکنندهتر است: متغیرهای مقداردهینشده را میتوان فقطخواندنی علامتگذاری کرد و پس از آن نمیتوان مقداردهی کرد؛ علاوه بر این، ویژگی فقطخواندنی را نمیتوان از هیچ متغیری حذف کرد.
با این حال همچنان امکان تغییر سایر ویژگیهای متغیر وجود دارد، که برخی از آنها مانند -U یا -Z بر مقدار تأثیر میگذارند. به طور کلی، نباید به ویژگی فقطخواندنی به عنوان یک سازوکار امنیتی تکیه کرد.
توجه داشته باشید که در zsh (مانند pdksh اما برخلاف بیشتر پوستههای دیگر) همچنان امکان ایجاد یک متغیر محلی همنام وجود دارد زیرا این یک متغیر متفاوت در نظر گرفته میشود (گرچه این متغیر نیز میتواند فقطخواندنی علامتگذاری شود). متغیرهای ویژهای که فقطخواندنی شدهاند، هنگام محلی شدن مقدار و ویژگی فقطخواندنی خود را حفظ میکنند.
- -t
- پارامترهای نامبرده را برچسبگذاری میکند. برچسبها برای پوسته هیچ معنای خاصی ندارند. این پرچم در صورت استفاده همراه با -f معنای متفاوتی دارد؛ به بالا مراجعه کنید.
- -u
- تبدیل نتیجه به حروف بزرگ هر زمان که پارامتر بسط داده میشود. مقدار هنگام انتساب تبدیل نمیشود. این پرچم در صورت استفاده همراه با -f معنای متفاوتی دارد؛ به بالا مراجعه کنید.
- -x
- نشانهگذاری برای برونریزی (export) خودکار به محیط دستوراتی که متعاقباً اجرا میشوند. اگر گزینهٔ GLOBAL_EXPORT تنظیم شده باشد، این به معنای گزینهٔ -g خواهد بود، مگر اینکه +g نیز صراحتاً مشخص شده باشد؛ به عبارت دیگر پارامتر برای تابع دربرگیرنده محلی نمیشود. این برای سازگاری با نسخههای قبلی zsh است.
- ulimit [ -HSa ] [ { -bcdfiklmnpqrsTtvwx | -N resource } [ limit ] ... ]
- تنظیم یا نمایش محدودیتهای منابع برای پوسته و فرایندهای آغازشده توسط پوسته. مقدار limit میتواند یک عدد در واحد مشخصشده در زیر باشد یا یکی از مقادیر `unlimited' که محدودیت روی منبع را حذف میکند، یا `hard' که از مقدار کنونی حد سختگیرانه (hard limit) روی منبع استفاده میکند. بهطور پیشفرض، فقط محدودیتهای نرم دستکاری میشوند. اگر پرچم -H داده شود، به جای محدودیتهای نرم از محدودیتهای سخت استفاده میشود. اگر پرچم -S همراه با پرچم -H داده شود، هر دو محدودیت سخت و نرم تنظیم میشوند.
اگر هیچ گزینهای استفاده نشود، محدودیت اندازه فایل (-f) فرض میشود.
اگر limit حذف شود، مقدار فعلی منابع مشخصشده چاپ میشود. هنگامی که مقدار بیش از یک منبع چاپ شود، نام محدودیت و واحد آن پیش از هر مقدار چاپ میشود.
هنگام پیمایش روی چندین منبع، اگر شل یک آرگومان با ساختار نادرست را تشخیص دهد بلافاصله متوقف خواهد شد. با این حال، اگر به دلیل دیگری در تنظیم یک محدودیت شکست بخورد، به تلاش برای تنظیم محدودیتهای باقیمانده ادامه خواهد داد.
همه منابع زیر در تمام سیستمها پشتیبانی نمیشوند. اجرای ulimit -a نشان میدهد که کدامیک پشتیبانی میشوند.
- -a
- فهرست کردن تمام محدودیتهای فعلی منابع.
- -b
- اندازه بافر سوکت به بایت (توجه: نه به کیلوبایت).
- -c
- بلوکهای ۵۱۲ بایتی روی اندازه core dumpها.
- -d
- کیلوبایت روی اندازه بخش داده (data segment).
- -e
- بیشینه مقدار nice.
- -f
- بلوکهای ۵۱۲ بایتی روی اندازه فایلهای نوشتهشده.
- -i
- تعداد سیگنالهای در انتظار (pending).
- -k
- تعداد kqueueهای تخصیصیافته.
- -l
- کیلوبایت روی اندازه حافظه قفلشده (locked-in memory).
- -m
- کیلوبایت روی اندازه حافظه فیزیکی.
- -n
- توصیفکنندههای فایل باز.
- -o
- بیشینه تعداد اشیاء کتابخانه ریسههای POSIX.
- -p
- تعداد شبهترمینالها.
- -q
- بایتها در صفهای پیام POSIX.
- -r
- بیشینه اولویت بیدرنگ (real time priority). در برخی سیستمها که این گزینه در دسترس نیست، مانند NetBSD، این گزینه برای سازگاری با sh اثری مشابه -T دارد.
- -s
- کیلوبایت روی اندازه پشته (stack).
- -T
- تعداد ریسههای همزمانِ در دسترس برای کاربر.
- -t
- ثانیههای CPU مورد استفاده.
- -u
- تعداد فرایندهای در دسترس برای کاربر.
- -v
- کیلوبایت روی اندازه حافظه مجازی. در برخی سیستمها این به محدودیتی با عنوان “فضای آدرس” (address space) اشاره دارد.
- -w
- کیلوبایت روی اندازه حافظه مبادلهشده (swapped out memory).
- -x
- تعداد قفلها روی فایلها.
- -y
- بیشینه اندازه بافرها برای لولهها/fifoها.
یک منبع میتواند همچنین با یک عدد صحیح در قالب “-N resource” مشخص شود، که در آن resource با عدد صحیح تعریفشده برای منبع توسط سیستمعامل مطابقت دارد. این میتواند برای تنظیم محدودیت منابعی که برای شل شناخته شدهاند اما با حروف گزینه متناظر نیستند، استفاده شود. چنین محدودیتهایی با عدد در خروجی “ulimit -a” نمایش داده خواهند شد.
همچنین ممکن است این عدد خارج از محدوده محدودیتهای کامپایلشده در شل باشد. شل در هر صورت تلاش خواهد کرد محدودیت را بخواند یا بنویسد، و در صورت عدم موفقیت، خطایی را گزارش خواهد داد.
- umask [ -S ] [ mask ]
- مقدار umask روی mask تنظیم میشود. mask میتواند یک عدد هشتهشتی (octal) یا یک مقدار نمادین باشد، همانطور که در صفحه راهنمای chmod(1) توصیف شده است. اگر mask حذف شود، مقدار فعلی چاپ میشود. گزینه -S باعث میشود ماسک بهصورت یک مقدار نمادین چاپ شود. در غیر این صورت، ماسک بهصورت یک عدد هشتهشتی چاپ میشود. توجه داشته باشید که در شکل نمادین، مجوزهایی که مشخص میکنید مواردی هستند که باید به کاربران مشخصشده مجاز دانسته شوند (نه اینکه منع شوند).
- unalias [ -ams ] name ...
- نامهای مستعار را حذف میکند. این دستور مانند unhash -a عمل میکند، با این تفاوت که گزینه -a تمام نامهای مستعار عادی یا سراسری (global) را حذف میکند، یا همراه با -s تمام نامهای مستعار پسوند را: در این حالت هیچ آرگومان name نباید درج شود. گزینههای -m (حذف با الگو) و -s بدون -a (حذف نامهای مستعار پسوندِ فهرستشده) مانند unhash -a رفتار میکنند. توجه داشته باشید که معنی -a بین unalias و unhash متفاوت است.
- unfunction
- مشابه unhash -f است.
- unhash [ -adfms ] name ...
- عنصر با نام name را از جدول درهمسازی (hash table) داخلی حذف میکند. حالت پیشفرض، حذف عناصر از جدول درهمسازی دستورات است. گزینه -a باعث میشود unhash نامهای مستعار عادی یا سراسری را حذف کند؛ توجه داشته باشید هنگام حذف یک نام مستعار سراسری، آرگومان باید در نقلقول قرار گیرد تا پیش از ارسال به دستور، بسط داده نشود. گزینه -s باعث میشود unhash نامهای مستعار پسوند را حذف کند. گزینه -f باعث میشود unhash توابع شل را حذف کند. گزینه -d باعث میشود unhash دایرکتوریهای نامگذاریشده را حذف کند. اگر پرچم -m داده شود، آرگومانها به عنوان الگو در نظر گرفته میشوند (باید داخل نقلقول باشند) و تمام عناصر جدول درهمسازی مربوطه که نامشان با آنها مطابقت دارد حذف خواهند شد.
- unlimit [ -hs ] resource ...
- محدودیت منبع برای هر resource روی محدودیت سخت تنظیم میشود. اگر پرچم -h داده شود و شل دارای دسترسیهای لازم باشد، محدودیت سخت منبع برای هر resource حذف میشود. منابع فرایند شل تنها در صورتی تغییر میکنند که پرچم -s داده شده باشد.
دستور unlimit بهطور پیشفرض هنگامی که شل در حالت شبیهسازی شل دیگری آغاز شود در دسترس نیست. این دستور میتواند با دستور `zmodload -F zsh/rlimits b:unlimit' در دسترس قرار گیرد.
- unset [ -fmv ] name ...
- هر پارامتر مشخصشده لغو مقدار (unset) میشود. پارامترهای محلی حتی در صورت لغو مقدار، محلی باقی میمانند؛ آنها در حوزه مربوطه نامقداردهیشده به نظر میرسند، اما با پایان حوزه، مقدار پیشین همچنان دوباره پدیدار خواهد شد.
عناصر منفرد پارامترهای آرایه انجمنی را میتوان با استفاده از نحو زیرنویس (subscript) روی name لغو مقدار کرد، که باید داخل نقلقول قرار گیرد (یا کل دستور با پیشوند noglob اجرا شود) تا از زیرنویس در برابر تولید نام فایل محافظت شود.
اگر پرچم -m مشخص شود، آرگومانها به عنوان الگو در نظر گرفته میشوند (باید داخل نقلقول باشند) و تمام پارامترهایی با نامهای منطبق لغو مقدار میشوند. توجه داشته باشید که این مورد را نمیتوان هنگام لغو مقدار عناصر آرایه انجمنی به کار برد، زیرا زیرنویس به عنوان بخشی از الگو تلقی خواهد شد.
پرچم -v مشخص میکند که name به پارامترها اشاره دارد. این، رفتار پیشفرض است.
دستور unset -f معادل unfunction است.
- unsetopt [ {+|-}options | {+|-}o option_name ] [ name ... ]
- غیرفعال کردن گزینهها برای شل. تمام گزینههایی که یا با پرچمها یا با نام مشخص شدهاند غیرفعال میشوند. اگر هیچ آرگومانی ارائه نشود، نام تمام گزینههایی که در حال حاضر غیرفعال هستند چاپ میشود. اگر پرچم -m داده شود، آرگومانها به عنوان الگو در نظر گرفته میشوند (که باید داخل نقلقول قرار گیرند تا از تفسیر آنها به عنوان الگوهای تطبیق الگو یا glob جلوگیری شود)، و تمام گزینههایی که نامشان با این الگوها مطابقت دارد غیرفعال میشوند.
- vared
- بخش `Zle Builtins' در zshzle(1) را ببینید..TP wait [ job ... ] برای کارها یا فرایندهای مشخصشده منتظر میماند. اگر job مشخص نشده باشد، برای تمام فرایندهای فرزند در حال حاضر فعال صبر میشود. هر job میتواند مشخصات یک کار یا شناسه فرایند (process ID) مربوط به یک کار در جدول کارها باشد. وضعیت خروج این دستور همان وضعیت خروج کارِ منتظرمانده است. اگر job نمایانگر یک کار یا شناسه فرایند ناشناخته باشد، یک هشدار چاپ میشود (مگر اینکه گزینه POSIX_BUILTINS تنظیم شده باشد) و وضعیت خروج ۱۲۷ خواهد بود.
این امکان وجود دارد که برای فرایندهای اخیری که در پسزمینه اجرا میشدهاند (مشخصشده با شناسه فرایند، نه با کار) حتی اگر فرایند خاتمه یافته باشد، منتظر ماند. معمولاً شناسه فرایند با دریافت مقدار متغیر $! بلافاصله پس از شروع فرایند ثبت میشود. محدودیتی برای تعداد شناسههای فرایند بهخاطرسپردهشده توسط پوسته وجود دارد؛ این حد توسط مقدار پارامتر پیکربندی سیستم CHILD_MAX تعیین میشود. هنگامی که این حد تکمیل شود، شناسههای فرایند قدیمیتر نادیده گرفته میشوند، با اولویت فرایندهایی که شروع آنها کمتر از همه اخیر بوده است.
توجه داشته باشید که هیچ حفاظتی در برابر چرخش (wrapping) شناسه فرایند وجود ندارد، به این معنی که اگر wait بهاندازه کافی زود اجرا نشود، این احتمال وجود دارد که فرایندی که برایش منتظر ماندهاید فرایند اشتباهی باشد. وجود یک تداخل به این معناست که هر دو شناسه فرایند توسط پوسته ایجاد شدهاند (زیرا سایر فرایندها ثبت نمیشوند) و کاربر بالقوه به هر دو علاقهمند است، بنابراین این مشکل ذاتی شناسههای فرایند است.
- whence [ -vcwfpamsS ] [ -x num ] name ...
- برای هر name مشخص میکند که اگر به عنوان نام دستور استفاده شود چگونه تفسیر خواهد شد.
اگر name یک نام مستعار (alias)، دستور توکار (built-in)، دستور خارجی، تابع پوسته، دستور هششده (hashed command) یا یک کلمه رزروشده نباشد، وضعیت خروج غیرصفر خواهد بود و -- اگر -v، -c یا -w داده شده باشد -- پیامی در خروجی استاندارد نوشته خواهد شد. (این برعکس پوستههای دیگر است که آن پیام را در خطای استاندارد مینویسند.)
دستور whence زمانی بیشترین کاربرد را دارد که name فقط آخرین مؤلفه مسیر یک دستور باشد، یعنی فاقد `/' باشد؛ بهویژه، تطبیق الگو تنها در صورتی موفق میشود که فقط بخش غیردایرکتوری دستور داده شود.
- -v
- گزارش مفصلتری تولید میکند.
- -c
- نتایج را با قالبی شبیه به csh چاپ میکند. این گزینه بر -v اولویت دارد.
- -w
- برای هر name، عبارت `name: word' را چاپ میکند که در آن word بسته به اینکه name مطابق با یک نام مستعار، یک دستور توکار، یک دستور خارجی، یک تابع پوسته، یک دستور تعریفشده با دستور توکار hash، یک کلمه رزروشده، یا ناشناخته باشد، یکی از مقادیر alias، builtin، command، function، hashed، reserved یا none خواهد بود. این گزینه بر -v و -c اولویت دارد.
- -f
- موجب نمایش محتویات تابع پوسته میشود، در حالی که در حالت عادی این اتفاق رخ نمیدهد مگر اینکه از پرچم -c استفاده شده باشد.
- -p
- یک جستجوی مسیر برای name انجام میدهد، حتی اگر یک alias، کلمه رزروشده، تابع پوسته یا توکار باشد.
- -a
- جستجویی برای تمام موارد وقوع name در سراسر مسیر دستورات انجام میدهد. در حالت عادی فقط اولین مورد چاپ میشود. هنگام ترکیب با -m، تنها نامهایی که در جدول هش دستورات آمدهاند جستجو میشوند، اما تمام موارد وقوع آن نامها چاپ خواهند شد.
- -m
- آرگومانها به عنوان الگو در نظر گرفته میشوند (نویسههای الگو باید نقلقول شوند)، و اطلاعات برای هر ورودی در جدول هش دستورات که با یکی از این الگوها مطابقت دارد نمایش داده میشود. جدول هش ابتدا در صورت تغییرات در PATH دوباره پر میشود.
- -s
- اگر نام مسیر حاوی پیوندهای نمادین باشد، مسیر بدون پیوند نمادین را نیز چاپ میکند.
- -S
- مانند -s، اما اگر نام مسیر با دنبال کردن چندین پیوند نمادین حل شده باشد، مراحل میانی نیز چاپ میشوند. پیوند نمادین حلشده در هر مرحله ممکن است در هر کجای مسیر باشد.
- -x num
- هنگام خروجی دادن توابع پوسته با استفاده از گزینه -c، فاصلههای تب را باز میکند (expand). این همان تأثیر گزینه -x در دستور توکار functions را دارد.
- where [ -wpmsS ] [ -x num ] name ...
- معادل با whence -ca است.
- which [ -wpamsS ] [ -x num ] name ...
- معادل با whence -c است.
- zcompile [ -U ] [ -z | -k ] [ -R | -M ] file [ name ... ]
- zcompile -ca [ -m ] [ -R | -M ] file [ name ... ]
- zcompile -t file [ name ... ]
- از این دستور توکار میتوان برای کامپایل کردن توابع یا اسکریپتها، ذخیره شکل کامپایلشده در یک فایل، و بررسی فایلهای حاوی شکل کامپایلشده استفاده کرد. این کار با جلوگیری از تجزیه (parsing) متن در هنگام خواندن فایلها، امکان بارگذاری خودکار سریعتر توابع و منبعدهی (sourcing) اسکریپتها را فراهم میکند.
شکل اول (بدون گزینههای -c، -a یا -t) یک فایل کامپایلشده ایجاد میکند. اگر فقط آرگومان file داده شود، فایل خروجی نام `file.zwc' را خواهد داشت و در همان دایرکتوری file قرار میگیرد. پوسته هنگام بارگذاری خودکار تابع، فایل کامپایلشده را به جای فایل عادی تابع بارگذاری خواهد کرد؛ برای توضیحات مربوط به نحوه جستجوی توابع بارگذاری خودکار، بخش `Autoloading Functions' در zshmisc(1) را ببینید. پسوند .zwc مخفف «zsh word code» است.
اگر حداقل یک آرگومان name وجود داشته باشد، تمام فایلهای نامبردهشده در فایل خروجی file که به عنوان اولین آرگومان مشخص شده کامپایل میشوند. اگر file به .zwc ختم نشود، این پسوند بهطور خودکار اضافه میشود. فایلهای حاوی چندین تابع کامپایلشده فایلهای «digest» نامیده میشوند و به عنوان عناصر آرایه ویژه FPATH/fpath در نظر گرفته شدهاند.
شکل دوم، با گزینههای -c یا -a، تعاریف کامپایلشده تمام توابع نامبردهشده را در file مینویسد. برای -c، نامها باید توابعی باشند که در حال حاضر در پوسته تعریف شدهاند، نه آنهایی که برای بارگذاری خودکار نشانهگذاری شدهاند. توابع تعریفنشده که برای بارگذاری خودکار نشانهگذاری شدهاند را میتوان با استفاده از گزینه -a نوشت؛ در این حالت fpath جستجو میشود و در صورت یافت شدن، محتوای فایلهای تعریف آن توابع در file کامپایل میشود. اگر هر دو گزینه -c و -a مشخص شوند، میتوان نام هر دو نوع توابع تعریفشده و توابع نشانهگذاریشده برای بارگذاری خودکار را داد. در هر دو حالت، توابع موجود در فایلهای نوشتهشده با گزینه -c یا -a طوری بارگذاری خودکار میشوند که گویی گزینه KSH_AUTOLOAD غیرفعال بوده است.
دلیل مدیریت توابع بارگذاریشده و توابعی که هنوز بارگذاری نشدهاند با گزینههای متفاوت این است که برخی از فایلهای تعریف برای بارگذاری خودکار، چندین تابع را تعریف میکنند، از جمله تابعی با همان نام فایل، و در پایان، آن تابع را فراخوانی میکنند. در چنین مواردی خروجی `zcompile -c' شامل توابع اضافی تعریفشده در فایل نمیشود و هر کد مقداردهی اولیه دیگر در فایل از دست میرود. استفاده از `zcompile -a' تمام این اطلاعات اضافی را ثبت میکند.
اگر گزینه -m با -c یا -a ترکیب شود، nameها به عنوان الگو استفاده میشوند و تمام توابعی که نامشان با یکی از این الگوها مطابقت دارد نوشته خواهند شد. اگر هیچ nameای داده نشود، تعاریف تمام توابعی که در حال حاضر تعریف شدهاند یا به عنوان بارگذاری خودکار نشانهگذاری شدهاند، نوشته خواهد شد.
توجه داشته باشید که از شکل دوم نمیتوان برای کامپایل توابعی استفاده کرد که بازهدایتها را به عنوان بخشی از تعریف به جای داخل بدنه تابع دارند؛ برای مثال
fn1() { { ... } >~/logfile }
میتواند کامپایل شود، اما
fn1() { ... } >~/logfile
نمیتواند.
امکان
استفاده از
اولین شکل
zcompile برای
کامپایل
توابع قابل
بارگذاری
خودکار (autoloadable)
که به جای
صرفاً
بدنهٔ تابع
شامل تعریف
کامل تابع
هستند،
وجود دارد.
شکل سوم، همراه با گزینهٔ -t، یک فایل کامپایلشدهٔ موجود را بررسی میکند. بدون آرگومانهای بیشتر، نام فایلهای اصلی که در آن کامپایل شدهاند فهرست میشود. اولین سطر خروجی، نسخهٔ پوستهای که فایل را کامپایل کرده و نحوهٔ استفاده از فایل را نشان میدهد (یعنی از طریق خواندن مستقیم آن یا نگاشت آن در حافظه). در صورت وجود آرگومان، هیچ خروجیای چاپ نمیشود و اگر تعاریف برای تمام nameها در فایل کامپایلشده پیدا شود، وضعیت بازگشتی برابر با صفر و در صورتی که تعریف دستکم یک name پیدا نشود، غیر صفر تنظیم میشود.
سایر گزینهها:
- -U
- هنگام کامپایل فایلهای name، نامهای مستعار (aliasها) بسط داده نمیشوند.
- -R
- هنگامی که فایل کامپایلشده خوانده میشود، محتوای آن به جای نگاشت در حافظه (memory-mapped، گزینهٔ -M را ببینید)، در حافظهٔ پوسته کپی میشود. این کار در سیستمهایی که از نگاشت حافظه پشتیبانی نمیکنند به طور خودکار رخ میدهد.
هنگام کامپایل اسکریپتها به جای توابع autoloadable، اغلب استفاده از این گزینه مطلوب است؛ در غیر این صورت کل فایل، از جمله کدهای مربوط به تعریف توابعی که پیشتر تعریف شدهاند، نگاشتشده باقی میماند و در نتیجه حافظه تلف میشود.
- -M
- فایل کامپایلشده هنگام خوانده شدن در حافظهٔ پوسته نگاشت میشود. این کار به گونهای انجام میگیرد که چندین نمونه از پوسته که روی یک میزبان یکسان اجرا میشوند، این فایل نگاشتشده را به اشتراک بگذارند. اگر نه -R و نه -M مشخص نشده باشند، دستور توکار zcompile بر اساس اندازهٔ فایل کامپایلشده تصمیم میگیرد چه کاری انجام دهد.
- -k
- -z
- این
گزینهها
زمانی
استفاده
میشوند که
فایل
کامپایلشده
حاوی
توابعی
باشد که
باید به
صورت
خودکار
بارگذاری
(autoload) شوند. اگر
-z داده
شود، تابع
به گونهای
بارگذاری
خودکار
میشود که
گویی
گزینهٔ KSH_AUTOLOAD
تنظیم
نشده است،
حتی اگر در
زمان
خواندن
فایل
کامپایلشده
تنظیم شده
باشد، در
حالی که اگر
-k داده
شود، تابع
به گونهای
بارگذاری
میشود که
گویی KSH_AUTOLOAD
تنظیم شده
است. این
گزینهها
همچنین بر
هرگونه
گزینهٔ -k
یا -z
تعیینشده
برای دستور
توکار autoload
اولویت
دارند. اگر
هیچیک از
این
گزینهها
داده نشود،
تابع بر
اساس وضعیت
گزینهٔ KSH_AUTOLOAD
در زمان
خواندن
فایل
کامپایلشده
بارگذاری
خواهد شد.
این گزینهها همچنین میتوانند هر چند بار که لازم است میان nameهای فهرستشده ظاهر شوند تا شیوهٔ بارگذاری تمام توابع بعدی را تا گزینهٔ -k یا -z بعدی مشخص نمایند.
فایل ایجادشده همیشه شامل دو نسخه از قالب کامپایلشده است: یکی برای ماشینهای big-endian و دیگری برای ماشینهای small-endian. نتیجهٔ این امر این است که فایل کامپایلشده مستقل از ماشین است و در صورت خوانده شدن یا نگاشت شدن، تنها نیمی از فایل عملاً مورد استفاده قرار میگیرد (و نگاشت میشود).
- zformat
- بخش `The zsh/zutil Module' را در zshmodules(1) ببینید.
- zftp
- بخش `The zsh/zftp Module' را در zshmodules(1) ببینید.
- zle
- بخش `Zle Builtins' را در zshzle(1) ببینید.
- zmodload [ -dL ] [ -s ] [ ... ]
- zmodload -F [ -alLme -P param ] module [ [+-]feature ... ]
- zmodload -e [ -A ] [ ... ]
- zmodload [ -a [ -bcpf [ -I ] ] ] [ -iL ] ...
- zmodload -u [ -abcdpf [ -I ] ] [ -iL ] ...
- zmodload -A [ -L ] [ modalias[=module] ... ]
- zmodload -R modalias ...
- عملیات مربوط به ماژولهای قابل بارگذاری zsh را انجام میدهد. بارگذاری ماژولها در حین اجرای پوسته (`بارگذاری پویا') در تمام سیستمعاملها یا تمام نصبها در یک سیستمعامل خاص در دسترس نیست، هرچند خود دستور zmodload همواره در دسترس است و میتواند برای دستکاری ماژولهای تعبیهشده در نسخههایی از فایل اجرایی پوسته که فاقد بارگذاری پویا هستند استفاده شود.
بدون آرگومان، نام تمام ماژولهای دودویی که در حال حاضر بارگذاری شدهاند چاپ میشود. گزینهٔ -L باعث میشود این فهرست در قالب مجموعهای از دستورهای zmodload درآید. شکلهای دارای آرگومان عبارتند از:
- zmodload [ -is ] name ...
- zmodload -u [ -i ] name ...
- در سادهترین حالت، zmodload یک ماژول دودویی را بارگذاری میکند. ماژول باید در فایلی با نامی متشکل از name مشخصشده به همراه یک پسوند استاندارد، معمولاً `.so' (در HPUX به صورت `.sl') باشد. اگر ماژولی که باید بارگذاری شود از قبل بارگذاری شده باشد، ماژول تکراری نادیده گرفته میشود. اگر zmodload ناسازگاریای مانند نام ماژول نامعتبر یا فهرست وابستگی چرخشی را تشخیص دهد، بلوک کد فعلی متوقف میشود. در صورت در دسترس بودن، ماژول در صورت نیاز بارگذاری میشود، در حالی که در صورت در دسترس نبودن، وضعیت غیر صفر در سکوت بازگردانده میشود. گزینهٔ -i برای سازگاری پذیرفته شده است اما هیچ اثری ندارد.
ماژول تعیینشده در name به همان روشی که برای دستورها جستجو میشود مورد جستجو قرار میگیرد، با این تفاوت که به جای $path از $module_path استفاده میشود. با این حال، جستجوی مسیر حتی زمانی که نام ماژول شامل یک `/' باشد (که معمولاً همینطور است) انجام میپذیرد. هیچ راهی برای جلوگیری از جستجوی مسیر وجود ندارد.
اگر ماژول از قابلیتها پشتیبانی کند (به زیر مراجعه کنید)، zmodload هنگام بارگذاری ماژول تلاش میکند همهٔ قابلیتها را فعال کند. اگر ماژول با موفقیت بارگذاری شود اما همهٔ قابلیتها فعال نشوند، zmodload وضعیت ۲ را بازمیگرداند.
اگر گزینهٔ -s مشخص شود، در صورتی که ماژول در دسترس نباشد خطایی چاپ نمیشود (اگرچه سایر خطاها که نشاندهندهٔ اشکال در ماژول هستند چاپ میشوند). وضعیت بازگشتی نشان میدهد که آیا ماژول بارگذاری شده است یا خیر. این گزینه زمانی مناسب است که فراخواننده، ماژول را اختیاری در نظر بگیرد.
با -u، دستور zmodload ماژولها را تخلیه (unload) میکند. باید همان nameای داده شود که هنگام بارگذاری ماژول مشخص شده بود، اما نیازی نیست که ماژول در سیستمفایل موجود باشد. گزینهٔ -i در صورتی که ماژول از قبل تخلیه شده باشد (یا هرگز بارگذاری نشده باشد) از نمایش خطا جلوگیری میکند.
هر ماژول دارای یک تابع boot و یک تابع cleanup است. اگر تابع boot آن ناموفق باشد، ماژول بارگذاری نخواهد شد. به همین ترتیب، یک ماژول تنها در صورتی میتواند تخلیه شود که تابع cleanup آن با موفقیت اجرا شود.
- zmodload -F [ -almLe -P param ] module [ [+-]feature ... ]
- دستور zmodload -F امکان کنترل گزینشیتری را بر قابلیتهای ارائهشده توسط ماژولها فراهم میآورد. بدون گزینههای دیگر به جز -F، ماژول نامبردهشده در module در صورتی که از قبل بارگذاری نشده باشد، بارگذاری میشود و فهرست featureها به وضعیت خواستهشده تنظیم میگردد. اگر هیچ featureی مشخص نشده باشد، ماژول در صورت عدم بارگذاری قبلی، بارگذاری میشود، اما وضعیت قابلیتها بدون تغییر باقی میماند. هر قابلیت میتواند با + برای روشن کردن آن یا با - برای خاموش کردن آن پیشوندگذاری شود؛ در صورت عدم حضور هر دو نویسه، + فرض میگردد. هر قابلیتی که صریحاً ذکر نشده باشد در وضعیت کنونی خود رها میشود؛ اگر ماژول قبلاً بارگذاری نشده باشد، این به معنای غیرفعال ماندن چنین قابلیتهایی خواهد بود. وضعیت بازگشتی در صورت تنظیم موفق تمام قابلیتها صفر، در صورت عدم موفقیت در بارگذاری ماژول ۱، و در صورتی که برخی قابلیتها تنظیم نشوند (به عنوان مثال، یک پارامتر نتواند اضافه شود زیرا پارامتر متفاوتی با همان نام وجود دارد) اما ماژول بارگذاری شده باشد، ۲ است.
قابلیتهای استاندارد شامل دستورهای توکار (builtins)، شرطها (conditions)، پارامترها و توابع ریاضی هستند؛ این موارد به ترتیب با پیشوندهای `b:'، `c:' (`C:' برای شرط میانوند یا infix)، `p:' و `f:' مشخص میشوند و پس از آنها نامی میآید که قابلیت متناظر در پوسته خواهد داشت. برای نمونه، `b:strftime' نشاندهندهٔ یک دستور توکار به نام strftime و `p:EPOCHSECONDS' نشاندهندهٔ یک پارامتر به نام EPOCHSECONDS است. ماژول ممکن است قابلیتهای دیگری (قابلیتهای `abstract') مخصوص به خود را طبق آنچه در مستنداتش آمده ارائه دهد؛ این قابلیتها هیچ پیشوندی ندارند.
با -l یا -L، قابلیتهای ارائهشده توسط ماژول فهرست میشوند. تنها با -l، فهرستی از قابلیتها به همراه وضعیت آنها در هر سطر یک قابلیت نمایش داده میشود. تنها با -L، یک دستور zmodload -F نمایش داده میشود که موجب روشن شدن قابلیتهای فعال ماژول میگردد. با -lL، یک دستور zmodload -F نمایش داده میشود که باعث تنظیم تمام قابلیتها بر روی وضعیت کنونیشان خواهد شد. اگر یکی از این ترکیبها به همراه گزینهٔ -P param داده شود، پارامتر param روی آرایهای از قابلیتها تنظیم میشود؛ یا قابلیتها به همراه وضعیتشان یا (در صورتی که تنها -L داده شده باشد) قابلیتهای فعالشده..PP با گزینهٔ -L نام ماژول میتواند حذف شود؛ در این صورت فهرستی از تمام ویژگیهای فعالشده برای همهٔ ماژولهایی که ویژگی ارائه میدهند، در قالب دستورهای zmodload -F چاپ میشود. اگر -l نیز داده شود، وضعیت هر دو ویژگیهای فعال و غیرفعال در آن قالب خروجی داده میشود.
مجموعهای از ویژگیها ممکن است به همراه -l یا -L و یک نام ماژول ارائه شود؛ در این صورت تنها وضعیت آن ویژگیها در نظر گرفته میشود. هر ویژگی میتواند با + یا - آغاز شود، اما این نویسه هیچ اثری ندارد. اگر هیچ مجموعهای از ویژگیها ارائه نشود، تمام ویژگیها در نظر گرفته میشوند.
با -e، دستور ابتدا بررسی میکند که آیا ماژول بارگذاری شده است یا خیر؛ اگر نشده باشد، وضعیت ۱ بازگردانده میشود. اگر ماژول بارگذاری شده باشد، فهرست ویژگیهای دادهشده بهعنوان آرگومان بررسی میشود. هر ویژگیِ ارائهشده بدون پیشوند، صرفاً آزمایش میشود تا مشخص گردد آیا ماژول آن را ارائه میدهد یا خیر؛ هر ویژگی با پیشوند + یا - بررسی میشود تا مشخص گردد آیا ارائه شده و در وضعیت دادهشده قرار دارد یا خیر. اگر آزمایشها بر روی تمام ویژگیهای درون فهرست موفقیتآمیز باشد، وضعیت ۰ بازگردانده میشود، در غیر این صورت وضعیت ۱.
با -m، هر مدخل در فهرست ویژگیهای ارائهشده بهعنوان یک الگو در نظر گرفته میشود تا با فهرست ویژگیهای ارائهشده توسط ماژول مطابقت داده شود. یک + یا - اولیه باید بهطور صریح مشخص شود. این گزینه نباید با گزینهٔ -a ترکیب شود چرا که بارگذاریهای خودکار باید بهصورت صریح تعیین شوند.
با -a، فهرست مشخصشده از ویژگیها برای بارگذاری خودکار از ماژول معین علامتگذاری میشود، ماژولی که ممکن است هنوز بارگذاری نشده باشد. یک + اختیاری میتواند پیش از نام ویژگی بیاید. اگر ویژگی دارای پیشوند - باشد، هر بارگذاری خودکارِ موجود حذف میشود. گزینههای -l و -L میتوانند برای فهرست کردن بارگذاریهای خودکار استفاده شوند. بارگذاری خودکار مختص تکتک ویژگیهاست؛ هنگامی که ماژول بارگذاری میشود، تنها ویژگی درخواستشده فعال میگردد. درخواستهای بارگذاری خودکار در صورتی که ماژول متعاقباً تخلیه شود باقی میمانند، تا زمانی که یک `zmodload -Fa module -feature' صریح صادر شود. درخواست بارگذاری خودکار برای ویژگیای از ماژولی که پیشتر بارگذاری شده خطا محسوب نمیشود.
هنگامی که ماژول بارگذاری میشود، هر بارگذاری خودکار با ویژگیهایی که واقعاً توسط ماژول ارائه شدهاند تطبیق داده میشود؛ اگر ویژگی ارائه نشده باشد، درخواست بارگذاری خودکار حذف میگردد. یک پیام هشدار خروجی داده میشود؛ اگر ماژول برای ارائهٔ ویژگی متفاوتی بارگذاری شود، و آن بارگذاری خودکار موفق باشد، هیچ اثری بر وضعیت دستور جاری نخواهد داشت. اگر در زمان اجرای zmodload -Fa ماژول از پیش بارگذاری شده باشد، یک پیام خطا چاپ شده و وضعیت ۱ بازگردانده میشود.
دستور zmodload -Fa میتواند با گزینههای -l، -L، -e و -P برای فهرست کردن و آزمایش وجود ویژگیهای قابل بارگذاری خودکار به کار رود. در این حالت، اگر -L مشخص شده باشد، -l نادیده گرفته میشود. دستور zmodload -FaL بدون نام ماژول، بارگذاریهای خودکار همهٔ ماژولها را فهرست میکند.
توجه داشته باشید که تنها ویژگیهای استاندارد شرحدادهشده در بالا میتوانند بهصورت خودکار بارگذاری شوند؛ سایر ویژگیها مستلزم آن هستند که ماژول پیش از فعالسازی بارگذاری شود.
- zmodload -d [ -L ] [ name ]
- zmodload -d name dep ...
- zmodload -ud name [ dep ... ]
- گزینهٔ -d میتواند برای مشخص کردن وابستگیهای ماژول استفاده شود. ماژولهای نامبرده در آرگومان دوم و آرگومانهای بعدی، پیش از ماژول نامبرده در آرگومان نخست بارگذاری خواهند شد.
با -d و یک آرگومان، تمام وابستگیهای آن ماژول فهرست میشوند. با -d و بدون آرگومان، تمام وابستگیهای ماژولها فهرست میشوند. این فهرستبندی بهطور پیشفرض در قالبی شبیه به Makefile است. گزینهٔ -L این قالب را به فهرستی از دستورهای zmodload -d تغییر میدهد.
اگر هر دو گزینهٔ -d و -u استفاده شوند، وابستگیها حذف میشوند. اگر تنها یک آرگومان داده شود، تمام وابستگیهای آن ماژول حذف میشوند.
- zmodload -ab [ -L ]
- zmodload -ab [ -i ] name [ builtin ... ]
- zmodload -ub [ -i ] builtin ...
- گزینهٔ -ab دستورهای توکارِ دارای بارگذاری خودکار را تعریف میکند. این گزینه builtinهای مشخصشده را تعریف مینماید. هنگامی که هر یک از این توکارها فراخوانی شوند، ماژول مشخصشده در آرگومان نخست بارگذاری شده و تمام ویژگیهای آن فعال میگردد (برای کنترل گزینشی ویژگیها از `zmodload -F -a' همانطور که در بالا شرح داده شد استفاده کنید). اگر تنها name داده شود، یک دستور توکار با نامی یکسان با ماژول تعریف میشود. گزینهٔ -i در صورتی که دستور توکار از قبل تعریف شده یا دارای بارگذاری خودکار باشد، خطا را نادیده میگیرد، اما نه در صورتی که دستور توکار دیگری با همان نام از پیش تعریف شده باشد.
با -ab و بدون آرگومان، تمام توکارهای دارای بارگذاری خودکار فهرست میشوند، و نام ماژول (در صورت تفاوت) در پرانتز پس از نام توکار نمایش داده میشود. گزینهٔ -L این قالب را به فهرستی از دستورهای zmodload -a تغییر میدهد.
اگر -b همراه با گزینهٔ -u استفاده شود، دستورهای توکاری را که قبلاً با -ab تعریف شدهاند حذف میکند. این امر تنها در صورتی ممکن است که دستور توکار هنوز بارگذاری نشده باشد. در صورتی که دستور توکار از قبل حذف شده باشد (یا هرگز وجود نداشته باشد)، -i از نمایش خطا جلوگیری میکند.
درخواستهای بارگذاری خودکار در صورتی که ماژول متعاقباً تخلیه شود باقی میمانند تا زمانی که یک `zmodload -ub builtin' صریح صادر شود.
- zmodload -ac [ -IL ]
- zmodload -ac [ -iI ] name [ cond ... ]
- zmodload -uc [ -iI ] cond ...
- گزینهٔ -ac برای تعریف کدهای شرطی با بارگذاری خودکار استفاده میشود. رشتههای cond نام شرطهای تعریفشده توسط ماژول را مشخص میکنند. گزینهٔ اختیاری -I برای تعریف نامهای شرط میانوندی استفاده میشود. بدون این گزینه، نامهای شرط پیشوندی تعریف میگردند.
در صورت مشخص نشدن نامهای شرط، تمام نامهای تعریفشده فهرست میشوند (در صورت تعیین گزینهٔ -L، بهصورت مجموعهای از دستورهای zmodload).
گزینهٔ -uc تعاریف شرطهای با بارگذاری خودکار را حذف میکند.
- zmodload -ap [ -L ]
- zmodload -ap [ -i ] name [ parameter ... ]
- zmodload -up [ -i ] parameter ...
- گزینهٔ -p شبیه به گزینههای -b و -c است، اما در عوض باعث میشود zmodload بر روی پارامترهای دارای بارگذاری خودکار عمل کند.
- zmodload -af [ -L ]
- zmodload -af [ -i ] name [ function ... ]
- zmodload -uf [ -i ] function ...
- گزینهٔ -f مانند گزینههای -b، -p و -c است، اما در عوض باعث میشود zmodload بر روی توابع ریاضیِ دارای بارگذاری خودکار عمل کند.
- zmodload -a [ -L ]
- zmodload -a [ -i ] name [ builtin ... ]
- zmodload -ua [ -i ] builtin ...
- معادل با -ab و -ub.
- zmodload -e [ -A ] [ string ... ]
- گزینهٔ -e بدون آرگومان تمام ماژولهای بارگذاریشده را فهرست میکند؛ اگر گزینهٔ -A نیز داده شده باشد، نامهای مستعار ماژولِ متناظر با ماژولهای بارگذاریشده نیز نمایش داده میشوند. اگر آرگومانهایی ارائه شوند، چیزی چاپ نمیشود؛ وضعیت بازگشتی در صورتی که تمام stringهای دادهشده بهعنوان آرگومان نام ماژولهای بارگذاریشده باشند صفر، و در صورتی که دستکم یک string نام ماژولی بارگذاریشده نباشد، یک تنظیم میشود. این میتواند برای بررسی در دسترس بودن مواردی که توسط ماژولها پیادهسازی شدهاند به کار رود. در این حالت، هر نام مستعاری بهطور خودکار رفع (resolve) میشود و پرچم -A استفاده نخواهد شد.
- zmodload -A [ -L ] [ modalias[=module] ... ]
- به ازای هر آرگومان، اگر هر دو modalias و module داده شده باشند، modalias را بهعنوان یک نام مستعار برای ماژول module تعریف میکند. اگر ماژول modalias بعداً درخواست شود، چه از طریق فراخوانی zmodload یا بهصورت ضمنی، پوسته تلاش خواهد کرد تا module را به جای آن بارگذاری کند. اگر module داده نشود، تعریف modalias را نمایش میدهد. اگر هیچ آرگومانی داده نشود، تمام نامهای مستعار تعریفشده برای ماژولها فهرست میشوند. هنگام فهرستبندی، اگر پرچم -L نیز داده شده باشد، تعریف را بهصورت یک دستور zmodload برای بازسازی نام مستعار فهرست میکند. وجود نامهای مستعار برای پودمانها کاملاً مستقل از این است که نام حلشده در عمل به عنوان یک پودمان بارگذاری شده باشد یا خیر: تا زمانی که نام مستعار وجود دارد، بارگذاری و تخلیه پودمان تحت هر نام مستعاری دقیقاً همان اثر استفاده از نام حلشده را دارد، و تأثیری بر پیوند میان نام مستعار و نام حلشده نمیگذارد؛ این پیوند را میتوان با zmodload -R یا با تعریف مجدد نام مستعار حذف کرد. زنجیرههایی از نامهای مستعار (یعنی جایی که نخستین نام حلشده خود یک نام مستعار است) تا زمانی که دَوَرانی (حلقوی) نباشند معتبر هستند. از آنجا که نامهای مستعار قالبی مشابه نامهای پودمان دارند، میتوانند شامل جداکنندههای مسیر نیز باشند: در این حالت، هیچ نیازی به وجود خارجی بخشی از مسیر مشخصشده نیست، زیرا نام مستعار ابتدا حل خواهد شد. برای نمونه، «any/old/alias» همواره یک نام مستعار معتبر است.
وابستگیهایی که به پودمانهای دارای نام مستعار اضافه میشوند، در واقع به پودمان حلشده افزوده خواهند شد؛ این وابستگیها حتی در صورت حذف نام مستعار باقی میمانند. ساخت نام مستعاری که نام آن مشابه یکی از پودمانهای استاندارد پوسته باشد و به پودمان دیگری حل شود، مجاز است. با این حال، اگر پودمانی دارای وابستگی باشد، امکان استفاده از نام آن پودمان به عنوان یک نام مستعار وجود نخواهد داشت، چرا که پودمان مذکور پیشاپیش به خودی خود به عنوان یک پودمان قابل بارگذاری نشانهگذاری شده است.
جدا از موارد بالا، از نامهای مستعار میتوان در دستور zmodload در هر جایی که نام پودمان مورد نیاز است استفاده کرد. با این حال، نامهای مستعار در فهرست پودمانهای بارگذاریشده حاصل از اجرای سادهٔ «zmodload» نشان داده نخواهند شد.
- zmodload -R modalias ...
- به ازای هر آرگومان modalias که پیشتر از طریق zmodload -A به عنوان نام مستعار پودمان تعریف شده است، آن نام مستعار را حذف میکند. اگر موردی تعریف نشده باشد، خطایی رخ داده و از باقی خط صرفنظر میشود.
توجه داشته باشید که zsh هیچ تفاوتی بین پودمانهایی که به صورت درونبرنامهای به پوسته پیوند خوردهاند (link شدهاند) و پودمانهایی که به صورت پویا بارگذاری میشوند قائل نمیشود. در هر دو حالت، باید از این دستور توکار برای در دسترس قرار دادن توکارها و موارد دیگرِ تعریفشده توسط پودمانها استفاده کرد (مگر اینکه پودمان بر اساس این تعاریف به صورت خودکار بارگذاری/autoload شود). این موضوع حتی برای سیستمهایی که از بارگذاری پویای پودمانها پشتیبانی نمیکنند نیز صادق است.
- zparseopts
- بخش «The zsh/zutil Module» را در zshmodules(1) ببینید.
- zprof
- بخش «The zsh/zprof Module» را در zshmodules(1) ببینید.
- zpty
- بخش «The zsh/zpty Module» را در zshmodules(1) ببینید.
- zregexparse
- بخش «The zsh/zutil Module» را در zshmodules(1) ببینید.
- zsocket
- بخش «The zsh/net/socket Module» را در zshmodules(1) ببینید.
- zstyle
- بخش «The zsh/zutil Module» را در zshmodules(1) ببینید.
- ztcp
- بخش «The zsh/net/tcp Module» را در zshmodules(1) ببینید.
| July 12, 2026 | zsh 5.9.2 |