.\" .\" Copyright (c) 1980, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS `AS IS' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LESS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" - Indent in multiples of 4, usually 8. .\" .\" - Use \` for literal back-quote (`). .\" .\" - Use \e for literal backslash (\). .\" .\" - Use \-, not -. .\" .\" - Include the tilde when naming dot files. .Pa ~/.login , not .Pa .login .\" .\" - Refer to external commands in man page format, e.g., .Xr csh 1 .\" However, tcsh is .Nm , because this is the tcsh man page (and .\" see the next note anyway). .\" .\" - Write `the shell', not `tcsh', unless distinguishing between tcsh and csh. .\" .\" - Write `shell variable'/`environment variable' instead of `variable' .\" and `builtin command'/`editor command' instead of `builtin' or `command' .\" unless the distinction is absolutely clear from context. .\" .\" - Use the simple present tense. `The shell uses', not `The shell will use'. .\" .\" - IMPORTANT: Cross-reference as much as possible. Commands, variables, .\" etc. in the reference section should be mentioned in the appropriate .\" descriptive section, or at least in the reference-section description .\" of another command (or whatever) which is mentioned in a description .\" section. Remember to note OS-specific things in "OS variant support", .\" new features in NEW FEATURES and referenced external commands in SEE .\" ALSO. .\" .Dd July 9, 2025 .Dt TCSH 1 .Os Astron 6.24.16 . .Sh "نام (NAME)" .Nm tcsh .Nd پوسته C با قابلیت تکمیل نام پرونده و ویرایش خط فرمان . .Sh "خلاصه دستور (SYNOPSIS)" .Nm .Op Fl bcdefFimnqstvVxX .Op Fl D Ns Ar name Ns Op Ns = Ns Ar value .Op Ar arg \&... .Nm .Fl l . .Sh "توضیحات (DESCRIPTION)" .Nm یک نسخه بهبودیافته اما کاملاً سازگار از پوسته C یونیکس برکلی، .Xr csh 1 است. این برنامه یک مفسر زبان فرمان است که هم به عنوان یک پوسته تعاملی ورود به سیستم و هم به عنوان پردازشگر دستورات اسکریپت شل قابل استفاده است. این پوسته شامل یک ویرایشگر خط فرمان (نگاه کنید به .Sx The command-line editor (+) ) ، تکمیل کلمه قابل برنامه‌ریزی (نگاه کنید به .Sx Completion and listing (+) ) ، تصحیح غلط املایی (نگاه کنید به .Sx Spelling correction (+) ) ، سازوکار تاریخچه (نگاه کنید به .Sx History substitution ) ، کنترل کارها (نگاه کنید به .Sx Jobs ) و ساختار نحوی شبیه به زبان C است. بخش .Sx NEW FEATURES (+) بهبودهای عمده .Nm نسبت به .Xr csh 1 را شرح می‌دهد. در سرتاسر این راهنما، قابلیت‌هایی از .Nm که در اکثر پیاده‌سازی‌های .Xr csh 1 (به‌طور ویژه، 4.4BSD .Xr csh 1 ) یافت نمی‌شوند با .Sq (+) نشانه‌گذاری شده‌اند، و قابلیت‌هایی که در .Xr csh 1 وجود دارند اما معمولاً مستند نشده‌اند با .Sq (u) مشخص گردیده‌اند. . .Ss پردازش فهرست آرگومان‌ها اگر نخستین آرگومان (آرگومان ۰) به پوسته .Ql \- باشد، در این صورت یک پوستهٔ ورود (login shell) است. همچنین می‌توان یک پوستهٔ ورود را با فراخوانی پوسته با فلگ .Fl l به‌عنوان تنها آرگومان مشخص کرد. .Pp بقیهٔ آرگومان‌های فلگ به شرح زیر تفسیر می‌شوند: .Bl -tag -width 6n . .It Fl b باعث یک .Dq توقف (break) اجباری در پردازش گزینه‌ها می‌شود، و موجب می‌گردد هرگونه آرگومان بعدی پوسته به‌عنوان آرگومان‌های غیرگزینه‌ای در نظر گرفته شوند. آرگومان‌های باقیمانده به‌عنوان گزینه‌های پوسته تفسیر نخواهند شد. این امر ممکن است برای ارسال گزینه‌ها به یک اسکریپت پوسته بدون سردرگمی یا فریب احتمالی استفاده شود. پوسته بدون این گزینه یک اسکریپت با بیت set-user ID را اجرا نخواهد کرد. . .It Fl c دستورها از آرگومان بعدی خوانده می‌شوند (که باید وجود داشته باشد، و باید یک آرگومان منفرد باشد)، جهت ارجاع در متغیر پوسته‌ای .Ic command ذخیره شده، و اجرا می‌گردند. هر آرگومان باقیمانده در متغیر پوسته‌ای .Ic argv قرار می‌گیرد. . .It Fl d پوسته پشتهٔ دایرکتوری را از .Pa ~/.cshdirs بارگذاری می‌کند، همان‌طور که تحت .Sx راه‌اندازی و خاموش‌سازی شرح داده شده است، صرف‌نظر از اینکه یک پوستهٔ ورود باشد یا خیر. (+) . .It Fl D Ns Ar name Ns Op Ns = Ns Ar value متغیر محیطی .Ar name را به .Ar value تنظیم می‌کند. (فقط در Domain/OS) (+) . .It Fl e اگر هر دستور فراخوانی‌شده به‌طور غیرعادی خاتمه یابد یا وضعیت خروج غیرصفر تولید کند، پوسته خارج می‌شود. . .It Fl f پوسته هیچ‌یک از فایل‌های منبع یا راه‌اندازی را بارگذاری نمی‌کند، هیچ هَشینگی برای دستورها انجام نمی‌دهد و بنابراین سریع‌تر آغاز به کار می‌کند. . .It Fl F پوسته به جای .Xr vfork 2 از .Xr fork 2 برای ایجاد پردازه‌ها استفاده می‌کند. (+) . .It Fl i پوسته تعاملی است و اعلان ورودی سطح بالای خود را نمایش می‌دهد، حتی اگر به نظر برسد که یک ترمینال نیست. پوسته‌ها بدون این گزینه نیز در صورتی که ورودی‌ها و خروجی‌هایشان ترمینال باشند، تعاملی خواهند بود. . .It Fl l پوسته یک پوسته ورود (login shell) است. تنها در صورتی قابل اعمال است که .Fl l تنها پرچم مشخص‌شده باشد. . .It Fl m پوسته فایل .Pa ~/.tcshrc را حتی اگر به کاربر موثر تعلق نداشته باشد بارگذاری می‌کند. نسخه‌های جدیدتر .Xr su 1 می‌توانند .Fl m را به پوسته منتقل کنند. (+) . .It Fl n پوسته دستورها را تجزیه (parse) می‌کند اما آن‌ها را اجرا نمی‌کند. این ویژگی به اشکال‌زدایی اسکریپت‌های پوسته کمک می‌کند. . .It Fl q پوسته SIGQUIT را می‌پذیرد (ببینید .Sx "مدیریت سیگنال‌ها (Signal handling)" ) و هنگامی که تحت یک دیباگر استفاده می‌شود رفتاری مناسب دارد. کنترل کار (Job control) غیرفعال است. (u) . .It Fl s ورودی دستور از ورودی استاندارد گرفته می‌شود. . .It Fl t پوسته یک خط ورودی واحد را خوانده و اجرا می‌کند. می‌توان از یک .Ql \e برای گریز (escape) از خط جدید در انتهای این خط و ادامه‌دادن آن در خطی دیگر استفاده کرد. . .It Fl v متغیر پوسته .Ic verbose را تنظیم می‌کند، به طوری که ورودی دستور پس از جایگزینی تاریخچه پژواک (echo) می‌شود. . .It Fl x متغیر پوسته .Ic echo را تنظیم می‌کند، به طوری که دستورها بلافاصله پیش از اجرا پژواک می‌شوند. . .It Fl V متغیر پوسته .Ic verbose را حتی پیش از اجرای .Pa ~/.tcshrc تنظیم می‌کند. . .It Fl X نسبت به .Fl x همان نقشی را دارد که .Fl V نسبت به .Fl v دارد. . .It Fl \-help یک پیام راهنما را در خروجی استاندارد چاپ کرده و خارج می‌شود. (+) . .It Fl \-version نسخه/بستر/گزینه‌های کامپایل را در خروجی استاندارد چاپ کرده و خارج می‌شود. این اطلاعات همچنین در متغیر پوسته .Ic version گنجانده شده است. (+) .El .Pp پس از پردازش آرگومان‌های فلگ، اگر آرگومان‌هایی باقی بمانند اما هیچ‌یک از گزینه‌های .Fl c ، .Fl i ، .Fl s یا .Fl t داده نشده باشند، اولین آرگومان به عنوان نام فایلی از دستورها، یا یک .Dq اسکریپت برای اجرا در نظر گرفته می‌شود. پوسته این فایل را باز کرده و نام آن را برای جایگزینی احتمالی بعدی توسط .Ql $0 ذخیره می‌کند. از آنجا که بسیاری از سیستم‌ها از پوسته‌های استاندارد نسخه ۶ یا نسخه ۷ استفاده می‌کنند که اسکریپت‌های پوسته آن‌ها با این پوسته سازگار نیست، پوسته از چنین پوسته .Dq استانداردی برای اجرای اسکریپتی استفاده می‌کند که نویسه اول آن .Ql # نیست، یعنی با یک کامنت آغاز نمی‌شود. .Pp آرگومان‌های باقی‌مانده در متغیر شل .Ic argv قرار می‌گیرند. . .Ss "راه‌اندازی و خاتمه (Startup and shutdown)" یک شل ورود (login shell) با اجرای دستورها از فایل‌های سیستمی .Pa /etc/csh.cshrc و .Pa /etc/csh.login آغاز به کار می‌کند. سپس دستورهای موجود در فایل‌های دایرکتوری .Pa home کاربر را اجرا می‌نماید: ابتدا .Pa ~/.tcshrc (+) یا در صورت پیدا نشدن .Pa ~/.tcshrc فایل .Pa ~/.cshrc ، سپس محتویات .Pa ~/.history (یا مقدار متغیر شل .Ic histfile ) در حافظه بارگذاری می‌شود، پس از آن .Pa ~/.login و در نهایت .Pa ~/.cshdirs (یا مقدار متغیر شل .Ic dirsfile ) (+). شل ممکن است در صورت کامپایل شدن به این صورت، .Pa /etc/csh.login را پیش از .Pa /etc/csh.cshrc (به‌جای پس از آن)، و .Pa ~/.login را پیش از .Pa ~/.tcshrc یا .Pa ~/.cshrc و .Pa ~/.history (به‌جای پس از آن‌ها) بخواند؛ متغیر شل .Ic version را ببینید. (+) .Pp شل‌های غیرورود (non-login) در هنگام راه‌اندازی تنها .Pa /etc/csh.cshrc و .Pa ~/.tcshrc یا .Pa ~/.cshrc را می‌خوانند. .Pp برای نمونه‌هایی از فایل‌های راه‌اندازی، لطفاً به این نشانی مراجعه کنید: .Lk http://tcshrc.sourceforge.net .Pp دستورهایی مانند .Xr stty 1 و .Xr tset 1 که تنها نیاز است در هر بار ورود یک‌بار اجرا شوند، معمولاً در فایل .Pa ~/.login کاربر قرار می‌گیرند. کاربرانی که نیاز دارند از یک مجموعه فایل مشترک هم برای .Xr csh 1 و هم برای .Nm استفاده کنند، می‌توانند تنها یک فایل .Pa ~/.cshrc داشته باشند که پیش از استفاده از دستورهای ویژه‌ی .Nm Ns ، وجود متغیر پوستهٔ .Ic tcsh را بررسی می‌کند؛ یا اینکه می‌توانند هر دو فایل .Pa ~/.cshrc و .Pa ~/.tcshrc را داشته باشند، به طوری که دومی فایل .Pa ~/.cshrc را .Ic source کند (دستور توکار را ببینید). در ادامه‌ی این راهنما، منظور از .Pa ~/.tcshrc همان .Pa ~/.tcshrc است یا در صورتی که .Pa ~/.tcshrc یافت نشود، .Pa ~/.cshrc . .Pp در حالت عادی، پوسته شروع به خواندن دستورها از ترمینال می‌کند و اعلان زیر را نمایش می‌دهد: .Dl Li >\ \& .Pp (پردازش آرگومان‌ها و استفاده از پوسته برای پردازش فایل‌های حاوی اسکریپت‌های دستوری، بعداً شرح داده شده‌اند.) پوسته به طور پیوسته یک خط از ورودی دستور را می‌خواند، آن را به کلمات تفکیک می‌کند، در فهرست تاریخچه دستورها قرار می‌دهد، آن را تجزیه کرده و هر دستور موجود در خط را اجرا می‌کند. .Pp می‌توان با وارد کردن .Ic ^D در یک خط خالی، دستور .Ic logout یا .Ic login یا از طریق سازوکار خروج خودکار پوسته (متغیر پوسته‌ای .Ic autologout را ببینید) از سیستم خارج شد. هنگامی که یک پوستهٔ ورود به سیستم خاتمه می‌یابد، متغیر پوسته‌ای .Ic logout را برحسب مورد به .Ql normal یا .Ql automatic تنظیم می‌کند، سپس دستورات موجود در فایل‌های .Pa /etc/csh.logout و .Pa ~/.logout را اجرا می‌نماید. اگر پوسته بدین صورت کامپایل شده باشد، ممکن است هنگام خروج سیگنال DTR را قطع کند؛ متغیر پوسته‌ای .Ic version را ببینید. .Pp نام‌های فایل‌های ورود و خروج سیستم جهت سازگاری با گونه‌های مختلف .Xr csh 1 از سیستمی به سیستم دیگر متفاوت است؛ بخش .Sx "فایل‌ها (FILES)" را ببینید. . .Ss "ویرایش (Editing)" ما ابتدا .Sx "ویرایشگر خط فرمان (+) (The command-line editor (+))" را شرح می‌دهیم. بخش‌های .Sx "تکمیل و فهرست‌بندی (+) (Completion and listing (+))" و .Sx "تصحیح املا (+) (Spelling correction (+))" دو مجموعه از قابلیت‌ها را شرح می‌دهند که به عنوان دستورات ویرایشگر پیاده‌سازی شده‌اند اما شایستهٔ بررسی جداگانه هستند. در نهایت، بخش .Sx "دستورات ویرایشگر (+) (Editor commands (+))" دستورات ویرایشگر مختص این پوسته و کلیدهای مقیدشدهٔ پیش‌فرض آن‌ها را فهرست و توصیف می‌کند. . .Ss "ویرایشگر خط فرمان (+) (The command-line editor (+))" ورودی خط فرمان را می‌توان با استفاده از توالی کلیدهایی بسیار شبیه به کلیدهای استفاده‌شده در .Xr emacs 1 یا .Xr vi 1 ویرایش کرد. ویرایشگر تنها زمانی فعال است که متغیر پوسته‌ای .Ic edit تنظیم شده باشد، که به طور پیش‌فرض در پوسته‌های تعاملی فعال است. دستور توکار .Ic bindkey می‌تواند کلیدهای مقیدشده به دستورات ویرایشگر را نمایش داده و تغییر دهد (بخش .Sx "دستورات ویرایشگر (+) (Editor commands (+))" را ببینید). کلیدهای مقیدشده به سبک .Xr emacs 1 Ns به طور پیش‌فرض استفاده می‌شوند (مگر اینکه پوسته به شکل دیگری کامپایل شده باشد؛ متغیر پوسته‌ای .Ic version را ببینید)، اما .Ic bindkey می‌تواند کلیدهای مقیدشده را به صورت یکجا به کلیدهای مقیدشده به سبک .Xr vi 1 Ns تغییر دهد. .Pp پوسته همیشه کلیدهای جهت‌نما را (به همان صورتی که در متغیر محیطی .Ev TERMCAP تعریف شده‌اند) به دستورات ویرایشگر مقید می‌کند: .Pp .Bl -tag -width ".Ic right" -offset indent -compact .It Sy کلید .Sy دستور ویرایشگر .Pp .It Ic down .Ic down-history .It Ic up .Ic up-history .It Ic left .Ic backward-char .It Ic right .Ic forward-char .El .Pp مگر اینکه انجام این کار یک مقیدسازی تک‌نویسه‌ای دیگر را تغییر دهد. می‌توان توالی‌های گریز کلیدهای جهت‌نما را با استفاده از .Ic settc بر روی یک رشته خالی تنظیم کرد تا از این مقیدسازی‌ها جلوگیری شود. توالی‌های ANSI/VT100 برای کلیدهای جهت‌نما همیشه مقید هستند. .Pp سایر مقیدسازی‌های کلیدها، در بیشتر موارد همان چیزی هستند که کاربران .Xr emacs 1 و .Xr vi 1 انتظار دارند و می‌توان آن‌ها را به سادگی با .Ic bindkey نمایش داد، بنابراین نیازی به فهرست کردن آن‌ها در اینجا نیست. به همین ترتیب، .Ic bindkey می‌تواند دستورات ویرایشگر را به همراه توضیح کوتاهی درباره هر یک فهرست کند. رفتار برخی از مقیدسازی‌های کلید بسته به اینکه آیا مقیدسازی‌های سبک .Xr emacs 1 یا .Xr vi 1 Ns در حال استفاده باشند متفاوت است؛ برای اطلاعات بیشتر .Ic vimode را ببینید. .Pp توجه داشته باشید که مفهوم .Dq کلمه در دستورات ویرایشگر با مفهوم آن در پوسته یکسان نیست. ویرایشگر کلمات را با هر نویسه غیرالفبایی-عددی که در متغیر پوسته .Ic wordchars وجود ندارد جدا می‌کند، در حالی که پوسته تنها فاصله‌های خالی و برخی از نویسه‌های دارای معانی خاص برای خود را می‌شناسد که در .Sx Lexical structure فهرست شده‌اند. . .Ss "تکمیل و فهرست‌بندی (+)" پوسته اغلب قادر است کلمات را در صورت ارائه یک مخفف منحصربه‌فرد، کامل کند. به عنوان مثال، با نوشتن بخشی از یک کلمه .Dl ls /usr/lost و فشردن کلید tab برای اجرای دستور ویرایشگر .Ic complete-word . پوسته نام فایل .Pa /usr/lost را به .Pa /usr/lost+found/ کامل کرده و کلمه ناقص را در بافر ورودی با کلمه کامل جایگزین می‌کند. (به .Sq Pa / انتهایی دقت کنید؛ عملیات تکمیل یک .Ql / به انتهای دایرکتوری‌های تکمیل‌شده و یک فاصله به انتهای سایر کلمات تکمیل‌شده اضافه می‌کند تا سرعت تایپ افزایش یابد و نشانه‌ای بصری از تکمیل موفقیت‌آمیز فراهم شود. برای جلوگیری از این رفتار می‌توان متغیر پوسته .Ic addsuffix را لغو تنظیم کرد.) اگر هیچ تطابقی پیدا نشود (شاید .Pa /usr/lost+found وجود نداشته باشد)، زنگ ترمینال به صدا درمی‌آید. اگر کلمه از قبل کامل باشد (شاید یک .Pa /usr/lost روی سیستم شما وجود دارد، یا شاید خیلی جلوتر فکر می‌کردید و کل آن را تایپ کرده‌اید) اگر قبلاً وجود نداشته باشد، یک .Ql / یا فاصله به انتهای آن افزوده می‌شود. .Pp تکمیل در هر کجای خط کار می‌کند، نه فقط در انتهای آن؛ متن تکمیل‌شده بقیه خط را به سمت راست هل می‌دهد. تکمیل در وسط یک کلمه اغلب منجر به نویسه‌های باقی‌مانده در سمت راست مکان‌نما می‌شود که باید حذف شوند. .Pp دستورها و متغیرها را نیز می‌توان تا حد زیادی به همین روش تکمیل کرد. برای مثال، تایپ کردن .Dl em[tab] کلمه .Ql em را به .Ql emacs کامل می‌کند اگر .Ql emacs تنها دستور موجود در سیستم شما باشد که با .Ql em شروع می‌شود. تکمیل می‌تواند یک دستور را در هر دایرکتوری موجود در .Ic path یا در صورت ارائه یک نام مسیر کامل پیدا کند. .Pp تایپ کردن .Dl echo $ar[tab] عبارت .Ql $ar را به .Ql $argv تکمیل می‌کند، اگر متغیر دیگری با .Ql ar شروع نشده باشد. .Pp پوسته بافر ورودی را تجزیه می‌کند تا مشخص سازد کلمه‌ای که می‌خواهید تکمیل شود باید به عنوان نام فایل، دستور یا متغیر تکمیل گردد. کلمه اول در بافر و کلمه اول پس از .Ql \&; ، .Ql | ، .Ql |& ، .Ql && ، یا .Ql || یک دستور در نظر گرفته می‌شود. کلمه‌ای که با .Ql $ شروع شود، یک متغیر در نظر گرفته می‌شود. هر چیز دیگری به عنوان نام فایل تلقی می‌شود. یک خط خالی به عنوان نام فایل .Dq تکمیل می‌گردد. .Pp شما می‌توانید تکمیل‌های ممکن یک کلمه را در هر زمان با تایپ کردن .Ic ^D برای اجرای دستور ویرایشگر .Ic delete-char-or-list-or-eof فهرست کنید. پوسته تکمیل‌های ممکن را با استفاده از دستور توکار .Ic ls\-F فهرست می‌کند و اعلان پوسته و خط فرمان ناتمام را دوباره چاپ می‌نماید؛ برای مثال: .Bd -literal -offset indent > ls /usr/l[^D] lbin/ lib/ local/ lost+found/ > ls /usr/l .Ed .Pp اگر متغیر پوسته .Ic autolist تنظیم شده باشد، هر زمان که فرایند تکمیل با شکست مواجه شود، پوسته گزینه‌های باقی‌مانده (در صورت وجود) را فهرست می‌کند: .Bd -literal -offset indent > set autolist > nm /usr/lib/libt[tab] libtermcap.a@ libtermlib.a@ > nm /usr/lib/libterm .Ed .Pp اگر متغیر شل .Ic autolist بر روی .Ql ambiguous تنظیم شده باشد، گزینه‌ها تنها زمانی فهرست می‌شوند که تکمیل ناموفق باشد و هیچ نویسهٔ جدیدی به کلمه در حال تکمیل اضافه نکند. .Pp نام فایلی که قرار است تکمیل شود می‌تواند حاوی متغیرها، دایرکتوری‌های خانگی خود یا دیگران که با .Ql ~ خلاصه شده‌اند (ببینید .Sx جایگزینی نام فایل (Filename substitution) ) و مدخل‌های پشتهٔ دایرکتوری که با .Ql = خلاصه شده‌اند (ببینید .Sx "جایگزینی پشتهٔ دایرکتوری (+) (Directory stack substitution (+))" ) باشد. برای نمونه، .Bd -literal -offset indent > ls ~k[^D] kahn kas kellogg > ls ~ke[tab] > ls ~kellogg/ .Ed .Pp یا .Bd -literal -offset indent > set local = /usr/local > ls $lo[tab] > ls $local/[^D] bin/ etc/ lib/ man/ src/ > ls $local/ .Ed .Pp توجه داشته باشید که متغیرها را می‌توان به‌طور صریح با دستور ویرایشگر .Ic expand-variables نیز بسط داد. .Pp دستور .Ic delete-char-or-list-or-eof تنها در انتهای خط فهرست می‌کند؛ در وسط خط، نویسهٔ زیر نشانگر را حذف می‌کند و روی یک خط خالی، کاربر را خارج می‌کند یا در صورت تنظیم بودن متغیر .Ic ignoreeof ، هیچ کاری انجام نمی‌دهد. .Ic M-^D ، که به دستور ویرایشگر .Ic list-choices متصل است، احتمالات تکمیل را در هر کجای خط فهرست می‌کند، و در صورت تمایل می‌توان .Ic list-choices (یا هر یک از دستورهای ویرایشگر مرتبط که حذف می‌کنند یا نمی‌کنند، فهرست می‌کنند و/یا خارج می‌شوند، که ذیل .Ic delete-char-or-list-or-eof فهرست شده‌اند) را با استفاده از دستور توکار .Ic bindkey به .Ic ^D متصل کرد. .Pp دستورهای ویرایشگر .Ic complete-word-fwd و .Ic complete-word-back (که به‌طور پیش‌فرض به هیچ کلیدی مقید نشده‌اند) می‌توانند برای مرور بالا و پایین در فهرست کامل‌سازی‌های ممکن به کار روند و کلمهٔ فعلی را با کلمهٔ بعدی یا قبلی در فهرست جایگزین کنند. .Pp متغیر شل .Ic fignore را می‌توان روی فهرستی از پسوندها تنظیم کرد تا در زمان کامل‌سازی نادیده گرفته شوند. مثال زیر را در نظر بگیرید: .Bd -literal -offset indent > ls Makefile condiments.h~ main.o side.c README main.c meal side.o condiments.h main.c~ > set fignore = (.o \e~) > emacs ma[^D] main.c main.c~ main.o > emacs ma[tab] > emacs main.c .Ed .Pp موارد .Ql main.c~ و .Ql main.o در فرآیند کامل‌سازی (اما نه در فهرست‌کردن) نادیده گرفته می‌شوند، زیرا پسوند آن‌ها در .Ic fignore آمده است. توجه داشته باشید که یک .Ql \e در جلوی .Ql ~ لازم بود تا از بسط پیدا کردن آن به .Ic home همان‌طور که در .Sx جایگزینی نام فایل (Filename substitution) شرح داده شده، جلوگیری شود. اگر تنها یک گزینه برای کامل‌سازی وجود داشته باشد، .Ic fignore نادیده گرفته می‌شود. .Pp اگر متغیر شل .Ic complete روی .Ql enhance تنظیم شده باشد، کامل‌سازی ۱) حروف کوچک و بزرگ را نادیده می‌گیرد و ۲) نقطه، خط تیره و خط زیرین .Po .Ql \&. ، .Ql \- و .Ql _ .Pc را به عنوان جداکننده کلمات در نظر گرفته و خط تیره و خط زیرین را معادل هم می‌داند. اگر فایل‌های زیر را داشته باشید .Bd -literal -offset indent comp.lang.c comp.lang.perl comp.std.c++ comp.lang.c++ comp.std.c .Ed .Pp و تایپ می‌کردید .Dl mail \-f c.l.c[tab] به این صورت تکمیل می‌شد: .Dl mail \-f comp.lang.c و تایپ کردن .Dl mail \-f c.l.c[^D] موارد .Ql comp.lang.c و .Ql comp.lang.c++ را فهرست می‌کرد. .Pp تایپ کردن .Dl mail \-f c..c++[^D] موارد .Ql comp.lang.c++ و .Ql comp.std.c++ را فهرست می‌کرد. .Pp تایپ کردن .Dl rm a\-\-file[^D] در دایرکتوری زیر .Bd -literal -offset indent A_silly_file a-hyphenated-file another_silly_file .Ed .Pp هر سه فایل را فهرست می‌کرد، چرا که بزرگی و کوچکی حروف نادیده گرفته می‌شود و خط‌های پیوند (hyphens) و خط‌های زیرین (underscores) معادل یکدیگرند. با این حال، نقطه‌ها با خط‌های پیوند یا خط‌های زیرین معادل نیستند. .Pp اگر متغیر پوستهٔ .Ic complete بر روی .Ql Enhance تنظیم شده باشد، تکمیل خودکار بزرگی و کوچکی حروف و تفاوت میان جداکننده‌های کلمهٔ خط پیوند و خط زیرین را تنها زمانی نادیده می‌گیرد که کاربر یک نویسهٔ کوچک یا یک خط پیوند تایپ کند. وارد کردن یک نویسهٔ بزرگ یا خط زیرین با نویسهٔ کوچک یا جداکنندهٔ کلمهٔ خط پیوند متناظر آن تطابق نخواهد یافت. .Pp تایپ کردن .Dl rm a\-\-file[^D] در دایرکتوری مثال قبل همچنان هر سه فایل را فهرست می‌کند، اما تایپ کردن .Dl rm A\-\-file تنها با .Ql A_silly_file تطابق می‌یابد و تایپ کردن .Dl rm a__file[^D] فقط با .Ql A_silly_file و .Ql another_silly_file تطابق پیدا می‌کند، زیرا کاربر به‌طور صریح از یک نویسهٔ بزرگ یا نویسهٔ خط زیرین استفاده کرده است. .Pp تکمیل و فهرست‌بندی تحت تأثیر چندین متغیر شل دیگر قرار دارند: .Ic recexact می‌تواند طوری تنظیم شود که روی کوتاه‌ترین تطابق یکتای ممکن عمل تکمیل را انجام دهد، حتی اگر تایپ بیشتر بتواند به یک تطابق طولانی‌تر منجر شود: .Bd -literal -offset indent > ls fodder foo food foonly > set recexact > rm fo[tab] .Ed .Pp تنها بوق می‌زند، زیرا .Ql fo می‌تواند به .Ql fod یا .Ql foo گسترش یابد، اما اگر یک .Ql o دیگر تایپ کنیم، .Bd -literal -offset indent > rm foo[tab] > rm foo .Ed .Pp تکمیل روی .Ql foo انجام می‌شود، حتی با اینکه .Ql food و .Ql foonly نیز مطابقت دارند. .Ic autoexpand می‌تواند طوری تنظیم شود که دستور ویرایشگر .Ic expand-history را پیش از هر تلاش برای تکمیل اجرا کند، .Ic autocorrect می‌تواند طوری تنظیم شود که کلمه‌ای را که قرار است تکمیل شود تصحیح املایی کند (ببینید .Sx "تصحیح املایی (+)" ) پیش از هر تلاش برای تکمیل، و .Ic correct می‌تواند طوری تنظیم شود که پس از فشردن کلید return دستورات را به‌طور خودکار تکمیل کند. .Ic matchbeep می‌تواند طوری تنظیم شود که تکمیل در شرایط گوناگون بوق بزند یا نزند، و .Ic nobeep می‌تواند طوری تنظیم شود که اصلاً هیچ بوقی نزند. .Ic nostat می‌تواند به فهرستی از دایرکتوری‌ها و/یا الگوهایی که با دایرکتوری‌ها مطابقت دارند تنظیم شود تا سازوکار تکمیل از اجرای .Xr stat 2 روی آن دایرکتوری‌ها جلوگیری کند. .Ic listmax و .Ic listmaxrows می‌توانند طوری تنظیم شوند که تعداد آیتم‌ها و سطرها را (به‌ترتیب) که بدون پرسش قبلی فهرست می‌شوند، محدود کنند. .Ic recognize_only_executables می‌تواند طوری تنظیم شود که شل هنگام فهرست کردن دستورات، تنها فایل‌های اجرایی را فهرست کند، اما این کار بسیار کُند است. .Pp در نهایت، دستور توکار .Ic complete می‌تواند برای مشخص کردن نحوهٔ تکمیل کلماتی غیر از نام فایل‌ها، دستورها و متغیرها برای پوسته استفاده شود. تکمیل و فهرست‌بندی روی الگوهای تطبیق فایل (glob-patterns) کار نمی‌کنند (به .Sx "جایگزینی نام فایل (Filename substitution)" مراجعه کنید)، اما دستورهای ویرایشگر .Ic list-glob و .Ic expand-glob عملکردهای مشابهی را برای الگوهای تطبیق فایل ارائه می‌دهند. . .Ss "تصحیح املایی (+)" پوسته گاهی می‌تواند املای نام فایل‌ها، دستورها و نام متغیرها را علاوه بر تکمیل و فهرست‌بندی آن‌ها، تصحیح کند. .Pp کلمات تکی را می‌توان با دستور ویرایشگر .Ic spell-word (که معمولاً به .Ic M-s و .Ic M-S متصل است) و کل بافر ورودی را با .Ic spell-line (که معمولاً به .Ic M-$ متصل است) تصحیح املایی کرد. متغیر پوستهٔ .Ic correct می‌تواند بر روی .Ql cmd برای تصحیح نام دستور یا .Ql all برای تصحیح کل خط در هر بار زدن کلید بازگشت (return) تنظیم شود، و .Ic autocorrect را می‌توان طوری تنظیم کرد که کلمهٔ مورد نظر پیش از هر بار تلاش برای تکمیل، تصحیح شود. .Pp هنگامی که تصحیح املایی با هر یک از این روش‌ها فراخوانی شود و پوسته تشخیص دهد بخشی از خط فرمان به اشتباه تایپ شده است، خط تصحیح‌شده را اعلان می‌کند: .Bd -literal -offset indent > set correct = cmd > lz /usr/bin CORRECT>ls /usr/bin (y|n|e|a)? .Ed .Pp می‌توان با وارد کردن .Ql y یا کلید فاصله خط تصحیح‌شده را اجرا کرد، با .Ql e دستور تصحیح‌نشده را در بافر ورودی باقی گذاشت، با .Ql a دستور را لغو کرد؛ گویی کلید .Ic ^C زده شده است، و با فشردن هر کلید دیگری خط اصلی را بدون تغییر اجرا نمود. .Pp تصحیح املا کامل‌سازی‌های تعریف‌شده توسط کاربر را تشخیص می‌دهد (دستور توکار .Ic complete را ببینید). اگر کلمه‌ای ورودی در موقعیتی که برای آن یک کامل‌سازی تعریف شده است، شبیه به کلمه‌ای در فهرست کامل‌سازی باشد، تصحیح املا آن را به عنوان غلط املایی ثبت کرده و کلمهٔ دوم را به عنوان تصحیح پیشنهاد می‌دهد. با این حال، اگر کلمهٔ ورودی با هیچ‌یک از کامل‌سازی‌های ممکن برای آن موقعیت همخوانی نداشته باشد، تصحیح املا غلط املایی ثبت نمی‌کند. .Pp مانند کامل‌سازی، تصحیح املا در هر نقطه از خط کار می‌کند، بقیهٔ خط را به سمت راست هل می‌دهد و احتمالاً نویسه‌های اضافی را در سمت راست نشانگر جا می‌گذارد. . .Ss دستورات ویرایشگر (+) .Ic bindkey اتصالات کلیدها (key bindings) و .Ic bindkey \-l فهرست دستورات ویرایشگر را به همراه شرح مختصری از آن‌ها نمایش می‌دهد. در اینجا تنها دستورات جدید یا به‌ویژه جالبِ ویرایشگر توضیح داده شده‌اند. برای توضیحات مربوط به اتصالات کلیدهای هر ویرایشگر، .Xr emacs 1 و .Xr vi 1 را ببینید. .Pp نویسه یا نویسه‌هایی که هر دستور به‌طور پیش‌فرض به آن‌ها متصل است، در پرانتز آورده شده است. .Ic ^ Ns Ar character به معنی یک نویسه کنترلی و .Ic M- Ns Ar character یک نویسه متا است که در پایانه‌های فاقد کلید متا، به‌صورت .Ic escape- Ns Ar character (یا .Ic ^ Ns \&[ Ns Ar character ) نوشته می‌شود. بزرگی و کوچکی حروف اهمیت دارد، اما دستوراتی که به‌طور پیش‌فرض به حروف متصل هستند، جهت سهولت به هر دو صورت حروف کوچک و بزرگ متصل شده‌اند. .Pp دستورات ویرایشگر پشتیبانی‌شده عبارتند از: .Bl -tag -width 6n . .It Ic backward-char ( ^B , left ) یک نویسه به عقب حرکت می‌کند. رفتار مکان‌نما توسط .Ic vimode تغییر می‌یابد. . .It Ic backward-delete-word ( M-^H , M-^\&? ) از ابتدای کلمه فعلی تا مکان‌نما را برش می‌دهد (cut) - در بافر برش ذخیره می‌شود. رفتار مرز کلمه توسط .Ic vimode تغییر می‌یابد. . .It Ic backward-word ( M-b , M-B ) به ابتدای کلمه فعلی حرکت می‌کند. رفتار مرز کلمه و مکان‌نما توسط .Ic vimode تغییر می‌یابد. . .It Ic beginning-of-line ( ^A , home ) به ابتدای خط حرکت می‌کند. رفتار مکان‌نما توسط .Ic vimode تغییر می‌یابد. . .It Ic capitalize-word ( M-c , M-C ) حروف را از مکان‌نما تا انتهای کلمه فعلی بزرگ (capitalize) می‌کند. رفتار مرز کلمه توسط .Ic vimode تغییر می‌یابد. . .It Ic complete-word ( tab ) کلمه‌ای را به نحوی که در .Sx تکمیل و فهرست‌بندی (+) شرح داده شده کامل می‌کند. . .It Ic complete-word-back No (کلید مقید نشده) مشابه .Ic complete-word-fwd ، اما از انتهای فهرست به سمت بالا حرکت می‌کند. . .It Ic complete-word-fwd No (کلید مقید نشده) کلمه فعلی را با اولین کلمه در فهرست تکمیل‌های ممکن جایگزین می‌کند. می‌تواند برای پایین رفتن در طول فهرست تکرار شود. در انتهای فهرست، بوق می‌زند و به کلمه ناقص بازمی‌گردد. . .It Ic complete-word-raw ( ^X-tab ) مشابه .Ic complete-word ، اما تکمیل‌های تعریف‌شده توسط کاربر را نادیده می‌گیرد. . .It Ic copy-prev-word ( M-^_ ) کلمه قبلی در خط فعلی را در بافر ورودی کپی می‌کند. همچنین ببینید: .Ic insert-last-word . رفتار مرز کلمه توسط .Ic vimode تغییر می‌کند. . .It Ic dabbrev-expand ( M-/ ) کلمه فعلی را به نزدیک‌ترین کلمه ماقبل آن که کلمه فعلی زیررشته آغازین آن است گسترش می‌دهد، و در صورت لزوم (یک بار) در سراسر فهرست تاریخچه می‌چرخد. تکرار .Ic dabbrev-expand بدون هیچ‌گونه تایپ میانی، به کلمه قبلی بعدی و غیره تغییر می‌کند، و موارد مطابقت یکسان را نادیده می‌گیرد؛ بسیار شبیه به کاری که .Ic history-search-backward انجام می‌دهد. . .It Ic delete-char No (کلید مقید نشده) نویسه زیر مکان‌نما را حذف می‌کند. همچنین ببینید: .Ic delete-char-or-list-or-eof . رفتار مکان‌نما توسط .Ic vimode تغییر می‌کند. . .It Ic delete-char-or-eof No (کلید مقید نشده) اگر نویسه‌ای زیر مکان‌نما وجود داشته باشد .Ic delete-char را اجرا می‌کند یا در صورت خالی بودن خط .Ic end-of-file را انجام می‌دهد. همچنین ببینید: .Ic delete-char-or-list-or-eof . رفتار مکان‌نما توسط .Ic vimode تغییر می‌کند. . .It Ic delete-char-or-list No (متصل‌نشده) اگر نویسه‌ای زیر مکان‌نما باشد .Ic delete-char را انجام می‌دهد یا در انتهای خط .Ic list-choices را اجرا می‌کند. همچنین ببینید: .Ic delete-char-or-list-or-eof . . .It Ic delete-char-or-list-or-eof ( ^D ) اگر نویسه‌ای زیر مکان‌نما باشد .Ic delete-char را انجام می‌دهد، در انتهای خط .Ic list-choices و در یک خط خالی .Ic end-of-file را اجرا می‌کند. همچنین این سه دستور را که هر کدام تنها یک عمل را انجام می‌دهند، و .Ic delete-char-or-eof ، .Ic delete-char-or-list و .Ic list-or-eof را که هر یک دو عمل مختلف از این سه عمل را انجام می‌دهند، ببینید. . .It Ic delete-word ( M-d , M-D ) از مکان‌نما تا انتهای کلمهٔ فعلی را برش می‌دهد (Cut) - و در بافر برش ذخیره می‌کند. رفتار مرز کلمه توسط .Ic vimode تغییر می‌یابد. . .It Ic down-history ( down , ^N ) مانند .Ic up-history ، اما به سمت پایین حرکت می‌کند و در خط ورودی اولیه متوقف می‌شود. . .It Ic downcase-word ( M-l , M-L ) نویسه‌ها را از مکان‌نما تا انتهای کلمهٔ فعلی به حروف کوچک تبدیل می‌کند. رفتار مرز کلمه توسط .Ic vimode تغییر می‌یابد. . .It Ic end-of-file No (متصل‌نشده) یک پایان فایل (EOF) را مخابره می‌کند که باعث خروج شل می‌شود، مگر اینکه متغیر شل .Ic ignoreeof برای جلوگیری از این کار تنظیم شده باشد. همچنین ببینید: .Ic delete-char-or-list-or-eof . . .It Ic end-of-line ( ^E , end ) مکان‌نما را به انتهای خط منتقل می‌کند. رفتار مکان‌نما توسط .Ic vimode تغییر می‌یابد. . .It Ic expand-history ( M-space ) جایگزینی‌های تاریخچه را در کلمهٔ جاری بسط می‌دهد. ببینید .Sx History substitution . همچنین ببینید .Ic magic-space , .Ic toggle-literal-history , و متغیر شل .Ic autoexpand . . .It Ic expand-glob ( ^X-* ) الگوی glob در سمت چپ مکان‌نما را بسط می‌دهد. ببینید .Sx Filename substitution . . .It Ic expand-line No (کلید مقید نشده) مانند .Ic expand-history , اما جایگزینی‌های تاریخچه را در هر کلمه از بافر ورودی بسط می‌دهد. . .It Ic expand-variables ( ^X-$ ) متغیر موجود در سمت چپ مکان‌نما را بسط می‌دهد. ببینید .Sx Variable substitution . . .It Ic forward-char ( ^F , right ) یک نویسه به جلو حرکت می‌کند. رفتار مکان‌نما توسط .Ic vimode تغییر می‌یابد. . .It Ic forward-word ( M-f , M-F ) به انتهای کلمهٔ جاری به سمت جلو حرکت می‌کند. مرز کلمه و رفتار مکان‌نما توسط .Ic vimode تغییر می‌یابد. . .It Ic history-search-backward ( M-p , M-P ) در فهرست تاریخچه به سمت عقب به دنبال دستوری می‌گردد که با محتوای جاری بافر ورودی تا مکان‌نما آغاز شود و آن را در بافر ورودی کپی می‌کند. رشتهٔ جستجو می‌تواند یک الگوی glob باشد (ببینید .Sx Filename substitution ) شامل .Ql * , .Ql \&? , .Ql [] , یا .Ql {} . دستورهای .Ic up-history و .Ic down-history از نقطهٔ مناسب در فهرست تاریخچه ادامه خواهند یافت. فقط در حالت Emacs. همچنین ببینید .Ic history-search-forward و .Ic i-search-back . . .It Ic history-search-forward ( M-n , M-N ) مانند .Ic history-search-backward ، اما به سمت جلو جستجو می‌کند. . .It Ic i-search-back No (مقید نشده) مانند .Ic history-search-backward به سمت عقب جستجو می‌کند، اولین تطابق را با قرار دادن مکان‌نما در انتهای الگو، در بافر ورودی کپی می‌کند و اعلانی به شکل .Dl bck:\ \& به همراه اولین تطابق نمایش می‌دهد. نویسه‌های بیشتری می‌توان تایپ کرد تا جستجو گسترش یابد، .Ic i-search-back را می‌توان دوباره تایپ کرد تا جستجو با همان الگو ادامه یابد و در صورت نیاز از انتهای تاریخچه دور بزند، .Ic ( i-search-back برای کارکردن این ویژگی باید به یک نویسهٔ منفرد مقید شده باشد) یا یکی از نویسه‌های خاص زیر را می‌توان تایپ کرد: . .Bl -tag -width ".Ic escape" -offset indent .It Sy کلید .Sy رفتار . .It Ic ^W بقیه کلمه زیر مکان‌نما را به الگوی جستجو الصاق می‌کند. . .It Ic delete Xo No (یا هر نویسهٔ مقید شده به .Ic backward-delete-char ) .Xc اثر آخرین نویسهٔ تایپ‌شده را برمی‌گرداند و در صورت مناسب بودن، یک نویسه را از الگوی جستجو حذف می‌کند. . .It Ic ^G اگر جستجوی قبلی موفقیت‌آمیز بوده باشد، کل جستجو را لغو می‌کند. در غیر این صورت، به آخرین جستجوی موفقیت‌آمیز برمی‌گردد. . .It Ic escape جستجو را پایان می‌دهد و خط فعلی را در بافر ورودی باقی می‌گذارد. . .El .Pp هر نویسه دیگری که به .Ic self-insert-command مقید نشده باشد، به جستجو خاتمه می‌دهد، خط فعلی را در بافر ورودی باقی می‌گذارد و سپس به عنوان ورودی عادی تفسیر می‌شود. به طور ویژه، بازگشت مکان‌نما (carriage return) باعث اجرای خط فعلی می‌شود. همچنین ببینید .Ic i-search-fwd و .Ic history-search-backward . رفتار مرز کلمات توسط .Ic vimode تغییر می‌یابد. . .It Ic i-search-fwd No (متصل‌نشده) مانند .Ic i-search-back ، اما به سمت جلو جستجو می‌کند. رفتار مرز کلمات توسط .Ic vimode تغییر می‌یابد. . .It Ic insert-last-word ( M-_ ) آخرین کلمه از خط ورودی قبلی .Pq Ql \&!$ را در بافر ورودی درج می‌کند. همچنین نگاه کنید به .Ic copy-prev-word . . .It Ic list-choices ( M-^D ) احتمالات تکمیل را همان‌طور که در .Sx تکمیل و فهرست‌بندی (+) توضیح داده شده، فهرست می‌کند. همچنین نگاه کنید به .Ic delete-char-or-list-or-eof و .Ic list-choices-raw . . .It Ic list-choices-raw ( ^X-^D ) مانند .Ic list-choices ، اما تکمیل‌های تعریف‌شده توسط کاربر را نادیده می‌گیرد. . .It Ic list-glob ( ^X-g , ^X-G ) تطابق‌ها با الگوی glob (نگاه کنید به .Sx جایگزینی نام فایل ) در سمت چپ نشانگر را (از طریق دستور داخلی .Ic ls\-F Ns ) فهرست می‌کند. . .It Ic list-or-eof No (متصل‌نشده) عمل .Ic list-choices را انجام می‌دهد یا در یک خط خالی .Ic end-of-file را اعمال می‌کند. همچنین نگاه کنید به .Ic delete-char-or-list-or-eof . . .It Ic magic-space No (متصل‌نشده) جایگزینی‌های تاریخچه در خط فعلی را گسترش می‌دهد، مانند .Ic expand-history ، و یک فاصله درج می‌کند. .Ic magic-space برای اتصال به کلید فاصله (space bar) طراحی شده است، اما به‌طور پیش‌فرض متصل نیست. . .It Ic normalize-command ( ^X-\&? ) کلمه فعلی را در .Ev PATH جستجو می‌کند و در صورت پیدا شدن، آن را با مسیر کامل فایل اجرایی جایگزین می‌نماید. نویسه‌های خاص نقل‌قول (کوتیشن‌گذاری) می‌شوند. نام‌های مستعار (aliases) بسط داده شده و نقل‌قول می‌شوند، اما دستورات درون نام‌های مستعار بسط نمی‌یابند. این دستور برای دستوراتی که دستورات دیگر را به عنوان آرگومان می‌پذیرند مفید است؛ مانند .Ql dbx و .Ql sh \-x . . .It Ic normalize-path ( ^X-n , ^X-N ) کلمه فعلی را همان‌طور که در بخش تنظیم .Ql expand از متغیر پوسته .Ic symlinks توضیح داده شده است، بسط می‌دهد. . .It Ic overwrite-mode No (بدون کلید انتسابی) حالت را بین درج (ورودی) و بازنویسی (overwrite) جابه‌جا می‌کند. . .It Ic run-fg-editor ( M-^Z ) خط ورودی فعلی را ذخیره کرده و به دنبال یک کار متوقف‌شده (stopped job) می‌گردد که بخش نام فایلِ اولین کلمه آن در متغیر پوسته .Ic editors یافت شود. اگر .Ic editors تنظیم نشده باشد، بخش نام فایلِ متغیر محیطی .Ev EDITOR .Ql ( ed در صورت تنظیم نبودن) و متغیر محیطی .Ev VISUAL .Ql ( vi در صورت تنظیم نبودن) استفاده خواهند شد. اگر چنین کاری یافت شود، مجدداً اجرا می‌شود، گویی دستور .Ql fg % Ns Ar job تایپ شده است. این قابلیت برای جابه‌جایی آسان بین یک ویرایشگر و پوسته به کار می‌رود. برخی افراد این دستور را به .Ic ^Z متصل می‌کنند تا بتوانند این کار را حتی ساده‌تر انجام دهند. . .It Ic run-help ( M-h , M-H ) به دنبال مستندات مربوط به دستور جاری می‌گردد، با همان برداشتی از .Dq دستور جاری که در روال‌های تکمیل خودکار استفاده می‌شود، و آن را چاپ می‌کند. هیچ راهی برای استفاده از یک صفحه‌بندی‌کننده (pager) وجود ندارد؛ .Ic run-help برای فایل‌های راهنمای کوتاه طراحی شده است. اگر نام مستعار ویژه .Ic helpcommand تعریف شده باشد، با نام دستور به عنوان تنها آرگومان اجرا می‌شود. در غیر این صورت، مستندات باید در فایلی با نام .Pa command.help ، .Pa command.1 ، .Pa command.6 ، .Pa command.8 ، یا .Pa command قرار داشته باشند، که باید در یکی از دایرکتوری‌های فهرست‌شده در متغیر محیطی .Ev HPATH باشد. اگر بیش از یک فایل راهنما وجود داشته باشد، فقط اولین فایل چاپ می‌شود. . .It Ic self-insert-command No (نویسه‌های متنی) در حالت درج (پیش‌فرض)، نویسه تایپ‌شده را پس از نویسه زیر مکان‌نما در خط ورودی وارد می‌کند. در حالت بازنویسی (overwrite)، نویسه زیر مکان‌نما را با نویسه تایپ‌شده جایگزین می‌کند. حالت ورودی معمولاً بین خطوط حفظ می‌شود، اما متغیر پوسته .Ic inputmode را می‌توان روی .Ql insert یا .Ql overwrite تنظیم کرد تا ویرایشگر در ابتدای هر خط در آن حالت قرار گیرد. همچنین ببینید: .Ic overwrite-mode . . .It Ic sequence-lead-in No (پیشوند کلید جهت‌نما ، پیشوند meta ، Ic ^X ) نشان می‌دهد که نویسه‌های بعدی بخشی از یک توالی چندکلیدی هستند. اتصال یک دستور به یک توالی چندکلیدی در واقع دو اتصال ایجاد می‌کند: نویسه اول به .Ic sequence-lead-in و کل توالی به آن دستور. تمام توالی‌هایی که با یک نویسه متصل‌شده به .Ic sequence-lead-in آغاز می‌شوند، عملاً به .Ic undefined-key متصل هستند مگر اینکه به دستور دیگری متصل شده باشند. . .It Ic spell-line ( M-$ ) تلاش می‌کند املای هر کلمه در بافر ورودی را مانند .Ic spell-word تصحیح کند، اما کلماتی را که کاراکتر اول آن‌ها یکی از .Ql \- ، .Ql \&! ، .Ql ^ یا .Ql % باشد، یا شامل .Ql \e ، .Ql * یا .Ql \&? باشند نادیده می‌گیرد تا از بروز مشکل در سوییچ‌ها، جایگزینی‌ها و موارد مشابه جلوگیری شود. بخش .Sx "تصحیح املا (+)" را ببینید. . .It Ic spell-word ( M-s , M-S ) تلاش می‌کند املای کلمه فعلی را همان‌طور که در .Sx "تصحیح املا (+)" شرح داده شده تصحیح کند. هر بخش از کلمه‌ای را که شبیه به یک مسیر فایل به نظر برسد بررسی می‌کند. . .It Ic toggle-literal-history ( M-r , M-R ) جایگزینی‌های تاریخچه در بافر ورودی را باز (expand) یا به حالت اولیه برمی‌گرداند (unexpand). همچنین .Ic expand-history و متغیر شل .Ic autoexpand را ببینید. . .It Ic undefined-key No (هر کلید مقیدنشده) بوق می‌زند. . .It Ic up-history ( up , ^P ) مورد قبلی در فهرست تاریخچه را در بافر ورودی کپی می‌کند. اگر .Ic histlit تنظیم شده باشد، از شکل لفظی (literal) ورودی استفاده می‌کند. می‌تواند برای پیمایش به سمت بالای فهرست تاریخچه تکرار شود، و در ابتدای آن متوقف می‌شود. . .It Ic upcase-word ( M-u , M-U ) نویسه‌های از مکان‌نما تا انتهای کلمه فعلی را به حروف بزرگ تبدیل می‌کند. رفتار مرز کلمه توسط .Ic vimode تغییر می‌یابد. . .It Ic vi-beginning-of-next-word No (مقید نشده) در Vi به ابتدای کلمه بعدی می‌رود. رفتار مرز کلمه و مکان‌نما توسط .Ic vimode تغییر می‌یابد. . .It Ic vi-eword No (کلید مقید نشده) حرکت در حالت Vi به انتهای کلمهٔ فعلی. رفتار مرز کلمات توسط .Ic vimode تغییر می‌کند. . .It Ic vi-search-back ( \&? ) با اعلان .Dl \&? یک رشتهٔ جستجو را درخواست می‌کند (که مانند .Ic history-search-backward می‌تواند یک الگوی glob باشد)، آن را جستجو کرده و در بافر ورودی کپی می‌کند. اگر هیچ موردی یافت نشود، زنگ هشدار به صدا درمی‌آید. فشردن کلید return به جستجو پایان داده و آخرین تطابق را در بافر ورودی باقی می‌گذارد. فشردن کلید escape به جستجو پایان داده و تطابق را اجرا می‌کند. فقط در حالت .Ic vi . . .It Ic vi-search-fwd ( / ) مانند .Ic vi-search-back ، اما رو به جلو جستجو می‌کند. . .It Ic which-command ( M-\&? ) دستور .Ic which (به توضیحات دستور توکار مراجعه کنید) را روی اولین کلمه از بافر ورودی اجرا می‌کند. . .It Ic yank-pop ( M-y ) هنگامی که بلافاصله پس از یک .Ic yank یا یک .Ic yank-pop دیگر اجرا شود، رشتهٔ جای‌گذاری‌شده را با رشتهٔ قبلی بعدی از killring جایگزین می‌کند. این کار همچنین اثر چرخش killring را دارد، به طوری که این رشته توسط دستور .Ic yank بعدی به عنوان تازه‌ترین رشتهٔ حذف‌شده در نظر گرفته خواهد شد. تکرار .Ic yank-pop حلقهٔ killring را به هر تعداد بار می‌چرخاند. .El . .Ss ساختار لغوی (Lexical structure) پوسته خطوط ورودی را در فاصله‌ها و تب‌ها به کلمات تقسیم می‌کند. نویسه‌های ویژهٔ .Ql \&& ، .Ql | ، .Ql \&; ، .Ql < ، .Ql > ، .Ql \&( ، و .Ql \&) ، و نویسه‌های دوتایی .Ql && ، .Ql || ، .Ql << ، و .Ql >> همیشه کلمات جداگانه‌ای هستند، چه با فاصله‌های خالی احاطه شده باشند و چه نباشند. .Pp هنگامی که ورودی پوسته یک ترمینال نباشد، نویسه .Ql # به عنوان آغاز یک توضیح .Pq comment در نظر گرفته می‌شود. هر .Ql # و باقی خط ورودی که در آن ظاهر شده است، پیش از تجزیه بیشتر نادیده گرفته و دور ریخته می‌شود. .Pp می‌توان با قرار دادن یک بک‌اسلش .Pq Ql \e پیش از یک نویسه خاص (از جمله فاصله یا tab) یا محصور کردن آن در نقل‌قول‌های تکی .Pq Ql \&' ، دوگانه .Pq Ql \&" یا وارونه .Pq Ql \&` ، از تفسیر معنای خاص آن جلوگیری کرد و احتمالاً آن را بخشی از یک کلمه دیگر ساخت. در حالتی که نقل‌قول دیگری وجود نداشته باشد، یک خط جدید که پیش از آن .Ql \e آمده باشد معادل یک فاصله است، اما درون نقل‌قول‌ها این توالی به یک خط جدید منجر می‌شود. .Pp علاوه بر این، می‌توان از تمام .Sx جایگزینی‌ها (Substitutions) به جز .Sx جایگزینی تاریخچه (History substitution) با محصور کردن رشته‌ها (یا بخش‌هایی از رشته‌ها) که در آن ظاهر می‌شوند در نقل‌قول‌های تکی، یا با نقل‌قول کردن نویسه(های) حیاتی (مانند .Ql $ یا .Ql \&` به ترتیب برای .Sx جایگزینی متغیر (Variable substitution) یا .Sx جایگزینی دستور (Command substitution) ) توسط .Ql \e جلوگیری کرد. .Sx ( جایگزینی نام مستعار (Alias substitution) نیز مستثنی نیست: نقل‌قول کردن هر نویسه‌ای از کلمه‌ای که برای آن یک .Ic alias تعریف شده است به هر روشی، مانع از جایگزینی آن نام مستعار می‌شود. روش معمول برای نقل‌قول کردن یک نام مستعار، قرار دادن یک بک‌اسلش پیش از آن است.) از .Sx جایگزینی تاریخچه (History substitution) توسط بک‌اسلش جلوگیری می‌شود اما با نقل‌قول‌های تکی خیر. رشته‌های محصور در نقل‌قول‌های دوگانه یا وارونه مشمول .Sx جایگزینی متغیر (Variable substitution) و .Sx جایگزینی دستور (Command substitution) می‌شوند، اما از سایر جایگزینی‌ها جلوگیری به عمل می‌آید. .Pp متن داخل گیومه‌های تکی (کوتیشن) یا دوتایی (دابل کوتیشن) به یک کلمه واحد (یا بخشی از آن) تبدیل می‌شود. نویسه‌های متا (metacharacters) در این رشته‌ها، از جمله فاصله‌ها و تب‌ها، کلمات جداگانه تشکیل نمی‌دهند. تنها در یک حالت خاص (نگاه کنید به .Sx جایگزینی دستور ) یک رشته داخل دابل کوتیشن می‌تواند بخش‌هایی از بیش از یک کلمه را تولید کند؛ رشته‌های داخل کوتیشن تکی هرگز چنین نمی‌کنند. بک‌تیک‌ها (گیومه وارونه) ویژه هستند: آنها نشان‌دهنده .Sx جایگزینی دستور هستند، که ممکن است به بیش از یک کلمه منجر شود. .Pp دنباله‌های گریز (escape sequences) به سبک C را می‌توان در رشته‌های داخل کوتیشن تکی با قرار دادن .Ql $ قبل از گیومه ابتدایی استفاده کرد. (+) برای فهرست کاملی از دنباله‌های گریز شناخته‌شده، به .Sx دنباله‌های گریز (+) مراجعه کنید. .Pp نقل‌قول کردن رشته‌های پیچیده، به‌ویژه رشته‌هایی که خود حاوی نویسه‌های نقل‌قول هستند، می‌تواند گیج‌کننده باشد. به یاد داشته باشید که نیازی نیست گیومه‌ها همان‌طور که در نوشتار انسانی به کار می‌روند استفاده شوند! شاید آسان‌تر باشد که نه کل یک رشته، بلکه فقط آن بخش‌هایی از رشته را که نیاز به نقل‌قول دارند نقل‌قول کنید و در صورت نیاز از انواع مختلف نقل‌قول برای این کار استفاده نمایید. .Pp متغیر پوسته .Ic backslash_quote می‌تواند تنظیم شود تا بک‌اسلش‌ها همیشه .Ql \e ، .Ql \&' و .Ql \&" را نقل‌قول کنند (+). این ممکن است کارهای پیچیده نقل‌قول را آسان‌تر کند، اما می‌تواند باعث خطاهای نحوی در اسکریپت‌های .Xr csh 1 شود. . .Ss دنباله‌های گریز (+) دنباله‌های گریز زیر همیشه در داخل رشته‌ای که با استفاده از .Ql $'' ساخته شده است شناخته می‌شوند، و همچنین به‌صورت اختیاری توسط دستور توکار .Ic echo به شکلی که توسط متغیر پوسته .Ic echo_style کنترل می‌شود، شناسایی می‌گردند. .Pp توالی‌های گریز پشتیبانی‌شده عبارتند از: . .Bl -tag -width ".Li \ex{ Ns Ar nnnnnnnn Ns Li }" -offset indent .It Sy گریز .Sy توضیحات . .It Li \ea زنگ (Bell). .It Li \eb پس‌بر (Backspace). .It Li \ec Ns Ar c نویسه کنترلی که با .Ql ^ Ns Ar c در .Xr stty 1 مشخص می‌شود. اگر .Ar c یک بک‌اسلش باشد، باید دو بار تکرار شود. .It Li \ee گریز (Escape). .It Li \ef برگه‌خور (Form feed). .It Li \en خط جدید (Newline). .It Li \er بازگشت به ابتدای سطر (Carriage return). .It Li \et تب افقی (Horizontal tab). .It Li \ev تب عمودی (Vertical tab). .It Li \e\e بک‌اسلش صریح. .It Li \e\&' نقل‌قول تکی صریح. .It Li \e\&" نقل‌قول دوتایی صریح. .It Li \e Ns Ar nnn نویسه متناظر با عدد هشت‌هشتی .Ar nnn . .It Li \ex Ns Ar nn نویسه متناظر با عدد شانزده‌شانزدهی .Ar nn (۱\-۲ رقم شانزده‌شانزدهی). .It Li \ex{ Ns Ar nnnnnnnn Ns Li } نویسه متناظر با عدد شانزده‌شانزدهی .Ar nnnnnnnn (۱\-۸ رقم شانزده‌شانزدهی). .It Li \eu Ns Ar nnnn نقطه کد یونیکد .Ar nnnn (۱\-۴ رقم شانزده‌شانزدهی). .It Li \eU Ns Ar nnnnnnnn نقطه کد یونیکد .Ar nnnnnnnn (۱ تا ۸ رقم در مبنای شانزده). .El .Pp پیاده‌سازی‌های .Ql \ex ، .Ql \eu و .Ql \eU در سایر پوسته‌ها ممکن است تعداد ارقام متفاوتی را بپذیرند. اغلب امن‌ترین روش این است که از صفرهای پیش‌رو برای ارائه حداکثر تعداد ارقام مورد انتظار استفاده شود. . .Ss جایگزینی‌ها اکنون تبدیلات گوناگونی را که پوسته به ترتیبی که رخ می‌دهند بر روی ورودی اعمال می‌کند، شرح می‌دهیم. همچنین ضمن کار، به ساختارهای دادهٔ دخیل و دستورها و متغیرهایی که بر آن‌ها اثر می‌گذارند اشاره می‌کنیم. به یاد داشته باشید که می‌توان با نقل‌قول‌گذاری همان‌طور که در .Sx ساختار لغوی توضیح داده شده، از جایگزینی‌ها جلوگیری کرد. . .Ss جایگزینی تاریخچه هر دستور یا .Dq رویداد که از ترمینال وارد می‌شود، در فهرست تاریخچه ذخیره می‌گردد. دستور پیشین همواره ذخیره می‌شود، و می‌توان متغیر پوسته‌ای .Ic history را روی یک عدد تنظیم کرد تا همان تعداد دستور ذخیره شود. متغیر پوسته‌ای .Ic histdup را می‌توان به‌گونه‌ای تنظیم کرد که رویدادهای تکراری یا رویدادهای تکراریِ متوالی ذخیره نشوند. .Pp دستورهای ذخیره‌شده از ۱ به ترتیب شماره‌گذاری شده و برچسب زمانی می‌خورند. معمولاً نیازی به استفاده از شماره رویدادها نیست، اما می‌توان شماره رویداد فعلی را با قرار دادن یک .Ql \&! در متغیر پوسته‌ای .Ic prompt به بخشی از اعلان پوسته تبدیل کرد. .Pp به‌طور پیش‌فرض، ورودی‌های تاریخچه با چاپ هر توکنِ تجزیه‌شده به صورت جداشده با فاصله نمایش می‌یابند؛ بنابراین عملگر تغییر مسیر .Ql >\&&\&! به‌صورت .Ql >\0\&&\0\&! نمایش داده خواهد شد. پوسته در واقع تاریخچه را به هر دو شکل بسط‌یافته و تحت‌اللفظی (بسط‌نیافته) ذخیره می‌کند. اگر متغیر پوسته‌ای .Ic histlit تنظیم شده باشد، دستورهایی که تاریخچه را نمایش داده یا ذخیره می‌کنند، از شکل تحت‌اللفظی استفاده خواهند کرد. .Pp دستور توکار .Ic history می‌تواند در هر زمان فهرست تاریخچه را چاپ کند، در یک فایل ذخیره کند، بازیابی نماید یا آن را پاک کند؛ همچنین متغیرهای پوسته‌ای .Ic savehist و .Ic histfile را می‌توان طوری تنظیم کرد که فهرست تاریخچه به‌طور خودکار هنگام خروج (logout) ذخیره و هنگام ورود (login) بازیابی شود. .Pp جایگزینی‌های تاریخچه (History substitutions) کلماتی از فهرست تاریخچه را وارد جریان ورودی می‌کنند؛ امری که تکرار دستورها، تکرار آرگومان‌های یک دستور قبلی در دستور فعلی، یا تصحیح اشتباهات املایی در دستور پیشین را با کمترین تایپ و سطح اطمینان بالا آسان می‌سازد. .Pp جایگزینی‌های تاریخچه با نویسه .Ql \&! آغاز می‌شوند. آن‌ها می‌توانند در هر نقطه‌ای از جریان ورودی شروع شوند، اما به صورت تودرتو قرار نمی‌گیرند. می‌توان پیش از .Ql \&! یک .Ql \e قرار داد تا از معنای ویژه آن جلوگیری شود؛ برای سهولت، اگر پس از .Ql \&! یک نویسه فاصله (blank)، تب (tab)، خط جدید (newline)، .Ql = یا .Ql \&( بیاید، بدون تغییر عبور داده می‌شود. .Pp جایگزینی‌های تاریخچه همچنین زمانی رخ می‌دهند که یک خط ورودی با .Ql ^ آغاز شود؛ نگاه کنید به .Sx History substitution abbreviation . .Pp نویسه‌هایی که برای نشان دادن جایگزینی تاریخچه استفاده می‌شوند .Po .Ql \&! و .Ql ^ .Pc را می‌توان با تنظیم متغیر پوسته .Ic histchars تغییر داد. هر خط ورودی که حاوی یک جایگزینی تاریخچه باشد، پیش از اجرا چاپ می‌شود. .Pp یک جایگزینی تاریخچه می‌تواند دارای یک .Dq مشخص‌کننده رویداد (event specification) (نگاه کنید به .Sx History event specification ) باشد که رویدادی را مشخص می‌کند که کلمات باید از آن گرفته شوند، یک .Dq تعیین‌کننده کلمه (word designator) (نگاه کنید به .Sx History word designators ) که کلمات خاصی را از رویداد انتخاب‌شده برمی‌گزیند، و/یا یک .Dq تغییردهنده کلمه (word modifier) (نگاه کنید به .Sx History word modifiers ) که کلمات انتخاب‌شده را دستکاری می‌کند. . .Ss مشخص‌سازی رویداد تاریخچه یک مشخص‌سازی رویداد تاریخچه می‌تواند یکی از موارد زیر باشد (به همراه نویسه جایگزینی تاریخچه .Ql \&! که نمایش داده شده است): . .Bl -tag -width ".Sy \&!Event" -offset indent .It Sy \&!Event .Sy مشخص‌سازی رویداد تاریخچه . .It Li \&! Ns Ar n یک عدد، که به یک رویداد خاص اشاره می‌کند. . .It Li \&!\- Ns Ar n یک آفست، که به رویداد .Ar n قبل از رویداد کنونی اشاره دارد. . .It Li \&!# رویداد کنونی. این مورد باید در .Xr csh 1 با احتیاط استفاده شود، چرا که هیچ بررسی برای بازگشت (تکرار بازگشتی) در آن وجود ندارد. .Nm امکان ۱۰ سطح از بازگشت را می‌دهد. (+) . .It Li \&!\&! رویداد قبلی، معادل .Ql \&!\-1 . . .It Li \&! Ns Ar s تازه‌ترین رویدادی که اولین کلمه آن با رشته .Ar s شروع می‌شود. . .It Li \&!\&? Ns Ar s Ns Li \&? تازه‌ترین رویدادی که شامل رشته .Ar s باشد. دومین .Ql \&? در صورتی که بلافاصله یک خط جدید به‌دنبال آن بیاید، می‌تواند حذف شود. .El .Pp برای مثال، این بخش از لیست تاریخچه یک کاربر را در نظر بگیرید: .Bd -literal -offset indent 9 8:30 nroff \-man wumpus.man 10 8:31 cp wumpus.man wumpus.man.old 11 8:36 vi wumpus.man 12 8:37 diff wumpus.man.old wumpus.man .Ed .Pp دستورها به همراه شماره رویداد و برچسب زمان آن‌ها نشان داده شده‌اند. رویداد کنونی، که هنوز آن را تایپ نکرده‌ایم، رویداد ۱۳ است. .Pp تایپ کردن .Dl !11 یا .Dl !\-2 به رویداد ۱۱ اشاره دارد. .Pp تایپ کردن .Dl \&!\&! به رویداد قبلی، یعنی ۱۲، اشاره می‌کند. .Ql \&!\&! می‌تواند به صورت .Ql \&! خلاصه شود اگر بعد از آن .Ql \&: بیاید، که در .Sx History word designators و .Sx History word modifiers شرح داده شده است. .Pp تایپ کردن .Dl !n به رویداد ۹ اشاره دارد که با .Ql n شروع می‌شود. .Pp تایپ کردن .Dl !\&?old\&? به رویداد ۱۲ اشاره می‌کند که شامل .Ql old است. .Pp بدون تعیین‌کننده‌ها یا تغییردهنده‌های کلمه، ارجاعات تاریخچه صرفاً به کل رویداد بسط می‌یابند، بنابراین می‌توانیم بنویسیم .Dl !cp تا دستور .Ql cp (رویداد ۱۰) دوباره اجرا شود یا .Dl !!|more اگر خروجی .Ql diff در رویداد قبلی (۱۲) از بالای صفحه خارج شده باشد. .Pp ارجاعات تاریخچه را می‌توان در صورت نیاز با استفاده از آکولاد .Po .Ql { و .Ql } .Pc از متن اطراف جدا کرد. به عنوان مثال، .Dl !vdoc به دنبال دستوری می‌گردد که با .Ql vdoc شروع شود، و در این مثال، چیزی پیدا نمی‌کند، اما .Dl !{v}doc با تطبیق رویداد ۱۱ بدون ابهام به .Ql vi wumpus.mandoc بسط می‌یابد. حتی درون آکولادها، جایگزینی‌های تاریخچه تودرتو نمی‌شوند. .Pp (+) در حالی که .Xr csh 1 به عنوان مثال، .Dl !3d را به رویداد ۳ همراه با حرف .Ql d الحاق‌شده به آن بسط می‌دهد، .Nm آن را به آخرین رویدادی که با .Ql 3d شروع می‌شود بسط می‌دهد؛ تنها آرگومان‌های کاملاً عددی به عنوان شماره رویداد در نظر گرفته می‌شوند. این امر فراخوانی رویدادهایی که با اعداد شروع می‌شوند را امکان‌پذیر می‌سازد. برای بسط دادن .Dl !3d مشابه .Xr csh 1 تایپ کنید: .Dl !{3}d . .Ss تعیین‌کننده‌های کلمه تاریخچه (History word designators) برای انتخاب کلمات از یک رویداد، می‌توانیم مشخصه رویداد را با یک .Ql \&: و یک تعیین‌کننده برای کلمات مورد نظر دنبال کنیم. کلمات یک خط ورودی از ۰ شماره‌گذاری می‌شوند، که کلمه اول (معمولاً دستور) ۰، کلمه دوم (اولین آرگومان) ۱ و غیره است. .Pp تعیین‌کننده‌های پایه کلمه به شرح زیر هستند، همراه با ستون‌هایی برای یک .Ql \&: پیشرو و یک .Ql \&! پیشرو (برای تعیین‌کننده‌های مختصر کلمه - بخش .Sx History substitution abbreviation را ببینید): . .Bl -column -offset indent ".Sy \&:Word" ".Sy \&!Word" "" .It Sy \&:Word Ta Sy \&!Word Ta Sy تعیین‌کننده کلمه تاریخچه . .Pp .It Li :0 Ta Ta اولین کلمه (دستور). . .Pp .It Li \&: Ns Ar n Ta Ta آرگومان .Ar n Ns -اُم. . .Pp .It Li :^ Ta Li !^ Ta اولین آرگومان، معادل با .Sq Li :1 . . .Pp .It Li :$ Ta Li !$ Ta آخرین آرگومان. . .Pp .It Li :% Ta Li !% Ta کلمه‌ای که با جستجوی .Li \&? Ns Ar s Ns Li \&? مطابقت داده شده است. . .Pp .It Li \&: Ns Ar x Ns Li \- Ns Ar y Ta Ta محدوده‌ای از کلمات. . .Pp .It Li \&:\- Ns Ar y Ta Li \&!\- Ns Ar y Ta معادل با .Sq Li \&:0\- Ns Ar y . . .Pp .It Li \&:* Ta Li \&!* Ta معادل با .Sq Li \&:^\-$ ، اما اگر رویداد تنها شامل ۱ کلمه باشد، چیزی برنمی‌گرداند. . .Pp .It Li \&: Ns Ar x Ns Li * Ta Ta معادل با .Sq Li \&: Ns Ar x Ns Li \-$ . . .Pp .It Li \&: Ns Ar x Ns Li \- Ta Ta معادل با .Sq Li \&: Ns Ar x Ns Li * ، اما با حذف آخرین کلمه .Pq Ql $ . . .Pp .It Li \&:\- Ta Ta معادل با .Sq Li \&:0\- ؛ دستور و تمام آرگومان‌ها به جز آخرین آرگومان. . .El .Pp کلمات انتخاب‌شده با فاصله‌های تکی از یکدیگر در خط فرمان درج می‌شوند. .Pp به‌عنوان مثال، دستور .Ql diff (رویداد ۱۲) در مثال لیست تاریخچه در .Sx History event specification ، .Dl diff wumpus.man.old wumpus.man می‌توانست به صورت .Dl diff !!:1.old !!:1 تایپ شود (با استفاده از .Ql \&:1 برای انتخاب آرگومان اول از رویداد قبلی) یا .Dl diff !\-2:2 !\-2:1 برای انتخاب و جابه‌جا کردن آرگومان‌ها از دستور .Ql cp (رویداد ۱۰). اگر ترتیب .Ql diff برای ما اهمیتی نداشت، می‌توانستیم تایپ کنیم .Dl diff !\-2:1\-2 یا به سادگی .Dl diff !\-2:* .Pp دستور .Ql cp (رویداد ۱۰) می‌توانست به صورت .Dl cp wumpus.man !#:1.old با استفاده از .Ql # برای ارجاع به رویداد جاری تایپ شود. .Pp تایپ کردن .Dl !n:\- hurkle.man دو کلمهٔ اول دستور .Ql nroff (رویداد ۹) را دوباره استفاده می‌کند تا به .Dl nroff \-man hurkle.man بسط یابد. .Pp کاراکتر .Ql \&: که مشخص‌کنندهٔ رویداد را از تعیین‌کنندهٔ کلمه جدا می‌کند، در صورتی که گزینش‌گر آرگومان با .Ql ^ ، .Ql $ ، .Ql % ، .Ql \- ، یا .Ql * آغاز شود، می‌تواند حذف گردد. .Pp برای مثال، دستور .Ql diff ما (رویداد ۱۲) می‌توانست به صورت .Dl diff !!^.old !!^ یا به طور معادل، .Dl diff !!$.old !!$ تایپ شود. با این حال، اگر .Ql \&!\&! به .Ql \&! خلاصه شود، یک گزینش‌گر آرگومان که با .Ql \- شروع می‌شود، به عنوان مشخص‌کنندهٔ رویداد تفسیر خواهد شد. .Pp یک مرجع تاریخچه ممکن است دارای یک مشخص‌کننده کلمه باشد اما هیچ رویداد مشخصی را تعیین نکند. در این صورت، به دستور قبلی ارجاع می‌دهد. .Pp در ادامه مثال دستور .Ql diff (رویداد ۱۲)، می‌توانستیم به سادگی تایپ کنیم .Dl diff !^.old !^ یا برای دریافت آرگومان‌ها با ترتیب معکوس، فقط .Dl diff !* . .Ss اصلاح‌کننده‌های کلمه در تاریخچه (History word modifiers) کلمه یا کلمات موجود در یک ارجاع تاریخچه را می‌توان ویرایش یا .Dq اصلاح کرد، با قرار دادن یک یا چند اصلاح‌کننده پس از آن (همراه با .Ql \&: آغازین نمایش‌داده‌شده)، که هر یک با یک .Ql \&: شروع می‌شوند: . .Bl -tag -width ".Li \&:s/ Ns Ar l Ns Li / Ns Ar r Ns Li /" -offset indent .It Sy \&:Word .Sy اصلاح‌کننده کلمه تاریخچه . .It Li \&:h حذف بخش انتهایی مسیر، و باقی گذاشتن ابتدای آن (head). . .It Li \&:t حذف تمام بخش‌های ابتدایی مسیر، و باقی گذاشتن انتهای آن (tail). . .It Li \&:r حذف پسوند نام فایل .Sq . Ns Ar xxx ، و باقی گذاشتن نام ریشه (root name). . .It Li \&:e حذف همه‌چیز به جز پسوند. . .It Li \&:u تبدیل اولین حرف کوچک به حرف بزرگ. . .It Li \&:l تبدیل اولین حرف بزرگ به حرف کوچک. . .It Li \&:s/ Ns Ar l Ns Li / Ns Ar r Ns Li / جایگزینی .Ar r به جای .Ar l . عبارت .Ar l صرفاً یک رشته است درست مانند .Ar r ، نه یک عبارت منظم (regular expression) نظیر آنچه در دستور همنام .Xr ed 1 وجود دارد. هر نویسه‌ای می‌تواند به عنوان جداکننده به جای .Ql / استفاده شود؛ یک .Ql \e می‌تواند برای نقل‌قول (quote) کردن جداکننده در داخل .Ar l و .Ar r به کار رود. نویسه .Ql & در .Ar r با .Ar l جایگزین می‌شود؛ .Ql \e همچنین .Ql & را نقل‌قول می‌کند. اگر .Ar l خالی باشد .Sq ( \& ) ، از .Ar l مربوط به یک جایگزینی قبلی یا .Ar s از یک جستجوی قبلی یا شماره رویداد در مشخصات رویداد استفاده می‌شود. در صورتی که بلافاصله پس از جداکننده انتهایی یک خط جدید بیاید، می‌توان آن را حذف کرد. . .It Li \&:\&& تکرار جایگزینی قبلی. . .It Li \&:g اعمال اصلاح‌گر بعدی یک‌بار روی هر کلمه. . .It Li \&:a No (+) اعمال اصلاح‌گر بعدی به بیشترین تعداد دفعات ممکن روی یک کلمه منفرد. .Ql \&:a و .Ql \&:g می‌توانند با هم برای اعمال سراسری یک اصلاح‌گر استفاده شوند. با اصلاح‌گر .Ql \&:s , تنها الگوهایی که در کلمه اصلی وجود دارند جایگزین می‌شوند، نه الگوهایی که شامل نتیجهٔ هیچ جایگزینی دیگری هستند. . .It Li \&:p چاپ خط فرمان جدید بدون اجرای آن. . .It Li \&:q نقل‌قول کردن کلمات جایگزین‌شده، جهت جلوگیری از جایگزینی‌های بعدی. . .It Li \&:Q مشابه .Ql \&:q است اما افزون بر آن متغیرهای خالی را به صورت یک رشته حاوی NUL حفظ می‌کند. این مورد برای مثال جهت حفظ آرگومان‌های مکانی مفید است: .Bd -literal -offset indent -compact > set args=('arg 1' '' 'arg 3') > tcsh -f -c 'echo ${#argv}' $args:gQ 3 .Ed . .It Li \&:x مشابه .Ql \&:q , اما شکستن به کلمات در محل فاصله‌ها، تب‌ها و خطوط جدید. . .El .Pp اصلاح‌گرها تنها روی اولین کلمهٔ قابل اصلاح اعمال می‌شوند (مگر اینکه .Ql \&:g استفاده شده باشد). قابل اصلاح نبودن هیچ کلمه‌ای یک خطا محسوب می‌شود. .Pp به عنوان مثال، دستور .Ql diff (رویداد ۱۲) در مثال فهرست تاریخچه در .Sx "مشخصات رویداد تاریخچه (History event specification)" , .Dl diff wumpus.man.old wumpus.man ممکن بود به صورت .Dl diff wumpus.man.old !#^:r با استفاده از .Ql \&:r برای حذف .Ql .old از اولین آرگومان روی همان خط .Pq Ql \&!#^ نوشته شود. .Pp می‌توانیم دستور .Dl echo hello out there و سپس .Dl echo !*:u را برای بزرگ کردن حرف اول .Ql hello ، دستور .Dl echo !*:au را برای تبدیل تمام حروف کلمه اول به حروف بزرگ و تبدیل آن به .Ql HELLO ، یا .Dl echo !*:agu را برای بزرگ کردن تمام حروف در همه کلمات وارد کنیم. .Pp ممکن است پس از دستور .Dl mail \-s \&"I forgot my password\&" rot دستور .Dl !:s/rot/root را برای تصحیح املای .Ql root وارد نماییم (برای روش‌های دیگر، .Sx "تغییردهنده‌های کلمات تاریخچه (History word modifiers)" و .Sx "تصحیح املا (+) (Spelling correction (+))" را ببینید). .Pp (+) در .Xr csh 1 به این صورت، تنها یک تغییردهنده می‌تواند روی هر گسترش تاریخچه یا متغیر اعمال شود. در .Nm ، می‌توان بیش از یکی را به کار برد؛ برای مثال: .Bd -literal -offset indent % mv wumpus.man /usr/share/man/man1/wumpus.1 % man !$:t:r man wumpus .Ed .Pp در .Xr csh 1 نتیجه به صورت زیر خواهد بود: .Dl wumpus.1:r .Pp یک جایگزینی که به دنبال آن یک .Ql \&: می‌آید، ممکن است نیاز باشد با استفاده از آکولادها از آن مجزا شود: .Bd -literal -offset indent > mv a.out /usr/games/wumpus > setenv PATH !$:h:$PATH Bad ! modifier: $. > setenv PATH !{\-2$:h}:$PATH setenv PATH /usr/games:/bin:/usr/bin:. .Ed .Pp تلاش نخست در .Xr csh 1 موفقیت‌آمیز خواهد بود اما در .Nm شکست می‌خورد، زیرا .Nm پس از دومین .Ql \&: انتظار یک تغییردهنده دیگر را به جای .Ql $ دارد. . .Ss "اختصار جایگزینی تاریخچه (History substitution abbreviation)" یک اختصار ویژه برای جایگزینی‌ها وجود دارد؛ .Ql ^ ، هنگامی که نخستین نویسه در یک خط ورودی باشد، معادل .Ql !:s^ است. بنابراین، می‌توانیم مثال بخش .Sx "تغییردهنده‌های کلمه تاریخچه (History word modifiers)" .Dl mail \-s \&"I forgot my password\&" rot را با .Dl ^rot^root دنبال کنیم تا تصحیح املایی انجام شود. این تنها جایگزینی تاریخچه است که به‌طور صریح با .Ql \&! آغاز نمی‌شود. . .Ss "دستورهای ویرایشگر تاریخچه (History editor commands)" در نهایت، علاوه بر جایگزینی‌هایی که پیش‌تر شرح داده شد، می‌توان از طریق ویرایشگر نیز به تاریخچه دسترسی پیدا کرد. دستورهای ویرایشگر .Ic up-history و .Ic down-history ، .Ic history-search-backward و .Ic history-search-forward ، .Ic i-search-back و .Ic i-search-fwd ، .Ic vi-search-back و .Ic vi-search-fwd ، .Ic copy-prev-word و .Ic insert-last-word به جستجوی رویدادها در فهرست تاریخچه پرداخته و آن‌ها را در بافر ورودی کپی می‌کنند. دستور ویرایشگر .Ic toggle-literal-history بین حالت‌های گسترش‌یافته و لفظی خطوط تاریخچه در بافر ورودی جابه‌جا می‌شود. .Ic expand-history و .Ic expand-line به ترتیب جایگزینی‌های تاریخچه را در کلمه جاری و در کل بافر ورودی گسترش می‌دهند. . .Ss "جایگزینی نام مستعار (Alias substitution)" پوسته فهرستی از نام‌های مستعار را نگهداری می‌کند که می‌توان آن‌ها را توسط دستورهای .Ic alias و .Ic unalias تنظیم، لغو و چاپ کرد. پس از تجزیه خط فرمان به دستورهای ساده (ببینید .Sx Commands ) نخستین کلمه هر دستور، از چپ به راست، بررسی می‌شود تا مشخص گردد که آیا نام مستعاری دارد یا خیر. در این صورت، کلمه اول با نام مستعار جایگزین می‌شود. اگر نام مستعار حاوی یک ارجاع به تاریخچه باشد، تحت .Sx "جایگزینی تاریخچه (History substitution)" قرار می‌گیرد، درست گویی دستور اصلی خط ورودی پیشین بوده است. اگر نام مستعار حاوی ارجاع به تاریخچه نباشد، فهرست آرگومان‌ها دست‌نخورده باقی می‌ماند. .Pp بنابراین اگر نام مستعار برای .Ql ls عبارت بود از .Dl ls \-l دستور .Dl ls /usr تبدیل می‌شد به .Dl ls \-l /usr که در اینجا فهرست آرگومان‌ها دست‌نخورده مانده است. .Pp اگر نام مستعار برای .Ql lookup عبارت بود از .Dl grep !^ /etc/passwd آنگاه .Dl lookup bill تبدیل می‌شد به .Dl grep bill /etc/passwd .Pp نام‌های مستعار را می‌توان برای معرفی فراساختار (metasyntax) تجزیه‌کننده به کار برد. برای نمونه، .Dl alias print 'pr \e!* | lpr' یک .Dq دستور .Pq Ql print تعریف می‌کند که آرگومان‌هایش را با .Xr pr 1 به چاپگر خطی ارسال می‌کند. .Pp جایگزینی نام مستعار تا زمانی که کلمه اول دستور دیگر نام مستعاری نداشته باشد تکرار می‌شود. اگر یک جایگزینی نام مستعار کلمه اول را تغییر ندهد (مانند نمونه پیشین)، برای جلوگیری از ایجاد حلقه نشانه‌گذاری می‌شود. حلقه‌های دیگر شناسایی شده و باعث ایجاد خطا می‌شوند. .Pp برخی نام‌های مستعار توسط شل ارجاع داده می‌شوند؛ به بخش .Sx "نام‌های مستعار ویژه (+)" مراجعه کنید. . .Ss جایگزینی متغیرها شل فهرستی از متغیرها را نگهداری می‌کند که مقدار هر یک از آن‌ها فهرستی از صفر یا چند کلمه است. مقادیر متغیرهای شل را می‌توان با دستورهای .Ic set و .Ic unset نمایش داد و تغییر داد. سیستم نیز فهرست اختصاصی خود را از متغیرهای .Dq محیطی نگهداری می‌کند. این متغیرها را می‌توان با .Ic printenv ، .Ic setenv و .Ic unsetenv نمایش داد و تغییر داد. .Pp (+) متغیرها را می‌توان با دستور زیر فقط‌خواندنی کرد: .Dl set \-r متغیرهای فقط‌خواندنی را نمی‌توان تغییر داد یا مقدار آن‌ها را لغو (unset) کرد؛ تلاش برای انجام این کار موجب بروز خطا خواهد شد. متغیری که فقط‌خواندنی شود را دیگر نمی‌توان قابل نوشتن کرد، بنابراین از دستور .Dl set \-r باید با احتیاط استفاده شود. متغیرهای محیطی را نمی‌توان فقط‌خواندنی کرد. .Pp برخی متغیرها توسط شل مقداردهی می‌شوند یا توسط آن مورد ارجاع قرار می‌گیرند. به‌عنوان مثال، متغیر .Ic argv تصویری از فهرست آرگومان‌های شل است و کلماتِ مقدار این متغیر به شیوه‌هایی ویژه ارجاع داده می‌شوند. برخی از متغیرهایی که توسط شل ارجاع داده می‌شوند کلیدهای دوحالته (toggles) هستند؛ برای شل مهم نیست که مقدار آن‌ها چیست، بلکه فقط تنظیم بودن یا نبودن آن‌ها اهمیت دارد. به‌عنوان مثال، متغیر .Ic verbose یک کلید دوحالته است که باعث پژواک (echo) شدن ورودی دستورها می‌شود. گزینه خط فرمان .Fl v این متغیر را تنظیم می‌کند. بخش .Sx "متغیرهای ویژه شل" فهرست تمام متغیرهایی را که توسط شل ارجاع داده می‌شوند ارائه می‌دهد. .Pp عملیات دیگر با متغیرها به صورت عددی رفتار می‌کنند. دستور .Sq Ic @ اجازه می‌دهد محاسبات عددی انجام شده و نتیجه به یک متغیر اختصاص یابد. با این حال، مقادیر متغیرها همواره به صورت (صفر یا چند) رشته نمایش داده می‌شوند. برای اهداف عملیات عددی، رشته خالی برابر با صفر در نظر گرفته می‌شود، و کلمات دوم و پس از آن در مقادیر چندکلمه‌ای نادیده گرفته می‌شوند. .Pp پس از اعمال نام مستعار (alias) و تجزیهٔ خط ورودی، و پیش از اجرای هر دستور، جایگزینی متغیرها با استفاده از نویسهٔ .Ql $ انجام می‌شود. می‌توان با قرار دادن یک .Ql \e پیش از .Ql $ از این بسط جلوگیری کرد، مگر درون جفت‌های .Ql \&" که .Em همیشه انجام می‌شود، و درون جفت‌های .Ql \&' که .Em هرگز رخ نمی‌دهد. رشته‌های درون .Ql \` بعداً تفسیر می‌شوند (نگاه کنید به .Sx جایگزینی دستور ) بنابراین جایگزینی .Ql $ در آنجا تا زمانِ بعد (در صورت وقوع) رخ نمی‌دهد. یک .Ql $ اگر با یک فاصله، تب یا انتهای خط همراه باشد، بدون تغییر منتقل می‌شود. .Pp تغییرمسیرهای ورودی/خروجی پیش از بسط متغیر تشخیص داده می‌شوند، و بسط متغیرِ آن‌ها به‌طور جداگانه انجام می‌گیرد. در غیر این صورت، نام دستور و تمام فهرست آرگومان با هم بسط داده می‌شوند. بنابراین ممکن است نخستین کلمه (دستور) (تا این لحظه) بیش از یک کلمه تولید کند، که نخستینِ آن‌ها نام دستور شده و بقیه به آرگومان‌ها تبدیل می‌شوند. .Pp مگر در صورت قرار گرفتن درون .Ql \&" یا اعمال اصلاح‌کنندهٔ .Ql \&:q نتایج جایگزینی متغیر ممکن است در نهایت تحت جایگزینی دستور و نام فایل قرار گیرند. درون .Ql \&" ، متغیری که مقدار آن از چند کلمه تشکیل شده است به (بخشی از) یک کلمهٔ واحد بسط می‌یابد، در حالی که کلماتِ مقدار متغیر با فاصله از هم جدا شده‌اند. هنگامی که اصلاح‌کنندهٔ .Ql \&:q بر یک جایگزینی اعمال شود، متغیر به چند کلمه بسط می‌یابد که هر کلمه با یک فاصله جدا شده و نقل‌قول می‌شود تا از جایگزینی بعدی دستور یا نام فایل جلوگیری به عمل آید. .Pp دستور ویرایشگر .Ic expand-variables ، که به‌طور معمول به .Ic ^X-$ متصل (bind) است، می‌تواند برای بسط تعاملی متغیرهای منفرد استفاده شود. . .Ss فراتوالی‌های جایگزینی متغیر فراتوالی‌های زیر برای وارد کردن مقادیر متغیرها به ورودی پوسته ارائه شده‌اند: .Pp .Bl -tag -width ".Li ${ Ns Ar number Ns Li }" -offset indent -compact . .It Li $ Ns Ar name .It Li ${ Ns Ar name Ns Li } کلمات مقدار متغیر .Ar name را، که هر کدام با یک نویسهٔ فاصله جدا شده‌اند، جایگزین می‌کند. کروشه‌ها .Ar name را از نویسه‌های پس از آن که در غیر این صورت بخشی از نام محسوب می‌شدند، جدا می‌کنند. متغیرهای پوسته نام‌هایی متشکل از حروف و ارقام دارند که با یک حرف آغاز می‌شوند. نویسهٔ زیرخط (underscore) به عنوان یک حرف در نظر گرفته می‌شود. اگر .Ar name یک متغیر پوسته نباشد، اما در محیط (environment) تنظیم شده باشد، مقدار آن بازگردانده می‌شود (هرچند برخی از اشکال دیگر که در ادامه آمده‌اند در این حالت در دسترس نیستند). . .Pp .It Li $ Ns Ar name Ns Li \&[ Ns Ar selector Ns Li \&] .It Li ${ Ns Ar name Ns Li \&[ Ns Ar selector Ns Li ]} تنها کلمات انتخاب‌شده از مقدار .Ar name را جایگزین می‌کند. بخش .Ar selector تحت جایگزینی .Ql $ قرار می‌گیرد و می‌تواند شامل یک عدد منفرد یا دو عدد جداشده با یک .Ql \- باشد. کلمهٔ نخست از مقدار یک متغیر با شمارهٔ .Ql 1 مشخص می‌شود. اگر عدد نخست یک بازه حذف شود، مقدار پیش‌فرض آن .Ql 1 است. اگر عضو پایانی یک بازه حذف شود، مقدار پیش‌فرض آن .Ql $# Ns Ar name خواهد بود. انتخاب‌گر .Ar selector با مقدار .Ql * همهٔ کلمات را انتخاب می‌کند. خالی بودن یک بازه در صورتی که آرگومان دوم حذف شده باشد یا در محدوده باشد، خطا محسوب نمی‌شود. . .Pp .It Li $0 نام فایلی که ورودی دستور از آن در حال خوانده شدن است را جایگزین می‌کند. اگر نام مشخص نباشد، خطایی رخ می‌دهد. . .Pp .It Li $ Ns Ar number .It Li ${ Ns Ar number Ns Li } معادل است با .Ql $argv[ Ns Ar number Ns Li \&] . . .Pp .It Li $* معادل است با .Ql $argv ، که خود معادل .Ql $argv[*] است. .El .Pp به جز موارد ذکر شده، ارجاع به متغیری که تنظیم نشده است یک خطا محسوب می‌شود. .Pp اصلاح‌کننده‌های .Ql \&: توصیف‌شده در بخش .Sx اصلاح‌کننده‌های کلمات تاریخچه (History word modifiers) ، به استثنای .Ql \&:p ، می‌توانند بر روی جایگزینی‌های بالا اعمال شوند. می‌توان از بیش از یک اصلاح‌کننده استفاده کرد. (+) ممکن است برای جداسازی یک جایگزینی متغیر از یک .Ql \&: لفظی، همانند .Sx اصلاح‌کننده‌های کلمات تاریخچه (History word modifiers) به استفاده از آکولاد نیاز باشد؛ هرگونه اصلاح‌کننده باید در درون آکولادها قرار گیرد. . .Ss "جایگزینی متغیرها بدون اصلاح‌کننده‌ها" جایگزینی‌های زیر را نمی‌توان با اصلاح‌کننده‌های .Ql \&: تغییر داد: .Pp .Bl -tag -width ".Li ${% Ns Ar number Ns Li }" -offset indent -compact . .It Li $\&? Ns Ar name .It Li ${\&? Ns Ar name Ns Li } رشتهٔ .Ql 1 را در صورتی که .Ar name تنظیم شده باشد، و .Ql 0 را در غیر این صورت جایگزین می‌کند. . .Pp .It Li $?0 اگر نام فایل ورودی فعلی مشخص باشد، با .Ql 1 و در غیر این صورت با .Ql 0 جایگزین می‌شود. در شل‌های تعاملی همواره .Ql 0 است. . .Pp .It Li $# Ns Ar name .It Li ${# Ns Ar name Ns Li } با تعداد کلمات موجود در .Ar name جایگزین می‌شود. . .Pp .It Li $# معادل .Ql $#argv است. (+) . .Pp .It Li $% Ns Ar name .It Li ${% Ns Ar name Ns Li } با تعداد نویسه‌های موجود در .Ar name جایگزین می‌شود. (+) . .Pp .It Li $% Ns Ar number .It Li ${% Ns Ar number Ns Li } با تعداد نویسه‌های موجود در .Ql $argv[ Ns Ar number Ns Li \&] جایگزین می‌شود. (+) . .Pp .It Li $? معادل .Ql $status است. (+) . .Pp .It Li $$ با شناسه فرایند (PID در مبنای ده‌دهی) شل (والد) جایگزین می‌شود. . .Pp .It Li $! با شناسه فرایند (PID در مبنای ده‌دهی) آخرین فرایند پس‌زمینه‌ای که توسط این شل آغاز شده است جایگزین می‌شود. (+) . .Pp .It Li $_ خط فرمان آخرین دستور اجرا شده را جایگزین می‌کند. (+) . .Pp .It Li $< یک خط از ورودی استاندارد را بدون هیچ‌گونه تفسیر بعدی جایگزین می‌کند. می‌توان از آن برای خواندن از صفحه‌کلید در یک شل‌اسکریپت استفاده کرد. (+) در حالی که .Xr csh 1 همیشه .Ql $< را نقل‌قول (کوتیشن) می‌کند، گویی معادل .Ql $<:q است، .Nm این کار را نمی‌کند. علاوه بر این، هنگامی که .Nm منتظر تایپ شدن یک خط است، کاربر می‌تواند با تایپ یک وقفه (interrupt)، دنباله‌ای را که قرار است خط در آن جایگزین شود متوقف کند، اما .Xr csh 1 چنین اجازه‌ای نمی‌دهد. . .Pp .It Li $?< تعداد بایت‌های موجود از ورودی استاندارد را جایگزین می‌کند. (این ویژگی ممکن است غیرقابل‌حمل باشد.) (+) .El . .Ss "جایگزینی دستور، نام فایل و پشتهٔ دایرکتوری" جایگزینی‌های باقی‌مانده به‌صورت گزینشی بر روی آرگومان‌های دستورات توکار اعمال می‌شوند. این بدان معناست که بخش‌هایی از عبارت‌ها که ارزیابی نمی‌شوند، تحت این بسط‌ها قرار نمی‌گیرند. برای دستوراتی که درونی شل نیستند، نام دستور به‌طور جداگانه از فهرست آرگومان‌ها جایگزین می‌شود. این عمل بسیار دیر، پس از انجام تغییر مسیر ورودی-خروجی، و در یک فرزند شل اصلی رخ می‌دهد. . .Ss "جایگزینی دستور" جایگزینی دستور با دستوری که در .Ql \&` محصور شده باشد مشخص می‌شود. خروجی چنین دستوری در محل فاصله‌ها، تب‌ها و خطوط جدید به کلمات مجزا تفکیک شده، و کلمات تهی نادیده گرفته می‌شوند. خروجی مشمول جایگزینی متغیر و دستور قرار گرفته و به‌جای رشته اصلی قرار می‌گیرد. .Pp جایگزینی‌های دستور درون نقل‌قول‌های دوتایی .Pq Ql \&" فاصله‌ها و تب‌ها را حفظ می‌کنند؛ تنها خطوط جدید موجب کلمات جدید می‌شوند. خط جدید پایانی منفرد در هیچ حالتی موجب کلمه جدید نمی‌شود. بنابراین ممکن است که یک جایگزینی دستور تنها بخشی از یک کلمه را حاصل کند، حتی اگر دستور یک خط کامل را خروجی دهد. .Pp به‌طور پیش‌فرض، شل از نگارش 6.12 تمام نویسه‌های خط جدید و بازگشت به ابتدای سطر (carriage return) در دستور را با فاصله جایگزین می‌کند. اگر این ویژگی با لغو تنظیم .Ic csubstnonl غیرفعال شود، خطوط جدید طبق معمول دستورات را جدا می‌کنند. . .Ss "جایگزینی نام فایل" اگر کلمه‌ای شامل هر یک از نویسه‌های .Ql * ، .Ql \&? ، .Ql \&[ ، یا .Ql { باشد یا با نویسهٔ .Ql ~ آغاز شود، کاندیدایی برای جایگزینی نام فایل است، که به آن .Dq globbing نیز می‌گویند. سپس این کلمه به عنوان یک الگو .Dq ( glob-pattern ) در نظر گرفته می‌شود، و با فهرستی از نام‌های فایل که با الگو مطابقت دارند و بر اساس الفبا مرتب شده‌اند، جایگزین می‌شود. .Pp در تطبیق نام فایل‌ها، نویسه .Ql \&. در ابتدای نام فایل یا بلافاصله پس از یک .Ql / ، و همچنین خود نویسه .Ql / باید به‌طور صریح تطبیق داده شوند (مگر اینکه .Ic globdot یا .Ic globstar یا هر دو تنظیم شده باشند (+)). نویسه .Ql * با هر رشته‌ای از نویسه‌ها، از جمله رشته خالی، تطبیق می‌یابد. نویسه .Ql \&? با هر تک‌نویسه‌ای تطبیق می‌یابد. توالی .Ql [...] با هر یک از نویسه‌های محصورشده تطبیق می‌یابد. درون .Ql [...] ، یک جفت نویسه که با .Ql \- از هم جدا شده‌اند، با هر نویسه‌ای که از نظر لغوی بین آن دو قرار دارد تطبیق پیدا می‌کند. .Pp (+) برخی از الگوهای تطبیق نام (glob-patterns) را می‌توان نفی کرد: توالی .Ql [^...] با هر تک‌نویسه‌ای که توسط نویسه‌ها و/یا محدوده‌های نویسه‌ای داخل کروشه‌ها مشخص .Em نشده باشد تطبیق می‌یابد. .Pp همچنین می‌توان یک الگوی تطبیق نام را به‌طور کامل با .Ql ^ نفی کرد: .Bd -literal -offset indent > echo * bang crash crunch ouch > echo ^cr* bang ouch .Ed .Pp الگوهای تطبیق نامی که از .Ql \&? ، .Ql * یا .Ql [] استفاده نمی‌کنند، یا آن‌هایی که از .Ql {} یا .Ql ~ (در ادامه) استفاده می‌کنند، به‌درستی نفی نمی‌شوند. .Pp نشانه‌گذاری .Ql a{b,c,d}e یک عبارت خلاصه برای .Ql abe ace ade است. ترتیب چپ‌به‌راست حفظ می‌شود: .Dl /usr/source/s1/{oldls,ls}.c به .Dl /usr/source/s1/oldls.c /usr/source/s1/ls.c بسط می‌یابد. نتایج تطابق‌ها برای حفظ این ترتیب، به‌طور جداگانه در یک سطح پایین‌تر مرتب می‌شوند: .Dl ../{memo,*box} ممکن است به .Dl ../memo ../box ../mbox بسط یابد (توجه داشته باشید که .Ql memo همراه با نتایج تطابقِ .Ql *box مرتب نشده است.) این که این ساختار به فایل‌هایی بسط یابد که وجود ندارند خطا محسوب نمی‌شود، اما ممکن است از فرمانی که لیست بسط‌یافته به آن داده شده است، خطا دریافت کنید. این ساختار می‌تواند به‌صورت تودرتو باشد. به‌عنوان یک حالت خاص، کلمات .Ql { , .Ql } و .Ql {} بدون تغییر رد می‌شوند. .Pp نویسهٔ .Ql ~ در ابتدای نام یک فایل، به دایرکتوری‌های خانگی اشاره دارد. به‌صورت تنها، یعنی .Ql ~ ، به دایرکتوری خانگی فراخواننده به‌همان صورتی که در متغیر شل .Ic home منعکس شده، بسط می‌یابد. هنگامی که پس از آن نامی متشکل از حروف، ارقام و نویسه‌های .Ql \- بیاید، شل به‌دنبال کاربری با آن نام می‌گردد و دایرکتوری خانگی او را جایگزین می‌کند؛ بنابراین .Dl ~ken ممکن است به .Dl /usr/ken و .Dl ~ken/chmach ممکن است به .Dl /usr/ken/chmach بسط پیدا کند. اگر پس از نویسهٔ .Ql ~ نویسه‌ای غیر از یک حرف یا .Ql / قرار گیرد، یا در جایی غیر از ابتدای یک کلمه ظاهر شود، دست‌نخورده باقی می‌ماند. بنابراین فرمانی مانند .Dl setenv MANPATH /usr/share/man:/usr/local/share/man:~/lib/man آن‌طور که ممکن است انتظار برود، جایگزینی دایرکتوری خانگی را انجام نمی‌دهد. .Pp اگر یک الگوی تطابق فایل (glob-pattern) حاوی .Ql * ، .Ql \&? ، .Ql \&[ یا .Ql ~ ، با یا بدون .Ql ^ ، با هیچ فایلی مطابقت پیدا نکند، یک خطا محسوب می‌شود. با این حال، تنها کافی است یکی از الگوها در فهرستی از الگوهای تطابق فایل با یک فایل مطابقت داشته باشد (به طوری که به عنوان مثال، .Dl rm *.a *.c *.o تنها در صورتی با شکست مواجه می‌شود که هیچ فایلی در دایرکتوری فعلی با پسوندهای .Ql .a ، .Ql .c یا .Ql .o وجود نداشته باشد)، و اگر متغیر شل .Ic nonomatch تنظیم شده باشد، الگویی (یا فهرستی از الگوها) که با هیچ چیز مطابقت ندارد به جای ایجاد خطا، بدون تغییر باقی می‌ماند. .Pp متغیر شل .Ic globstar می‌تواند طوری تنظیم شود که .Ql ** یا .Ql *** به عنوان یک الگوی تطابق فایل مجاز شناخته شوند که با هر رشته‌ای از نویسه‌ها شامل .Ql / مطابقت یافته و به طور بازگشتی در تمام زیردایرکتوری‌های موجود پیمایش کند. برای نمونه، .Dl ls **.c تمام فایل‌های c. را در درخت دایرکتوری فعلی فهرست می‌کند. اگر به تنهایی استفاده شود، با صفر یا چند زیردایرکتوری مطابقت خواهد داشت. برای مثال، .Dl ls /usr/include/**/time.h هر فایلی با نام .Ql time.h را در درخت دایرکتوری .Pa /usr/include فهرست می‌کند؛ .Dl ls /usr/include/**time.h با هر فایلی در درخت دایرکتوری .Pa /usr/include که نامش به .Ql time.h ختم شود مطابقت می‌یابد؛ و .Dl ls /usr/include/**time**.h با هر فایل h. که .Ql time در نام زیردایرکتوری یا در خود نام فایل آن وجود داشته باشد، مطابقت خواهد داشت. برای جلوگیری از مشکلات ناشی از بازگشت (recursion)، الگوی تطابق .Ql ** وارد پیوندهای نمادینی که به یک دایرکتوری اشاره دارند نخواهد شد. برای لغو این رفتار، از .Ql *** (+) استفاده کنید. .Pp متغیر پوستهٔ .Ic noglob می‌تواند برای جلوگیری از جایگزینی نام فایل تنظیم شود، و دستور ویرایشگر .Ic expand-glob که معمولاً به .Ic ^X-* مقید شده است، می‌تواند برای گسترش تعاملی جایگزینی‌های نام فایل به صورت تکی استفاده شود. . .Ss جایگزینی پشتهٔ دایرکتوری (+) پشتهٔ دایرکتوری فهرستی از دایرکتوری‌ها است که از صفر شماره‌گذاری شده و توسط دستورهای توکار .Ic pushd ، .Ic popd و .Ic dirs استفاده می‌شود. .Ic dirs می‌تواند در هر زمان پشتهٔ دایرکتوری را چاپ کرده، در یک فایل ذخیره، بازیابی و پاک کند؛ همچنین متغیرهای پوستهٔ .Ic savedirs و .Ic dirsfile می‌توانند طوری تنظیم شوند که پشتهٔ دایرکتوری را به‌طور خودکار هنگام خروج از سیستم ذخیره کرده و هنگام ورود بازیابی نمایند. متغیر پوستهٔ .Ic dirstack را می‌توان برای مشاهدهٔ پشتهٔ دایرکتوری بررسی نمود و همچنین برای قرار دادن دایرکتوری‌های دلخواه در پشتهٔ دایرکتوری تنظیم کرد. .Pp نویسهٔ .Ql = به همراه یک یا چند رقم به یک مدخل در پشتهٔ دایرکتوری گسترش می‌یابد. حالت خاص .Ql =- به آخرین دایرکتوری در پشته گسترش می‌یابد. برای نمونه، .Bd -literal -offset indent > dirs \-v 0 /usr/bin 1 /usr/spool/uucp 2 /usr/accts/sys > echo =1 /usr/spool/uucp > echo =0/calendar /usr/bin/calendar > echo =\- /usr/accts/sys .Ed .Pp متغیرهای شل .Ic noglob و .Ic nonomatch و دستور ویرایشگر .Ic expand-glob علاوه بر جایگزینی نام فایل‌ها، برای پشته دایرکتوری نیز اعمال می‌شوند. . .Ss "سایر جایگزینی‌ها (+)" تبدیل‌های متعدد دیگری نیز در رابطه با نام فایل‌ها وجود دارد که ارتباط مستقیمی با موارد فوق ندارند، اما برای کامل بودن در اینجا ذکر شده‌اند. .Em هر نام فایلی ممکن است در زمانی که متغیر .Ic symlinks روی .Ql expand تنظیم شده باشد، به یک مسیر کامل بسط یابد. نقل‌قول کردن مانع از این بسط می‌شود، و دستور ویرایشگر .Ic normalize-path آن را به صورت درخواستی انجام می‌دهد. دستور ویرایشگر .Ic normalize-command دستورات موجود در .Ev PATH را در صورت درخواست به مسیرهای کامل بسط می‌دهد. در نهایت، .Ic cd و .Ic pushd نویسه .Ql \- را به عنوان دایرکتوری کاری قبلی (معادل متغیر شل .Ic owd ) تفسیر می‌کنند. این اصلاً یک جایگزینی نیست، بلکه یک کوته‌نوشت است که تنها توسط این دستورها شناخته می‌شود. با این وجود، با نقل‌قول کردن می‌توان از این رفتار نیز جلوگیری کرد. . .Ss "دستورها" سه بخش بعدی نحوه اجرای دستورات توسط شل و تعامل آن با ورودی و خروجی آن‌ها را شرح می‌دهد. . .Ss "دستورهای ساده، خط‌لوله‌ها و دنباله‌ها" یک دستور ساده دنباله‌ای از کلمات است که اولین کلمه، دستوری را که باید اجرا شود مشخص می‌کند. مجموعه‌ای از دستورهای ساده که با نویسه‌های .Ql \&| به یکدیگر متصل شده‌اند، یک خط‌لوله (pipeline) را تشکیل می‌دهند. خروجی هر دستور در یک خط‌لوله به ورودی دستور بعدی متصل می‌شود. .Pp دستورهای ساده و پایپ‌لاین‌ها می‌توانند با .Ql \&; به صورت توالی‌هایی به یکدیگر متصل شوند و به صورت متوالی اجرا خواهند شد. همچنین می‌توان دستورها و پایپ‌لاین‌ها را با .Ql || یا .Ql && به صورت توالی‌هایی به یکدیگر متصل کرد؛ این کار مشابه زبان C نشان می‌دهد که دستور دوم به ترتیب تنها در صورتی اجرا می‌شود که دستور اول با شکست مواجه شود یا با موفقیت انجام پذیرد. .Pp یک دستور ساده، پایپ‌لاین یا توالی می‌تواند درون پرانتزها .Po .Ql \&( و .Ql \&) .Pc قرار گیرد تا یک دستور ساده را تشکیل دهد، که به نوبه خود می‌تواند جزئی از یک پایپ‌لاین یا یک توالی باشد. یک دستور، پایپ‌لاین یا توالی را می‌توان بدون معطل ماندن برای خاتمه آن، با قرار دادن یک .Ql \&& در انتهای آن اجرا کرد. . .Ss اجرای دستورهای توکار (Builtin) و غیرتوکار دستورهای توکار (Builtin) درون پوسته اجرا می‌شوند. اگر هر یک از اجزای یک پایپ‌لاین به‌جز آخرین جزء آن یک دستور توکار باشد، آن پایپ‌لاین در یک زیرپوسته (subshell) اجرا می‌شود. .Pp دستورهای داخل پرانتز همیشه در یک زیرپوسته اجرا می‌شوند. .Bd -literal -offset indent (cd; pwd); pwd .Ed .Pp بنابراین دایرکتوری .Ic home را چاپ می‌کند، در حالی که شما را در همان جایی که بودید باقی می‌گذارد (که آن را پس از دایرکتوری خانگی چاپ می‌کند)، در حالی که .Bd -literal -offset indent cd; pwd .Ed .Pp شما را در دایرکتوری .Ic home باقی می‌گذارد. دستورهای پرانتزی بیشتر اوقات برای جلوگیری از تأثیرگذاری .Ic cd بر روی پوسته فعلی استفاده می‌شوند. .Pp هنگامی که مشخص شود دستور مورد نظر برای اجرا یک دستور توکار نیست، پوسته تلاش می‌کند دستور را از طریق .Xr execve 2 اجرا کند. هر کلمه در متغیر .Ic path نام یک دایرکتوری است که پوسته در آن به دنبال دستور می‌گردد. اگر به پوسته گزینهٔ .Fl f داده نشده باشد، پوسته نام‌های موجود در این دایرکتوری‌ها را در یک جدول داخلی هش می‌کند تا فقط فراخوانی .Xr execve 2 را در دایرکتوری‌ای امتحان کند که احتمال وجود دستور در آنجا وجود دارد. این کار در زمان وجود تعداد زیادی دایرکتوری در مسیر جستجو، سرعت پیدا کردن دستور را به شدت افزایش می‌دهد. این سازوکار هشینگ در موارد زیر استفاده نمی‌شود: .Bl -enum -offset indent .It اگر هشینگ صراحتاً با استفاده از .Ic unhash غیرفعال شده باشد. .It اگر به پوسته یک .Fl f Ar argument داده شده باشد. .It برای هر بخش دایرکتوری از .Ic path که با یک .Ql / شروع نمی‌شود. .It اگر دستور حاوی یک .Ql / باشد. .El .Pp در چهار مورد فوق، پوسته هر مؤلفه از بردار مسیر را با نام دستور داده‌شده الحاق می‌کند تا نام مسیر فایلی را تشکیل دهد و سپس برای اجرای آن تلاش می‌کند. اگر اجرا موفقیت‌آمیز باشد، جستجو متوقف می‌شود. .Pp اگر فایل دارای دسترسی‌های اجرایی باشد اما برای سیستم یک فایل اجرایی محسوب نشود (یعنی نه یک باینری اجرایی باشد و نه اسکریپتی که مفسر خود را مشخص کرده است)، در این صورت فرض می‌شود فایلی حاوی دستورات پوسته است و یک پوستهٔ جدید برای خواندن آن ایجاد می‌گردد. نام مستعار ویژهٔ .Ic shell می‌تواند برای تعیین مفسری غیر از خود پوسته تنظیم شود. .Pp در سیستم‌هایی که قرارداد مفسر اسکریپت .Ql #! را متوجه نمی‌شوند، پوسته ممکن است برای شبیه‌سازی آن کامپایل شده باشد؛ متغیر پوستهٔ .Ic version را ببینید. اگر چنین باشد، پوسته خط اول فایل را بررسی می‌کند تا ببیند آیا به این صورت است یا خیر: .Dl #! Ns Ar interpreter arg Li \&... اگر بود، پوسته .Ar interpreter را به همراه .Ar arg Ns های داده‌شده اجرا کرده و فایل را از طریق ورودی استاندارد به آن می‌دهد. . .Ss ورودی/خروجی (Input/output) ورودی استاندارد و خروجی استاندارد یک دستور را می‌توان با نحو زیر بازهدایت کرد: .Pp .Bl -tag -width ".Li << Ar word" -offset indent -compact . .It Li < Ar name فایل .Ar name (که ابتدا متغیر، دستور و نام فایل آن بسط داده شده است) را به عنوان ورودی استاندارد باز می‌کند. . .Pp .It Li << Ar word ورودی پوسته را تا خطی که کاملاً مشابه .Ar word باشد می‌خواند. .Ar word تحت جایگزینی متغیر، نام فایل یا دستور قرار نمی‌گیرد، و هر خط ورودی پیش از اعمال هرگونه جایگزینی روی آن، با .Ar word مقایسه می‌شود. مگر اینکه یک نویسهٔ نقل‌قول .Ql \e ، .Ql \&" ، .Ql \&' ، یا .Ql \&` در .Ar word ظاهر شود، جایگزینی متغیر و دستور روی خطوط میانی انجام می‌گیرد، که اجازه می‌دهد .Ql \e کاراکترهای .Ql $ ، .Ql \e و .Ql \&` را نقل‌قول کند. دستوراتی که جایگزین می‌شوند تمامی فاصله‌ها، تب‌ها، و خطوط جدیدشان حفظ می‌شود، به‌جز خط جدید پایانی که حذف می‌گردد. متن حاصل در یک فایل موقت ناشناس قرار می‌گیرد که به عنوان ورودی استاندارد به دستور داده می‌شود. .Pp .It Li > Ar name .It Li >\&! Ar name .It Li >& Ar name .It Li >&\&! Ar name فایل .Ar name به‌عنوان خروجی استاندارد استفاده می‌شود. اگر فایل وجود نداشته باشد، ایجاد می‌شود؛ اگر فایل از قبل موجود باشد، محتویات قبلی آن پاک شده و کوتاه‌سازی (truncate) می‌گردد. .Pp اگر متغیر پوسته .Ic noclobber تنظیم شده باشد، فایل نباید وجود داشته باشد یا این‌که باید یک فایل کاراکتری خاص (مانند یک ترمینال یا .Pa /dev/null ) باشد، در غیر این صورت خطا رخ می‌دهد. این ویژگی به جلوگیری از نابودی تصادفی فایل‌ها کمک می‌کند. در این حالت، حالت‌های شامل .Ql \&! می‌توانند برای نادیده گرفتن این بررسی استفاده شوند. اگر مقدار .Ql notempty در .Ic noclobber تعیین شده باشد، استفاده از .Ql > روی فایل‌های خالی مجاز است؛ اگر مقدار .Ql ask در .Ic noclobber تنظیم شده باشد، به‌جای نمایش خطا، یک تایید تعاملی درخواست می‌شود. .Pp فرم‌های شامل .Ql \&& علاوه بر خروجی استاندارد، خروجی عیب‌یابی (خطای استاندارد) را نیز به فایل مشخص‌شده هدایت می‌کنند. .Ar name به همان روش نام‌های فایل ورودی در .Ql < بسط داده می‌شود. .Pp .It Li >> Ar name .It Li >>& Ar name .It Li >>\&! Ar name .It Li >>&\&! Ar name مشابه .Ql > است، اما خروجی را به انتهای .Ar name اضافه می‌کند (ضمیمه می‌کند). اگر متغیر پوسته .Ic noclobber تنظیم شده باشد، در صورتی که فایل .Em وجود نداشته باشد یک خطا محسوب می‌شود، مگر این‌که یکی از حالت‌های شامل .Ql \&! به کار رفته باشد. .El .Pp هر دستور، محیطی را که شل در آن فراخوانی شده بود، پس از اعمال تغییرات ناشی از پارامترهای ورودی-خروجی و قرارگیری دستور در یک پایپ‌لاین (pipeline)، دریافت می‌کند. بنابراین، برخلاف برخی از شل‌های قبلی، دستوراتی که از یک فایل حاوی دستورات شل اجرا می‌شوند به‌طور پیش‌فرض به متن دستورات دسترسی ندارند؛ بلکه آن‌ها ورودی استاندارد اولیهٔ شل را دریافت می‌کنند. برای ارائهٔ داده‌های درون‌خطی (inline) باید از سازوکار .Ql << استفاده شود. این امر به اسکریپت‌های دستوریِ شل اجازه می‌دهد تا به‌عنوان مؤلفه‌های پایپ‌لاین‌ها عمل کنند و به شل امکان می‌دهد ورودی خود را به‌صورت بلوکی بخواند. توجه داشته باشید که ورودی استاندارد پیش‌فرض برای دستوری که به‌صورت مجزا (detached) اجرا می‌شود، فایل خالی .Pa /dev/null .Em نیست ، بلکه ورودی استاندارد اولیهٔ شل است. اگر این ورودی یک ترمینال باشد و فرایند تلاش کند از ترمینال بخواند، فرایند مسدود (block) شده و به کاربر اطلاع داده خواهد شد (بخش .Sx Jobs را ببینید). .Pp خروجی خطایابی (diagnostic) می‌تواند همراه با خروجی استاندارد از طریق یک پایپ هدایت شود. کافی است به‌جای .Ql | تنها، از شکل .Ql |& استفاده کنید. .Pp شل در حال حاضر نمی‌تواند خروجی خطایابی را بدون تغییر مسیر خروجی استاندارد، بازهدایت کند، اما .Dl \&( Ar command Li > Ar output-file Li ) >& Ar error-file اغلب یک راهکار جایگزین قابل قبول است. هر یک از .Ar output-file یا .Ar error-file می‌تواند .Pa /dev/tty باشد تا خروجی به ترمینال ارسال شود. . .Ss ویژگی‌ها (Features) پس از شرح چگونگی دریافت، تجزیه و اجرای خطوط فرمان توسط شل، اکنون به بررسی انواع گوناگونی از ویژگی‌های سودمند آن می‌پردازیم. . .Ss جریان کنترل (Control flow) شل شامل تعدادی دستور است که می‌توان از آن‌ها برای تنظیم جریان کنترل در فایل‌های دستوری (اسکریپت‌های شل) و (به روش‌هایی محدود اما مفید) از طریق ورودی ترمینال استفاده کرد. عملکرد تمامی این دستورات از طریق وادار کردن شل به بازخوانی یا پرش در ورودی‌اش صورت می‌پذیرد و به دلیل نحوهٔ پیاده‌سازی، محل قرارگیری برخی از دستورات را محدود می‌کند. .Pp دستورهای .Ic foreach ، .Ic switch و .Ic while ، و همچنین ساختار .Ic if \&... then \&... else از دستور .Ic if ، نیازمند آن هستند که کلمات کلیدی اصلی در یک خط ورودی واحد به صورت یک دستور ساده ظاهر شوند، همان‌طور که در ادامه نشان داده شده است. .Pp اگر ورودی پوسته قابل جستجو .Pq seekable نباشد، پوسته هنگام خواندن یک حلقه ورودی را بافر می‌کند و به منظور بازخوانی لازم برای حلقه، عملیات جستجو .Pq seek را در این بافر داخلی انجام می‌دهد. (تا جایی که این سازوکار اجازه دهد، دستورهای .Ic goto Ns ی رو به عقب بر روی ورودی‌های غیرقابل‌جستجو با موفقیت عمل خواهند کرد.) . .Ss عبارت‌ها (Expressions) دستورهای توکار .Ic if ، .Ic while و .Ic exit از عبارت‌هایی با نحو یکسان استفاده می‌کنند. این عبارت‌ها می‌توانند شامل هر یک از عملگرهای توصیف‌شده در سه بخش بعدی باشند. توجه داشته باشید که دستور توکار .Ic @ دارای نحو جداگانه و مختص به خود است. . .Ss عملگرهای منطقی، حسابی و مقایسه‌ای این عملگرها مشابه عملگرهای زبان C هستند و تقدم یکسانی دارند. .Pp عملگرها به ترتیب تقدم نزولی، با اولویت یکسان در هر خط، عبارتند از: . .Bl -column -offset indent ".Li <<" ".Li >>" ".Li <<" ".Li >>" .It Li \&( Ta Li \&) Ta Ta .It Li \&~ Ta Ta Ta .It Li \&! Ta Ta Ta .It Li * Ta Li / Ta Li % Ta .It Li + Ta Li \- Ta Ta .It Li << Ta Li >> Ta Ta .It Li <= Ta Li >= Ta Li < Ta Li > .It Li == Ta Li \&!= Ta Li =~ Ta Li \&!~ .It Li & Ta Ta Ta .It Li ^ Ta Ta Ta .It Li \&| Ta Ta Ta .It Li && Ta Ta Ta .It Li || Ta Ta Ta .El .Pp عملگرهای .Ql == ، .Ql \&!= ، .Ql =~ و .Ql \&!~ آرگومان‌های خود را به‌صورت رشته مقایسه می‌کنند؛ تمامی عملگرهای دیگر روی اعداد عمل می‌کنند. عملگرهای .Ql =~ و .Ql \&!~ مانند .Ql == و .Ql \&!= هستند، با این تفاوت که سمت راست یک الگوی glob است (بخش .Sx جایگزینی نام فایل را ببینید) که عملوند سمت چپ با آن مطابقت داده می‌شود. این امر نیاز به استفاده از دستور توکار .Ic switch را در اسکریپت‌های شل، هنگامی که تنها به تطبیق الگو نیاز است، کاهش می‌دهد. .Pp آرگومان‌های تهی یا ناموجود برابر با .Ql 0 در نظر گرفته می‌شوند. نتیجه تمام عبارات به‌صورت رشته‌هایی است که نشان‌دهنده اعداد ده‌دهی هستند. توجه به این نکته حائز اهمیت است که هیچ دو مولفه‌ای از یک عبارت نمی‌توانند در یک کلمه یکسان ظاهر شوند؛ به جز در مواردی که در مجاورت مولفه‌هایی از عبارات باشند که از نظر نحوی برای تجزیه‌کننده اهمیت دارند .Po .Ql \&& ، .Ql | ، .Ql < ، .Ql > ، .Ql \&( ، .Ql \&) .Pc باید با فاصله‌ها احاطه شوند. . .Ss وضعیت خروج دستور دستورها می‌توانند درون عبارت‌ها اجرا شوند و وضعیت خروج آن‌ها با قرار دادنشان میان دو آکولاد .Po .Ql { و .Ql } .Pc بازگردانده شود. به خاطر داشته باشید که آکولادها باید با فاصله از کلماتِ دستور جدا شوند. اجرای دستور در صورتی با موفقیت انجام می‌شود و مقدار درست، یعنی .Ql 1 را برمی‌گرداند، که خروج دستور با وضعیت 0 باشد، در غیر این صورت با شکست مواجه شده و مقدار نادرست، یعنی .Ql 0 را برمی‌گرداند. اگر به اطلاعات دقیق‌تری از وضعیت خروج نیاز باشد، دستور باید خارج از یک عبارت اجرا شده و متغیر پوستهٔ .Ic status بررسی گردد. . .Ss عملگرهای پرس‌وجوی فایل برخی از این عملگرها آزمون‌های درست/نادرست را روی فایل‌ها و اشیاء مرتبط انجام می‌دهند. آن‌ها به شکل .Fl Ar op file هستند، که در آن .Fl Ar op یکی از موارد زیر است: .Pp .Bl -tag -width ".Fl P Ns Ar mode Ns Li \&:" -offset indent -compact .It Fl op .Sy عملگر پرس‌وجوی درست/نادرست فایل .Pp . .It Fl r دسترسی خواندن. . .It Fl w دسترسی نوشتن. . .It Fl x دسترسی اجرا. . .It Fl X قابل‌اجرا در path یا دستور توکار پوسته، برای نمونه .Ql \-X ls و .Ql \-X ls\-F معمولاً درست هستند، اما .Ql \-X /bin/ls این‌طور نیست. (+) . .It Fl e موجود بودن. . .It Fl o مالکیت. . .It Fl z اندازه صفر. . .It Fl s اندازه غیرصفر. (+) . .It Fl f فایل عادی. . .It Fl d دایرکتوری. . .It Fl l پیوند نمادین (Symbolic link). (+) * . .It Fl b فایل ویژه بلوکی (Block special file). (+) . .It Fl c فایل ویژه نویسه‌ای (Character special file). (+) . .It Fl p پایپ نام‌گذاری‌شده (fifo). (+) * . .It Fl S فایل ویژه سوکت (Socket special file). (+) * . .It Fl u بیت Set-user-ID تنظیم شده است. (+) . .It Fl g بیت Set-group-ID تنظیم شده است. (+) . .It Fl k بیت چسبنده (Sticky bit) تنظیم شده است. (+) . .It Fl t .Ar file (که باید یک رقم باشد) یک توصیف‌گر فایل باز برای یک دستگاه ترمینال است. (+) . .It Fl R انتقال یافته است (فقط در Convex). (+) . .It Fl L عملگرهای بعدی در یک آزمون چندعملگری را به جای فایلی که پیوند به آن اشاره می‌کند، بر روی خود پیوند نمادین اعمال می‌کند. (+) * . .El .Pp .Ar file از نظر دستور و نام فایل بسط داده می‌شود و سپس بررسی می‌گردد تا مشخص شود آیا رابطه مشخص‌شده با کاربر واقعی را دارد یا خیر. اگر .Ar file وجود نداشته باشد یا غیرقابل دسترسی باشد، یا در مورد عملگرهایی که با .Sq * مشخص شده‌اند، نوع فایل مشخص‌شده در سیستم فعلی وجود نداشته باشد، آنگاه همه پرس‌وجوها مقدار نادرست یعنی .Ql 0 را برمی‌گردانند. .Pp این عملگرها را می‌توان برای اختصار ترکیب کرد: .Dl Fl Ns Ar xy file معادل است با .Dl Fl Ar x file Li && Fl Ar y file (+) برای نمونه، .Ql \-fx برای فایل‌های اجرایی معمولی درست است (مقدار .Ql 1 را برمی‌گرداند)، اما برای دایرکتوری‌ها چنین نیست. .Pp .Fl L می‌تواند در یک آزمون چندعملگری استفاده شود تا عملگرهای بعدی به‌جای فایلی که پیوند به آن اشاره می‌کند، بر روی یک پیوند نمادین (symbolic link) اعمال شوند. به عنوان مثال، .Fl lLo برای پیوندهایی که مالک آن‌ها کاربر فراخواننده است، درست (true) است. .Fl Lr ، .Fl Lw و .Fl Lx همواره برای پیوندها درست و برای غیرپیوندها نادرست هستند. .Fl L هنگامی که آخرین عملگر در یک آزمون چندعملگری باشد معنای متفاوتی دارد؛ پایین‌تر را ببینید. .Pp ترکیب کردن عملگرهایی که انتظار دارند .Ar file یک فایل باشد با عملگرهایی که چنین انتظاری ندارند (مانند .Fl X و .Fl t ) امکان‌پذیر است اما کاربردی ندارد و گاهی گمراه‌کننده است. آوردن یک عملگر غیرفایلی پس از .Fl L می‌تواند نتایج به‌ویژه عجیبی به دنبال داشته باشد. .Pp عملگرهای دیگر اطلاعات دیگری را بازمی‌گردانند، یعنی نه فقط .Ql 0 یا .Ql 1 . (+) آن‌ها همان قالب قبلی را دارند؛ .Fl Ar op می‌تواند یکی از موارد زیر باشد: .Pp .Bl -tag -width ".Fl P Ns Ar mode Ns Li \&:" -offset indent -compact .It Fl op .Sy عملگر پرس‌وجوی فایل گسترش‌یافته .Pp . .It Fl A زمان آخرین دسترسی به فایل، به صورت تعداد ثانیه‌های سپری‌شده از مبدأ تاریخ (epoch). . .It Fl A\&: مانند .Ql A ، اما در قالب برچسب زمانی (timestamp)، برای نمونه، .Sq Fri May 14 16:36:10 1993 . . .It Fl M زمان آخرین تغییر فایل. . .It Fl M\&: مانند .Fl M ، اما در قالب برچسب زمان (timestamp). . .It Fl C زمان آخرین تغییر inode. . .It Fl C\&: مانند .Fl C ، اما در قالب برچسب زمان (timestamp). . .It Fl D شماره دستگاه (Device number). . .It Fl I شماره inode. . .It Fl F شناسه ترکیبی .Fl f Ns ile، به فرم .Ar device : Ns .Ar inode . . .It Fl L نام فایلی که یک پیوند نمادین (symbolic link) به آن اشاره دارد. . .It Fl N تعداد پیوندهای سخت (hard links). . .It Fl P مجوزها، در مبنای هشت (اکتال)، بدون صفر آغازین. . .It Fl P\&: مانند .Fl P ، با صفر آغازین. . .It Fl P Ns Ar mode معادل است با .Dl Fl P Ar file Li & Ar mode به عنوان مثال، .Ql \-P22 Ar file مقدار .Sq 22 را بازمی‌گرداند اگر .Ar file توسط گروه و دیگران قابل نوشتن باشد، .Sq 20 را بازمی‌گرداند اگر تنها توسط گروه باشد، و .Sq 0 را بازمی‌گرداند اگر توسط هیچ‌کدام نباشد. . .It Fl P Ns Ar mode Ns Li \&: مانند .Fl P Ns Ar mode ، همراه با صفر در ابتدا. . .It Fl U شناسه عددی کاربر (userid). . .It Fl U\&: نام کاربری، یا در صورت ناشناخته بودن نام کاربری، شناسه عددی کاربر. . .It Fl G شناسه عددی گروه (groupid). . .It Fl G\&: نام گروه، یا در صورت ناشناخته بودن نام گروه، شناسه عددی گروه. . .It Fl Z اندازه، به بایت. . .El .Pp تنها یکی از این عملگرها می‌تواند در یک آزمون چندعملگری ظاهر شود، و حتماً باید آخرین عملگر باشد. توجه داشته باشید که .Ql L در پایان یک آزمون چندعملگری نسبت به جاهای دیگر آن معنای متفاوتی دارد. از آنجا که .Sq 0 یک مقدار بازگشتی معتبر برای بسیاری از این عملگرها است، آن‌ها در زمان شکست .Sq 0 را برنمی‌گردانند: اکثر آن‌ها .Sq \-1 را برمی‌گردانند، و .Ql F مقدار .Ql \&: را برمی‌گرداند. .Pp اگر شل با تعریف POSIX کامپایل شده باشد (متغیر شل .Ic version را ببینید)، نتیجه پرس‌وجوی فایل بر پایه بیت‌های مجوز فایل است و نه بر پایه نتیجه فراخوانی سیستمی .Xr access 2 . برای نمونه، اگر فایلی با .Fl w آزموده شود که مجوزهای آن به‌طور معمول اجازه نوشتن می‌دهند اما روی یک سیستم فایل که به‌صورت فقط‌خواندنی مونت شده قرار دارد، این آزمون در یک شل POSIX موفق خواهد بود اما در یک شل غیر-POSIX شکست می‌خورد. .Pp عملگرهای پرس‌وجوی فایل همچنین می‌توانند با دستور توکار .Ic filetest ارزیابی شوند (+). . .Ss "کارها (Jobs)" پوسته به هر خط لوله (pipeline) یک .Ar job (کار) اختصاص می‌دهد. این پوسته جدولی از کارهای جاری نگه می‌دارد که توسط دستور .Ic jobs چاپ می‌شود، و به آن‌ها اعداد صحیح کوچکی اختصاص می‌دهد. هنگامی که یک کار به‌صورت غیرهمگام (asynchronously) با .Ql & آغاز می‌شود، پوسته خطی را چاپ می‌کند که بدین شکل است: .Bd -literal -offset indent [1] 1234 .Ed .Pp که نشان می‌دهد کاری که به‌صورت غیرهمگام آغاز شده، کار شماره ۱ بوده و دارای یک پروسه (سطح بالا) بوده که شناسه پروسه (PID) آن ۱۲۳۴ است. .Pp اگر در حال اجرای یک کار هستید و می‌خواهید کار دیگری انجام دهید، می‌توانید کلید تعلیق (معمولاً .Ic ^Z ) را فشار دهید که یک سیگنال STOP به کار جاری ارسال می‌کند. سپس پوسته معمولاً اعلام می‌کند که کار .Dl Suspended (معلق) شده است و اعلان (prompt) دیگری را چاپ می‌کند. اگر متغیر پوسته .Ic listjobs تنظیم شده باشد، همه کارها مشابه دستور توکار .Ic jobs فهرست می‌شوند؛ اگر روی .Ql long تنظیم شده باشد، فهرست‌بندی در قالب طولانی خواهد بود، مانند .Ql jobs \-l . سپس می‌توانید وضعیت کار معلق را مدیریت کنید. می‌توانید آن را با دستور .Ic bg به .Dq پس‌زمینه بفرستید یا دستورهای دیگری را اجرا کنید و در نهایت با .Ic fg کار را دوباره به .Dq پیش‌زمینه بیاورید. (دستور ویرایشگر .Ic run-fg-editor را نیز ببینید.) یک .Ic ^Z فوراً اثر می‌گذارد و شبیه به یک وقفه است از این نظر که خروجی‌های در انتظار و ورودی‌های خوانده‌نشده هنگام فشرده شدن آن دور ریخته می‌شوند. دستور توکار .Ic wait باعث می‌شود پوسته تا زمان اتمام تمام کارهای پس‌زمینه منتظر بماند. .Pp کلید .Ic ^] یک سیگنال تعلیق با تاخیر به کار فعلی می‌فرستد، که تا زمانی که برنامه سعی در .Xr read 2 کردن آن نداشته باشد، سیگنال STOP ایجاد نمی‌کند. این ویژگی در زمانی که دستوراتی را برای یک کار از پیش آماده کرده‌اید و می‌خواهید پس از خواندن آن‌ها متوقف شود، می‌تواند مفید واقع شود. کلید .Ic ^Y این عملکرد را در .Xr csh 1 انجام می‌دهد؛ در .Nm ، کلید .Ic ^Y یک دستور ویرایشی است. (+) .Pp کاری که در پس‌زمینه اجرا می‌شود در صورت تلاش برای خواندن از ترمینال، متوقف می‌گردد. کارهای پس‌زمینه به طور معمول مجاز به تولید خروجی هستند، اما این امکان می‌تواند با اجرای دستور زیر غیرفعال شود: .Dl stty tostop اگر این گزینه tty را تنظیم کنید، کارهای پس‌زمینه هنگامی که سعی در تولید خروجی دارند، همانند زمان تلاش برای خواندن ورودی متوقف خواهند شد. .Pp روش‌های متعددی برای ارجاع به کارها در پوسته وجود دارد. نویسه .Ql % نام یک کار را معرفی می‌کند. اگر می‌خواهید به کار شماره ۱ اشاره کنید، می‌توانید آن را به این صورت نام ببرید: .Dl %1 تنها نام بردن از یک کار، آن را به پیش‌زمینه می‌آورد؛ بنابراین .Dl %1 مترادفی برای .Dl fg %1 است که کار ۱ را دوباره به پیش‌زمینه منتقل می‌کند. به همین ترتیب، تایپ کردن .Dl %1 & کار ۱ را در پس‌زمینه از سر می‌گیرد، درست مانند .Dl bg %1 همچنین می‌توان یک کار را با یک پیشوند یکتا از رشته‌ای که برای شروع آن تایپ شده نام‌گذاری کرد: .Dl %ex به طور معمول کار معلق .Xr ex 1 را مجدداً راه‌اندازی می‌کند، به شرطی که تنها یک کار معلق وجود داشته باشد که نام آن با رشته .Ql ex شروع شود. همچنین امکان تایپ کردن .Dl %? Ns Ar string وجود دارد تا کاری را مشخص کند که متن آن شامل .Ar string باشد، مشروط بر این‌که فقط یک کار از این دست وجود داشته باشد. .Pp پوسته مفهومی از جاب‌های فعلی و قبلی را نگهداری می‌کند. در خروجی‌های مربوط به جاب‌ها، جاب فعلی با یک .Ql + و جاب قبلی با یک .Ql \- مشخص می‌شوند. مخفف‌های .Ql %+ ، .Ql % و (با قیاس از ساختار نحو مکانیزم .Ic history ) .Ql %% همگی به جاب فعلی، و .Ql %\- به جاب قبلی اشاره دارند. .Pp مکانیزم کنترل جاب نیازمند این است که در برخی سیستم‌ها، گزینه .Ql new در .Xr stty 1 تنظیم شده باشد. این ویژگی اثری به‌جامانده از پیاده‌سازی .Dq new در درایور tty است که اجازه می‌دهد نویسه‌های وقفه (interrupt) از صفحه‌کلید تولید شوند تا به جاب‌ها دستور توقف دهند. برای جزئیات بیشتر در مورد تنظیم گزینه‌ها در درایور جدید tty، .Xr stty 1 و دستور توکار .Ic setty را ببینید. . .Ss گزارش وضعیت (Status reporting) پوسته بلافاصله پس از تغییر وضعیت هر پردازه، از آن مطلع می‌شود. این پوسته به طور معمول هرگاه جابی مسدود شود و امکان پیشرفت دیگری وجود نداشته باشد شما را آگاه می‌سازد، اما این کار تنها درست پیش از نمایش خط فرمان (prompt) انجام می‌شود. این شیوه به این دلیل است که مزاحم کار شما نشود. با این حال، اگر متغیر پوسته .Ic notify را تنظیم کنید، پوسته شما را بلافاصله از تغییرات وضعیت جاب‌های پس‌زمینه مطلع خواهد کرد. همچنین یک دستور توکار به نام .Ic notify وجود دارد که یک پردازه واحد را علامت‌گذاری می‌کند تا تغییرات وضعیت آن بلافاصله گزارش شود. به طور پیش‌فرض، .Ic notify پردازه فعلی را علامت‌گذاری می‌کند؛ برای علامت‌گذاری جاب پس‌زمینه جهت گزارش فوری وضعیت، کافی است پس از شروع آن عبارت .Dl notify را وارد کنید. .Pp هنگامی که تلاش می‌کنید در حین وجود کارهای متوقف‌شده از شل خارج شوید، این هشدار را دریافت خواهید کرد: .Dl There are suspended jobs\&. .Pp می‌توانید از دستور .Ic jobs برای مشاهده آن‌ها استفاده کنید. اگر این کار را انجام دهید یا بلافاصله دوباره برای خروج تلاش کنید، شل برای بار دوم به شما هشدار نخواهد داد، و کارهای تعلیق‌شده خاتمه داده خواهند شد. . .Ss رویدادهای خودکار، دوره‌ای و زمان‌بندی‌شده (+) روش‌های گوناگونی برای اجرای خودکار دستورها و انجام سایر اقدامات در زمان‌های مختلفی از .Dq چرخه حیات شل وجود دارد. این روش‌ها در اینجا به طور خلاصه آورده شده‌اند، و با جزئیات کامل در بخش‌های مناسب .Sx دستورهای توکار (Builtin commands) , .Sx متغیرهای ویژه شل (Special shell variables) , و .Sx نام‌های مستعار ویژه (+) (Special aliases (+)) شرح داده شده‌اند. .Pp دستور توکار .Ic sched دستورها را در یک فهرست رویدادهای زمان‌بندی‌شده قرار می‌دهد تا در یک زمان مشخص توسط شل اجرا شوند. .Pp .Sx نام‌های مستعار ویژه (+) (Special aliases (+)) شامل .Ic beepcmd , .Ic cwdcmd , .Ic jobcmd , .Ic periodic , .Ic precmd , و .Ic postcmd می‌توانند به ترتیب برای اجرای دستورها تنظیم شوند: هنگامی که شل می‌خواهد زنگ اخطار را به صدا درآورد، هنگامی که دایرکتوری کاری تغییر می‌کند، هنگامی که یک کار آغاز می‌شود یا به پیش‌زمینه آورده می‌شود، هر .Ic tperiod دقیقه، پیش از نمایش هر پرامپت، و پیش از اینکه هر دستور اجرا شود. .Pp متغیر شل .Ic autologout می‌تواند طوری تنظیم شود که پس از تعداد دقایق مشخصی از عدم فعالیت، از سیستم خارج شده یا شل را قفل کند. .Pp متغیر شل .Ic mail می‌تواند طوری تنظیم شود که به‌طور دوره‌ای ایمیل‌های جدید را بررسی کند. .Pp متغیر شل .Ic printexitvalue می‌تواند برای چاپ وضعیت خروج دستوراتی که با وضعیتی غیر از صفر خارج می‌شوند، تنظیم گردد. .Pp متغیر شل .Ic rmstar می‌تواند تنظیم شود تا هنگامی که .Dl rm * تایپ می‌شود، از کاربر سؤال کند که آیا واقعاً چنین قصدی داشته است یا خیر. .Pp متغیر شل .Ic time می‌تواند به گونه‌ای تنظیم شود که پس از اتمام هر پردازشی که بیش از تعداد ثانیه‌های مشخصی از پردازنده (CPU) زمان برده است، دستور درونی .Ic time را اجرا کند. .Pp متغیرهای شل .Ic watch و .Ic who می‌توانند طوری تنظیم شوند که ورود یا خروج کاربران انتخاب‌شده را گزارش دهند، و دستور درونی .Ic log وضعیت آن کاربران را در هر لحظه گزارش می‌کند. . .Ss "پشتیبانی از سیستم زبان محلی (NLS) (+)" این شل هشت-بیتی پاک (8-bit clean) است (در صورتی که این‌گونه کامپایل شده باشد؛ متغیر شل .Ic version را ببینید) و بنابراین از مجموعه‌های کاراکتری که به این قابلیت نیاز دارند، پشتیبانی می‌کند. پشتیبانی NLS بسته به اینکه شل برای استفاده از NLS سیستم کامپایل شده باشد یا خیر متفاوت است (مجدداً، .Ic version را ببینید). در هر صورت، کد کاراکتری پیش‌فرض (مانند دسته‌بندی کاراکترهای قابل‌چاپ) و مرتب‌سازی، اسکیِ ۷-بیتی (7-bit ASCII) است، و تغییر متغیرهای محیطی .Ev LANG یا .Ev LC_CTYPE باعث بررسی تغییرات احتمالی در این زمینه‌ها می‌شود. .Pp هنگام استفاده از NLS سیستم، تابع .Xr setlocale 3 برای تعیین کدگذاری/دسته‌بندی نویسه‌ها و ترتیب مرتب‌سازی مناسب فراخوانی می‌شود (برای نمونه، .Sq en_CA.UTF-8 منجر به تعیین .Sq UTF-8 به‌عنوان کدگذاری نویسه خواهد شد). این تابع معمولاً متغیرهای محیطی .Ev LANG و .Ev LC_CTYPE را بررسی می‌کند؛ برای جزئیات بیشتر به مستندات سیستم مراجعه کنید. هنگامی که از NLS سیستم استفاده نمی‌شود، شل با فرض این‌که مجموعه نویسه‌های ISO 8859-1 استفاده می‌شود، در صورت تنظیم بودن هر یک از متغیرهای .Ev LANG یا .Ev LC_CTYPE (صرف‌نظر از مقدار آن‌ها)، آن را شبیه‌سازی می‌کند. مرتب‌سازی تحت تأثیر NLS شبیه‌سازی‌شده قرار نمی‌گیرد. .Pp علاوه بر این، چه با NLS واقعی و چه شبیه‌سازی‌شده، تمام نویسه‌های قابل چاپ در بازه \e200\-\e377، یعنی آن‌هایی که دارای نگاشت‌های .Ic M- Ns Ar char هستند، به‌طور خودکار دوباره به .Ic self-insert-command متصل می‌شوند. نگاشت مربوط به توالی .No escape- Ns Ar char (در صورت وجود) دست‌نخورده باقی می‌ماند. اگر متغیر محیطی .Ev NOREBIND تنظیم شده باشد، این نویسه‌ها دوباره نگاشت نمی‌شوند. این ویژگی ممکن است برای NLS شبیه‌سازی‌شده یا یک NLS واقعی ابتدایی که تمام ISO 8859-1 را فرض می‌کند، مفید باشد. در غیر این صورت، تمام نگاشت‌های .Ic M- Ns Ar char در بازه \e240\-\e377 عملاً لغو می‌شوند. البته بازنگاشت صریح کلیدهای مربوطه با .Ic bindkey همچنان امکان‌پذیر است. .Pp نویسه‌های ناشناخته (یعنی آن‌هایی که نه قابل چاپ هستند و نه نویسه کنترلی) در قالب \ennn چاپ می‌شوند. اگر tty در حالت 8 بیتی نباشد، سایر نویسه‌های 8 بیتی با تبدیل شدن به ASCII و با استفاده از حالت standout چاپ می‌شوند. شل هرگز حالت 7/8 بیتی tty را تغییر نمی‌دهد و تغییرات اعمال‌شده توسط کاربر روی حالت 7/8 بیتی را دنبال می‌کند. کاربران NLS (یا کسانی که قصد استفاده از کلید meta را دارند) ممکن است نیاز داشته باشند tty را از طریق دستور مناسب .Xr stty 1 برای نمونه در فایل .Pa ~/.login به‌طور صریح در حالت 8 بیتی تنظیم کنند. . .Ss پشتیبانی از انواع مختلف سیستم‌عامل (+) تعدادی دستور توکار جدید جهت پشتیبانی از قابلیت‌ها در سیستم‌عامل‌های خاص ارائه شده است. همه آن‌ها با جزئیات در بخش .Sx دستورهای توکار (Builtin commands) شرح داده شده‌اند. .Pp در سیستم‌هایی که از TCF پشتیبانی می‌کنند (aix-ibm370, aix-ps2)، دستورهای .Ic getspath و .Ic setspath مسیر اجرای سیستم را دریافت و تنظیم می‌کنند، .Ic getxvers و .Ic setxvers پیشوند نگارش آزمایشی را دریافت و تنظیم می‌نمایند و .Ic migrate فرایندها را بین سایت‌ها جابه‌جا می‌کند. دستور توکار .Ic jobs سایتی را که هر شغل در آن در حال اجراست چاپ می‌کند. .Pp در BS2000، دستور .Ic bs2cmd دستورات سیستم‌عامل پایه‌ای BS2000/OSD را اجرا می‌کند. .Pp در Domain/OS، دستور .Ic inlib کتابخانه‌های اشتراکی را به محیط فعلی اضافه می‌کند، .Ic rootnode گره ریشه (rootnode) را تغییر می‌دهد و .Ic ver نوع سیستم (systype) را عوض می‌کند. .Pp در Mach، دستور .Ic setpath معادل .Xr setpath 1 در Mach است. .Pp در Masscomp/RTU و Harris CX/UX، دستور .Ic universe جهان (universe) را تنظیم می‌کند. .Pp در Harris CX/UX، دستور .Ic ucb یا .Ic att دستوری را در universe مشخص‌شده اجرا می‌کند. .Pp در Convex/OS، دستور .Ic warp جهان (universe) را چاپ یا تنظیم می‌کند. .Pp متغیرهای محیطی .Ev VENDOR ، .Ev OSTYPE و .Ev MACHTYPE به ترتیب نشان‌دهنده فروشنده، سیستم‌عامل و نوع ماشین (کلاس ریزپردازنده یا مدل ماشین) سیستمی هستند که پوسته تصور می‌کند بر روی آن در حال اجرا است. این‌ها به‌ویژه هنگام به اشتراک گذاشتن دایرکتوری خانگی میان چندین نوع ماشین مختلف مفید هستند؛ برای نمونه، می‌توان .Bd -literal -offset indent set path = (~/bin.$MACHTYPE /usr/ucb /bin /usr/bin .) .Ed .Pp را در فایل .Pa ~/.login خود قرار داد و فایل‌های اجرایی کامپایل‌شده برای هر ماشین را در دایرکتوری مناسب ذخیره کرد. .Pp متغیر پوسته‌ای .Ic version نشان می‌دهد که هنگام کامپایل پوسته، چه گزینه‌هایی انتخاب شده‌اند. .Pp همچنین به دستور توکار .Ic newgrp ، متغیرهای پوسته‌ای .Ic afsuser و .Ic echo_style و مکان‌های وابسته به سیستم فایل‌های ورودی پوسته توجه کنید (بخش .Sx "فایل‌ها (FILES)" را ببینید). . .Ss "مدیریت سیگنال‌ها (Signal handling)" پوسته‌های لاگین هنگام خواندن فایل .Pa ~/.logout وقفه‌ها (interrupts) را نادیده می‌گیرند. پوسته سیگنال‌های خروج (quit signals) را نادیده می‌گیرد، مگر اینکه با گزینه .Fl q شروع شده باشد. پوسته‌های لاگین سیگنال خاتمه (terminate signal) را دریافت و کنترل می‌کنند، اما پوسته‌های غیرلاگین رفتار خاتمه را از والدین خود به ارث می‌برند. سایر سیگنال‌ها مقادیری دارند که پوسته از والد خود به ارث برده است. .Pp در اسکریپت‌های پوسته، مدیریت سیگنال‌های وقفه و خاتمه توسط پوسته را می‌توان با دستور .Ic onintr کنترل کرد، و مدیریت قطع ارتباط (hangups) را می‌توان با .Ic hup و .Ic nohup کنترل نمود. .Pp پوسته با دریافت سیگنال قطع ارتباط (hangup) خارج می‌شود (همچنین متغیر پوسته‌ای .Ic logout را ببینید). به‌طور پیش‌فرض، فرزندان پوسته نیز خارج می‌شوند، اما پوسته هنگام خروج خود برای آن‌ها سیگنال قطع ارتباط ارسال نمی‌کند. دستور .Ic hup ترتیبی می‌دهد که پوسته هنگام خروج، به یک فرزند سیگنال قطع ارتباط ارسال کند، و دستور .Ic nohup فرزند را طوری تنظیم می‌کند که سیگنال‌های قطع ارتباط را نادیده بگیرد. . .Ss "مدیریت ترمینال (+)" پوسته از سه مجموعه حالت مختلف برای ترمینال .Dq ( tty ) استفاده می‌کند: حالت .Sq edit که هنگام ویرایش استفاده می‌شود؛ حالت .Sq quote که هنگام نقل‌قول نویسه‌های دقیق (literal) استفاده می‌شود؛ و حالت .Sq execute که هنگام اجرای دستورها به کار می‌رود. پوسته برخی از تنظیمات را در هر حالت ثابت نگه می‌دارد، تا دستورهایی که tty را در وضعیتی آشفته رها می‌کنند با عملکرد پوسته تداخلی نداشته باشند. پوسته همچنین تغییرات در سرعت و فاصله‌گذاری (padding) ترمینال tty را همگام می‌سازد. فهرست حالت‌های tty که ثابت نگه داشته می‌شوند را می‌توان با دستور توکار .Ic setty مشاهده و ویرایش کرد. توجه داشته باشید که گرچه ویرایشگر از حالت CBREAK (یا معادل آن) استفاده می‌کند، اما در هر صورت نویسه‌های از‌پیش‌تایپ‌شده (typed-ahead) را دریافت می‌نماید. .Pp دستورهای .Ic echotc ، .Ic settc و .Ic telltc می‌توانند برای دستکاری و اشکال‌زدایی قابلیت‌های ترمینال از طریق خط فرمان استفاده شوند. .Pp در سیستم‌هایی که از SIGWINCH یا SIGWINDOW پشتیبانی می‌کنند، پوسته به‌طور خودکار با تغییر اندازه پنجره سازگار شده و متغیرهای محیطی .Ev LINES و .Ev COLUMNS را در صورت تنظیم بودن به‌روزرسانی می‌کند. اگر متغیر محیطی .Ev TERMCAP حاوی فیلدهای .Ql li# و .Ql co# باشد، پوسته آن‌ها را برای بازتاب اندازه جدید پنجره تنظیم می‌کند. . .Sh "مرجع (REFERENCE)" بخش‌های بعدی این راهنما به توصیف تمامی .Sx دستورات داخلی (Builtin commands) ، .Sx نام‌های مستعار ویژه (+) (Special aliases) ، و .Sx متغیرهای شل ویژه (Special shell variables) موجود می‌پردازند. . .Ss "دستورات داخلی (Builtin commands)" . .Bl -tag -width 6n . .It Ic % Ns Ar job مترادفی برای دستور داخلی .Ic fg . . .It Ic % Ns Ar job Cm \&& مترادفی برای دستور داخلی .Ic bg . . .It Ic \&: هیچ کاری انجام نمی‌دهد، با موفقیت. . .El .Pp .Bl -tag -width 6n -compact . .It Ic @ .It Ic @ Ar name Cm = Ar expr .It Ic @ Ar name Ns Cm \&[ Ns Ar index Ns Cm \&] = Ar expr .It Ic @ Ar name Ns Cm ++|-- .It Ic @ Ar name Ns Cm \&[ Ns Ar index Ns Cm \&]++|-- حالت اول مقادیر تمام متغیرهای شل را چاپ می‌کند. .Pp حالت دوم مقدار .Ar expr را به .Ar name اختصاص می‌دهد. .Pp حالت سوم مقدار .Ar expr را به مؤلفهٔ .Ar index Ns -اُم از .Ar name اختصاص می‌دهد؛ هم .Ar name و هم مؤلفهٔ .Ar index Ns -اُم آن باید از قبل وجود داشته باشند. .Pp شناسهٔ .Ar expr می‌تواند حاوی عملگرهایی مانند .Ql * ، .Ql + و غیره، مشابه با زبان C باشد. اگر .Ar expr شامل .Ql < ، .Ql > ، .Ql & یا .Ql \&| باشد، در این صورت دست‌کم آن بخش از .Ar expr باید میان .Ql ( و .Ql ) قرار گیرد. توجه داشته باشید که نحو .Ar expr هیچ ارتباطی با ساختار شرح داده شده در .Sx Expressions ندارد. .Pp فرم‌های چهارم و پنجم مقدار .Ar name یا جزء .Ar index Ns ام آن را افزایش .Pq Sq Cm ++ یا کاهش .Pq Sq Cm -- می‌دهند. .Pp فاصله میان .Sq Ic @ و .Ar name الزامی است. فاصله‌های میان .Ar name و .Sq Cm = و همچنین بین .Sq Cm = و .Ar expr اختیاری هستند. اجزای .Ar expr باید توسط فاصله (space) از یکدیگر جدا شوند. . .El .Bl -tag -width 6n . .It Ic alias Op Ar name Op Ar wordlist بدون آرگومان، تمام نام‌های مستعار (aliasها) را چاپ می‌کند. .Pp با .Ar name ، نام مستعار مربوط به name را چاپ می‌کند. .Pp با .Ar name و .Ar wordlist ، محتوای .Ar wordlist را به عنوان نام مستعار برای .Ar name تعیین می‌کند. روی .Ar wordlist جایگزینی دستور و نام فایل انجام می‌شود. .Pp مقدار .Ar name نمی‌تواند .Sq Ic alias یا .Sq Ic unalias باشد. همچنین دستور توکار .Ic unalias را ببینید. . .It Ic alloc مقدار حافظه پویای اختصاص‌یافته را به تفکیک حافظه مصرفی و آزاد نمایش می‌دهد. همراه با یک آرگومان، تعداد بلوک‌های آزاد و مصرف‌شده را در هر رده اندازه نشان می‌دهد. اندازه رده‌ها از ۸ شروع شده و در هر گام دو برابر می‌شود. خروجی این دستور ممکن است در انواع سیستم‌ها متفاوت باشد، چرا که سیستم‌های غیر از VAX ممکن است از تخصیص‌دهنده حافظه متفاوتی استفاده کنند. . .It Ic bg Op Cm % Ns Ar job No \&... کارهای مشخص‌شده (یا در صورت عدم وجود آرگومان، کار فعلی) را به پس‌زمینه می‌برد و در صورت متوقف بودن هر یک، اجرای آن‌ها را ادامه می‌دهد. .Ar job می‌تواند یک عدد، یک رشته، .Ql \& ، .Ql % ، .Ql + یا .Ql \- باشد، همان‌گونه که در بخش .Sx Jobs شرح داده شده است. . .El .Pp .Bl -tag -width 6n -compact . .It Ic bindkey Oo Fl l Ns | Ns Fl d Ns | Ns Fl e Ns | Ns Fl v Ns | Ns Fl u Oc No (+) .It Ic bindkey Oo Fl a Oc Oo Fl b Oc Oo Fl k Oc Oo Fl r Oc Oo Fl \- Oc Ar key No (+) .It Ic bindkey Oo Fl a Oc Oo Fl b Oc Oo Fl k Oc Oo Fl c Ns | Ns Fl s Oc Oo Fl \- Oc Ar key command No (+) شکل اول یا تمام کلیدهای مقیدشده و دستور ویرایشگری را که هر یک به آن مقید شده‌اند فهرست می‌کند، توضیحی از دستورها را فهرست می‌نماید، یا تمام کلیدها را به یک حالت خاص مقید می‌سازد. .Pp شکل دوم دستور ویرایشگری را فهرست می‌کند که .Ar key به آن مقید شده است. .Pp شکل سوم دستور ویرایشگر .Ar command را به .Ar key مقید می‌کند. .Pp گزینه‌های پشتیبانی‌شدهٔ .Ic bindkey : . .Bl -tag -width ".Sy Option" .It Sy Option .Ic bindkey .Sy description . .It Fl a کلیدهای مقیدشده را در نگاشت کلید جایگزین (alternative key map) فهرست کرده یا تغییر می‌دهد. این همان نگاشت کلیدی است که در حالت دستور .Ic vimode استفاده می‌شود. . .It Fl b .Ar key به‌عنوان یک نویسهٔ کنترلی به‌صورت .Ic ^ Ns Ar character (مانند .Ic ^A ) یا .Ic C- Ns Ar character (مانند .Ic C-A ) ، یک نویسهٔ متا به‌صورت .Ic M- Ns Ar character (مانند .Ic M-A ) ، یک کلید تابعی به‌صورت .Ic F- Ns Ar string (مانند .Ic F-string ) ، یا یک کلید پیشوند گسترش‌یافته به‌صورت .Ic X- Ns Ar character (مانند .Ic X-A ) تفسیر می‌شود. . .It Fl c .Ar command به جای یک دستور ویرایشگر، به عنوان یک دستور توکار یا خارجی تفسیر می‌شود. . .It Fl d همه کلیدها را به نگاشت‌های استاندارد برای ویرایشگر پیش‌فرض پیوند می‌دهد، همان‌طور که در .Fl e و .Fl v آمده است. . .It Fl e همه کلیدها را به نگاشت‌هایی به سبک .Xr emacs 1 پیوند می‌دهد. .Ic vimode را لغو می‌کند. . .It Fl k .Ar key به عنوان نام نمادین یک کلید جهت‌نما تفسیر می‌شود، که می‌تواند یکی از .Sq down ، .Sq up ، .Sq left یا .Sq right باشد. . .It Fl l تمام دستورات ویرایشگر و توضیح کوتاهی از هر یک را فهرست می‌کند. . .It Fl r پیوند .Ar key را حذف می‌کند. مراقب باشید: .Ql bindkey \-r .Ar key را به .Ic self-insert-command پیوند .Em نمی‌دهد ، بلکه پیوند .Ar key را کاملاً لغو می‌کند. . .It Fl s هنگام فشرده شدن .Ar key Ns ، .Ar command به عنوان یک رشته لفظی در نظر گرفته شده و مانند ورودی ترمینال با آن رفتار می‌شود. کلیدهای مقید در .Ar command خودشان دوباره تفسیر می‌شوند، و این عمل تا ده سطح از تفسیر ادامه می‌یابد. . .It Fl u No (یا هر گزینه نامعتبر دیگری) پیام نحوه استفاده (راهنما) را چاپ می‌کند. . .It Fl v تمام کلیدها را با اتصالات به سبک .Xr vi 1 پیوند می‌زند. متغیر .Ic vimode را تنظیم می‌کند. . .It Fl \- پردازش گزینه‌ها را متوقف می‌کند، به‌طوری که کلمه بعدی به عنوان .Ar key در نظر گرفته می‌شود، حتی اگر با .Ql \- شروع شود. . .El .Pp .Ar key می‌تواند یک نویسه منفرد یا یک رشته باشد. اگر دستوری به یک رشته متصل شود، اولین نویسه رشته به .Ic sequence-lead-in متصل شده و کل رشته به دستور متصل می‌شود. .Pp نویسه‌های کنترلی در .Ar key می‌توانند به‌صورت نویسه عینی (literal) باشند (می‌توان آن‌ها را با درج دستور ویرایشگر .Ic quoted-insert قبل از آن‌ها تایپ کرد که معمولاً به .Ic ^V متصل است) یا به سبک نویسه-کَرِت (caret-character) نوشته شوند، مانند .Ic ^A . کلید Delete به‌صورت .Ic ^? (کَرِت-علامت سؤال) نوشته می‌شود. .Ar key و .Ar command می‌توانند حاوی توالی‌های گریز با بک‌اسلش (به سبک .Xr echo 1 در System V) به شرح زیر باشند: . .Bl -tag -width ".Sy Escape" .It Sy گریز .Sy توضیحات . .It Li \ea زنگ (Bell). .It Li \eb Backspace. .It Li \ee Escape. .It Li \ef Form feed. .It Li \en خط جدید (Newline). .It Li \er Carriage return. .It Li \et تب افقی (Horizontal tab). .It Li \ev تب عمودی (Vertical tab). .It Li \e Ns Ar nnn نویسه ASCII متناظر با عدد هشت‌هشتی .Ar nnn . .El .Pp .Ql \e معنای ویژه نویسه بعدی را، در صورت وجود، بی‌اثر می‌کند؛ به‌ویژه .Ql \e و .Ql ^ . . .El .Bl -tag -width 6n . .It Ic bs2cmd Ar bs2000-command No (+) دستور .Ar bs2000-command را برای اجرا به مفسر دستور BS2000 ارسال می‌کند. تنها دستورهای غیرتعاملی قابل اجرا هستند و امکان اجرای هیچ دستوری که تصویر حافظه فرایند فعلی را جایگزین کند، مانند /EXECUTE یا /CALL-PROCEDURE، وجود ندارد. (فقط در BS2000) . .It Ic break باعث ادامه یافتن اجرا پس از .Ic end در نزدیک‌ترین .Ic foreach یا .Ic while دربرگیرنده می‌شود. باقی‌مانده دستورات روی خط فعلی اجرا می‌شوند. بنابراین خروج‌های چندسطحی (Multi-level breaks) با نوشتن همه آنها روی یک خط امکان‌پذیر است. . .It Ic breaksw باعث خروج از یک .Ic switch شده و اجرای دستورات را پس از .Ic endsw ادامه می‌دهد. . .It Ic builtins No (+) نام تمام دستورات توکار را چاپ می‌کند. . .It Ic bye No (+) مترادفی برای دستور توکار .Ic logout . تنها در صورتی در دسترس است که شل با این قابلیت کامپایل شده باشد؛ متغیر شل .Ic version را بررسی کنید. . .It Ic case Ar label Ns Cm \&: یک برچسب در دستور .Ic switch همان‌طور که در ادامه توضیح داده شده است. . .It Ic cd Xo .Op Fl p .Op Fl l .Op Fl n Ns | Ns Fl v .Op Fl \- .Op Ar name .Xc اگر یک دایرکتوری با .Ar name داده شود، دایرکتوری کاری شل را به .Ar name تغییر می‌دهد. در غیر این صورت، به .Ic home تغییر می‌دهد، مگر اینکه متغیر .Ic cdtohome تنظیم نشده باشد، که در این حالت یک .Ar name الزامی خواهد بود. اگر .Ar name برابر با .Ql \- باشد، به عنوان دایرکتوری کاری پیشین تفسیر می‌شود (به بخش .Sx Other substitutions (+) مراجعه کنید). (+) اگر .Ar name یک زیردایرکتوری از دایرکتوری فعلی نباشد (و با .Ql / ، .Ql ./ یا .Ql ../ آغاز نشود)، هر مولفه از متغیر .Ic cdpath بررسی می‌شود تا مشخص شود که آیا دارای زیردایرکتوری .Ar name هست یا خیر. در نهایت، اگر تمام موارد ناموفق بود اما .Ar name یک متغیر شل باشد که مقدار آن با .Ql / یا .Ql \&. شروع می‌شود، بررسی می‌شود که آیا این مقدار یک دایرکتوری است یا خیر، و گزینه .Fl p نیز اعمال می‌شود. .Pp با .Fl p ، پشتهٔ دایرکتوری نهایی را چاپ می‌کند، درست مانند .Ic dirs . فلگ‌های .Fl l ، .Fl n و .Fl v همان اثری را روی .Ic cd دارند که روی .Ic dirs دارند، و آنها به معنای استفادهٔ ضمنی از .Fl p هستند (+). استفاده از .Fl \- باعث توقف پردازش گزینه‌ها می‌شود، بنابراین کلمه بعدی حتی اگر با .Ql \- شروع شود، به عنوان .Ar name دایرکتوری در نظر گرفته می‌شود (+). .Pp همچنین متغیرهای پوستهٔ .Ic implicitcd و .Ic cdtohome را ببینید. . .It Ic chdir مترادفی برای دستور توکار .Ic cd . . .It Ic complete Xo .Oo Ar command .Oo .Sm off .Ar word Cm / Ar pattern Cm / Ar list Oo Cm \&: Ar select Oc Cm / Oo .Op Ar suffix .Cm / .Oc .Sm on \&... .Oc .Oc (+) .Xc بدون آرگومان، تمام تکمیل‌ها (completions) را فهرست می‌کند. .Pp به همراه .Ar command ، کامل‌سازی‌ها را برای .Ar command فهرست می‌کند. .Pp به همراه .Ar command و .Ar word \&...، کامل‌سازی‌ها را تعریف می‌کند. .Pp .Ar command می‌تواند یک نام کامل دستور یا یک الگوی انطباق (glob-pattern) باشد (به .Sx جایگزینی نام فایل (Filename substitution) مراجعه کنید). می‌تواند با .Ql \- شروع شود تا نشان دهد که کامل‌سازی فقط زمانی باید استفاده شود که .Ic command مبهم باشد. .Pp .Ar word مشخص می‌کند که کدام کلمه نسبت به کلمه فعلی باید کامل شود، و می‌تواند یکی از موارد زیر باشد: . .Bl -tag -width ".Li \`...\`" -offset indent .It Ar word .Sy کلمه کامل‌سازی . .It Li c کامل‌سازی کلمه فعلی. .Ar pattern یک الگوی انطباق (glob-pattern) است که باید با ابتدای کلمه فعلی در خط فرمان مطابقت داشته باشد. .Ar pattern هنگام کامل‌سازی کلمه فعلی نادیده گرفته می‌شود. . .It Li C مانند .Ql c ، اما شامل .Ar pattern هنگام کامل‌سازی کلمه فعلی می‌شود. . .It Li n کامل‌سازی کلمه بعدی. .Ar pattern یک الگوی انطباق (glob-pattern) است که باید با ابتدای کلمه قبلی در خط فرمان مطابقت داشته باشد. . .It Li N مانند .Ql n ، اما باید با ابتدای کلمهٔ دوتا قبل از کلمهٔ فعلی مطابقت داشته باشد. . .It Li p تکمیل وابسته به موقعیت. .Ar pattern یک بازهٔ عددی است، با همان نحو به کار رفته برای نمایه‌گذاری متغیرهای shell، که باید کلمهٔ فعلی را شامل شود. .El .Pp .Ar list ، فهرست موارد ممکن برای تکمیل، می‌تواند یکی از مقادیر زیر باشد: . .Bl -tag -width ".Li \`...\`" -offset indent .It Ar list .Sy قلم تکمیل . .It Li a نام‌های مستعار (Aliases). . .It Li b اتصال کلیدها (دستورات ویرایشگر). . .It Li c دستورات (دستورات توکار یا خارجی). . .It Li C دستورات خارجی که با پیشوند مسیر ارائه شده آغاز می‌شوند. . .It Li d دایرکتوری‌ها. . .It Li D دایرکتوری‌هایی که با پیشوند مسیر ارائه شده آغاز می‌شوند. . .It Li e متغیرهای محیطی. . .It Li f نام‌های فایل. . .It Li F نام‌های فایلی که با پیشوند مسیر ارائه شده آغاز می‌شوند. . .It Li g نام‌های گروه. . .It Li j کارها (Jobs). . .It Li l حدود (Limits). . .It Li n هیچ‌چیز. . .It Li s متغیرهای شل. . .It Li S سیگنال‌ها. . .It Li t فایل‌های .Dq ( متنی ) ساده. . .It Li T فایل‌های .Dq ( متنی ) ساده‌ای که با پیشوند مسیر ارائه‌شده آغاز می‌شوند. . .It Li v هر متغیری. . .It Li u نام‌های کاربری. . .It Li x مانند .Ql n ، اما در صورت استفاده از .Ic list-choices عبارت .Ar select را چاپ می‌کند. . .It Li X کامل‌سازی‌ها (Completions). . .It Li $ Ns Ar var کلمات برگرفته از متغیر .Ar var . . .It Li (...) کلمات برگرفته از فهرست ارائه‌شده. . .It Li \`...\` کلمات برگرفته از خروجی دستور. .El .Pp شناسه .Ar select یک الگوی glob اختیاری است. در صورت تعیین، تنها کلماتی از .Ar list که با .Ar select تطابق داشته باشند در نظر گرفته می‌شوند و متغیر پوسته .Ic fignore نادیده گرفته می‌شود. انواع .Ar list شامل .Ql $ Ns Ar var ، .Ql (...) و .Ql \`...\` نمی‌توانند الگوی .Ar select داشته باشند، و .Ql x از .Ar select به‌عنوان یک پیام توضیحی هنگام استفاده از دستور ویرایشگر .Ic list-choices استفاده می‌کند. .Pp شناسه .Ar suffix یک تک‌نویسه است که در صورت تکمیل موفقیت‌آمیز، به انتهای آن الحاق می‌شود. اگر تهی باشد، هیچ نویسه‌ای اضافه نمی‌شود. در صورت حذف (که در این حالت می‌توان جداکننده چهارم را نیز حذف کرد)، یک اسلش به دایرکتوری‌ها و یک فاصله به سایر کلمات الحاق می‌شود. .Pp دستور .Ar command که از .Ar list .Ql \`...\` فراخوانی می‌شود، دارای متغیر محیطی اضافی .Ev COMMAND_LINE است که (همان‌طور که از نامش پیداست) محتویات خط فرمان فعلی (که قبلاً تایپ شده) را در خود دارد. می‌توان محتویات متغیر محیطی .Ev COMMAND_LINE را در یک اسکریپت سفارشی بررسی و استفاده کرد تا تکمیل‌های پیشرفته‌تری ساخت (تکمیل مربوط به .Xr svn 1 را که در این بسته گنجانده شده است ببینید). .Pp حال چند مثال می‌آوریم. برخی دستورها تنها دایرکتوری‌ها را به عنوان آرگومان می‌پذیرند، بنابراین کامل کردن فایل‌های عادی بی‌معنی است. .Bd -literal -offset indent > complete cd 'p/1/d/' .Ed .Pp تنها کلمه اول پس از .Ql cd را .Pq Ql p/1 با یک دایرکتوری کامل می‌کند. تکمیل از نوع .Ql p Ns می‌تواند برای محدود کردن تکمیل دستورها نیز به کار رود: .Bd -literal -offset indent > co[^D] complete compress > complete \-co* 'p/0/(compress)/' > co[^D] > compress .Ed .Pp این تکمیل، دستورهایی (کلمات در موقعیت ۰، .Ql p/0 ) را که با .Ql co شروع می‌شوند (و در نتیجه با .Ql co* تطبیق می‌یابند) به .Ql compress (تنها کلمه موجود در فهرست) کامل می‌کند. نویسه .Ql \- در ابتدا مشخص می‌کند که این تکمیل تنها برای دستورهای مبهم استفاده شود. .Bd -literal -offset indent > complete find 'n/\-user/u/' .Ed .Pp نمونه‌ای از تکمیل از نوع .Ql n Ns است. هر کلمه‌ای پس از .Ql find که بلافاصله پس از .Ql \-user بیاید، از فهرست کاربران کامل می‌شود. .Bd -literal -offset indent > complete cc 'c/\-I/d/' .Ed .Pp تکمیل از نوع .Ql c را نشان می‌دهد. هر کلمه‌ای پس از .Ql cc که با .Ql \-I شروع شود، به عنوان یک دایرکتوری تکمیل می‌شود. .Ql \-I به عنوان بخشی از دایرکتوری در نظر گرفته نمی‌شود، زیرا ما از .Ql c کوچک استفاده کرده‌ایم. .Pp مجموعه‌های .Ar list متفاوت با دستورهای مختلف کاربردی هستند. .Bd -literal -offset indent > complete alias 'p/1/a/' > complete man 'p/*/c/' > complete set 'p/1/s/' > complete true 'p/1/x:Truth has no options./' .Ed .Pp این‌ها کلماتِ پس از .Ql alias را با نام‌های مستعار (aliasها)، .Ql man را با دستورها، و .Ql set را با متغیرهای شل تکمیل می‌کنند. دستور .Ic true هیچ گزینه‌ای ندارد، بنابراین .Ql x هنگام تلاش برای تکمیل هیچ کاری انجام نمی‌دهد و هنگام فهرست کردن گزینه‌های تکمیل، .Dl Truth has no options\&. را چاپ می‌کند. .Pp توجه داشته باشید که در مثال .Ql man و چندین مثال دیگر در ادامه، می‌توانست به همان اندازه به‌جای .Ql 'p/*' از .Ql 'c/*' یا .Ql 'n/*' نیز استفاده شود. .Pp کلمات را می‌توان از متغیری که در زمان تکمیل ارزیابی می‌شود کامل کرد، .Bd -literal -offset indent > complete ftp 'p/1/$hostnames/' > set hostnames = (rtfm.mit.edu tesla.ee.cornell.edu) > ftp [^D] rtfm.mit.edu tesla.ee.cornell.edu > ftp [^C] > set hostnames = (rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net) > ftp [^D] rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net .Ed .Pp یا از دستوری که در زمان تکمیل اجرا می‌شود: .Bd -literal -offset indent > complete kill 'p/*/\`ps | awk \e{print\e \e$1\e}\`/' > kill \-9 [^D] 23113 23377 23380 23406 23429 23529 23530 PID .Ed .Pp توجه داشته باشید که دستور .Ic complete خودش آرگومان‌هایش را کوت (نقل‌قول) نمی‌کند، بنابراین آکولادها، فاصله و .Ql $ در .Ql {print $1} باید به صورت صریح کوت‌گذاری شوند. .Pp یک دستور می‌تواند چندین حالت تکمیل داشته باشد: .Bd -literal -offset indent > complete dbx 'p/2/(core)/' 'p/*/c/' .Ed .Pp دومین آرگومان .Ql dbx را با کلمه .Ql core و بقیه آرگومان‌ها را با دستورات تکمیل می‌کند. توجه داشته باشید که تکمیل وابسته به موقعیت، قبل از تکمیل کلمه بعدی مشخص شده است. از آنجا که تکمیل‌ها از چپ به راست ارزیابی می‌شوند، اگر تکمیل کلمه بعدی ابتدا مشخص می‌شد، همیشه مطابقت پیدا می‌کرد و تکمیل وابسته به موقعیت هرگز اجرا نمی‌شد. این یک اشتباه رایج هنگام تعریف تکمیل است. .Pp الگوی .Ar select زمانی مفید است که یک دستور فقط فایل‌هایی با فرم‌های خاص را به عنوان آرگومان می‌پذیرد. برای نمونه، .Bd -literal -offset indent > complete cc 'p/*/f:*.[cao]/' .Ed .Pp آرگومان‌های .Ql cc را فقط به فایل‌هایی که به .Ql .c ، .Ql .a یا .Ql .o ختم می‌شوند، تکمیل می‌کند. .Ar select همچنین می‌تواند با استفاده از نفی یک الگوی عمومی (glob-pattern)، همان‌طور که در بخش .Sx جایگزینی نام فایل (Filename substitution) توضیح داده شده است، فایل‌ها را مستثنی کند. می‌توان از دستور زیر استفاده کرد: .Bd -literal -offset indent > complete rm 'p/*/f:^*.{c,h,cc,C,tex,1,man,l,y}/' .Ed .Pp برای مستثنی کردن کدهای منبع ارزشمند از تکمیل خودکار .Ql rm استفاده کرد. البته همچنان می‌توان نام‌های مستثنی‌شده را به صورت دستی تایپ کرد یا با استفاده از دستورهای ویرایشگر .Ic complete-word-raw یا .Ic list-choices-raw سازوکار تکمیل خودکار را نادیده گرفت. .Pp فهرست‌های .Ar list شامل .Ql C ، .Ql D ، .Ql F و .Ql T به ترتیب مانند .Ql c ، .Ql d ، .Ql f و .Ql t هستند، اما از آرگومان .Ar select به شیوه‌ای متفاوت استفاده می‌کنند: برای محدود کردن تکمیل به فایل‌هایی که با یک پیشوند مسیر خاص آغاز می‌شوند. برای نمونه، برنامه ایمیل Elm از .Ql = به عنوان کوته‌نوشتی برای دایرکتوری ایمیل کاربر استفاده می‌کند. می‌توان از دستور زیر استفاده کرد: .Bd -literal -offset indent > complete elm c@=@F:$HOME/Mail/@ .Ed .Pp تا .Dl elm \-f = را طوری تکمیل کند که گویی عبارت زیر بوده است: .Dl elm \-f ~/Mail/ توجه داشته باشید که برای جلوگیری از تداخل با آرگومان .Ar select به جای .Ql / از جداکننده .Ql @ استفاده کردیم، و همچنین به جای .Ql ~ از .Ql $HOME استفاده شد زیرا جایگزینی دایرکتوری خانگی تنها در ابتدای کلمه کار می‌کند. .Pp شناسهٔ .Ar suffix برای افزودن یک پسوند غیر استاندارد (غیر از فاصله یا .Ql / برای دایرکتوری‌ها) به کلمات تکمیل‌شده به کار می‌رود. .Bd -literal -offset indent > complete finger 'c/*@/$hostnames/' 'p/1/u/@' .Ed .Pp آرگومان‌های .Ql finger را از فهرست کاربران تکمیل می‌کند، یک .Ql @ می‌افزاید، و سپس بعد از .Ql @ را از متغیر .Ql hostnames تکمیل می‌نماید. دوباره به ترتیبی که تکمیل‌ها مشخص شده‌اند دقت کنید. .Pp در نهایت، این یک مثال پیچیده برای ایده گرفتن است: .Bd -literal -offset indent > complete find \e \&'n/\-name/f/' 'n/\-newer/f/' 'n/\-{,n}cpio/f/' \e \&\'n/\-exec/c/' 'n/\-ok/c/' 'n/\-user/u/' \e \&'n/\-group/g/' 'n/\-fstype/(nfs 4.2)/' \e \&'n/\-type/(b c d f l p s)/' \e \'c/\-/(name newer cpio ncpio exec ok user \e group fstype type atime ctime depth inum \e ls mtime nogroup nouser perm print prune \e size xdev)/' \e \&'p/*/d/' .Ed .Pp این دستور کلمات پس از .Ql \-name ، .Ql \-newer ، .Ql \-cpio یا .Ql \-ncpio (به الگویی که هر دو را مطابقت می‌دهد دقت کنید) را به فایل‌ها، کلمات پس از .Ql \-exec یا .Ql \-ok را به دستورات، کلمات پس از .Ql \-user و .Ql \-group را به ترتیب به کاربران و گروه‌ها، و کلمات پس از .Ql \-fstype یا .Ql \-type را به اعضای فهرست‌های داده‌شده تکمیل می‌کند. همچنین خود سوییچ‌ها را از فهرست ارائه‌شده تکمیل می‌نماید (به استفاده از تکمیل از نوع .Ql c Ns دقت کنید) و هر چیز دیگری که به نحو دیگری تکمیل نشده باشد را به یک دایرکتوری تکمیل می‌کند. هوف! .Pp به یاد داشته باشید که اگر کلمه در حال تکمیل یک جایگزینی مد (شروع با .Ql ~ ) یا یک متغیر (شروع با .Ql $ ) باشد، تکمیل‌های برنامه‌ریزی‌شده نادیده گرفته می‌شوند. همچنین به دستور توکار .Ic uncomplete مراجعه کنید. . .It Ic continue اجرای نزدیک‌ترین .Ic while یا .Ic foreach در بر گیرنده را ادامه می‌دهد. باقی دستورات در خط جاری اجرا می‌شوند. . .It Ic default\&: حالت پیش‌فرض را در یک عبارت .Ic switch برچسب‌گذاری می‌کند. این مورد باید بعد از تمام برچسب‌های .Ic case قرار گیرد. . .El .Pp .Bl -tag -width 6n -compact . .It Ic dirs Xo .Op Fl l .Op Fl n Ns | Ns Fl v .Xc .It Ic dirs Xo .Fl S Ns | Ns Fl L .Op Ar filename (+) .Xc .It Ic dirs Xo .Fl c (+) .Xc شکل اول پشتهٔ دایرکتوری (directory stack) را چاپ می‌کند. بالای پشته در سمت چپ قرار دارد و اولین دایرکتوری در پشته، دایرکتوری فعلی است. با .Fl l ، علامت .Ql ~ یا .Ql ~ Ns Ar name در خروجی به‌طور صریح به .Ic home یا مسیر کامل دایرکتوری خانگی کاربر .Ar name بسط داده می‌شود. (+) با .Fl n ، ورودی‌ها قبل از رسیدن به لبهٔ صفحه شکسته (wrap) می‌شوند. (+) با .Fl v ، ورودی‌ها هر کدام در یک خط و با ذکر موقعیتشان در پشته چاپ می‌شوند. (+) اگر بیش از یکی از گزینه‌های .Fl n یا .Fl v داده شود، .Fl v اولویت دارد. .Fl p پذیرفته می‌شود اما کاری انجام نمی‌دهد. .Pp شکل دوم با .Fl S پشتهٔ دایرکتوری را در .Ar filename به‌صورت مجموعه‌ای از دستورهای .Ic cd و .Ic pushd ذخیره می‌کند. شکل دوم با .Fl L فایل .Ar filename را source می‌کند، که احتمالاً یک فایل پشتهٔ دایرکتوری ذخیره‌شده توسط گزینهٔ .Fl S یا سازوکار .Ic savedirs است. در هر دو حالت، اگر .Ar filename داده نشده باشد از .Ic dirsfile استفاده می‌شود و اگر .Ic dirsfile تنظیم نشده باشد، از .Pa ~/.cshdirs استفاده می‌گردد. .Pp توجه داشته باشید که شل‌های لاگین در هنگام راه‌اندازی، معادل .Dl dirs \-L را اجرا می‌کنند و اگر .Ic savedirs تنظیم شده باشد، قبل از خروج، .Dl dirs \-S را اجرا می‌نمایند. از آنجا که به‌طور معمول تنها .Pa ~/.tcshrc قبل از .Pa ~/.cshdirs خوانده (source) می‌شود، .Ic dirsfile باید در .Pa ~/.tcshrc تنظیم گردد، نه در .Pa ~/.login . .Pp شکل سوم، پشتهٔ دایرکتوری را پاک می‌کند. . .El .Bl -tag -width 6n . .It Ic echo Oo Fl n Oc Ar word No \&... هر .Ar word را در خروجی استاندارد شل می‌نویسد که با فاصله از هم جدا شده و به یک خط جدید ختم می‌شوند. متغیر شل .Ic echo_style می‌تواند برای شبیه‌سازی (یا عدم شبیه‌سازی) فلگ‌ها و توالی‌های گریز (escape sequences) نسخه‌های BSD و/یا System V از .Xr echo 1 تنظیم شود؛ نگاه کنید به .Sx توالی‌های گریز (+) و .Xr echo 1 . . .It Ic echotc Oo Fl sv Oc Ar arg No \&... No (+) قابلیت‌های ترمینال (نگاه کنید به .Xr termcap 5 ) را در .Ar arg به کار می‌گیرد. برای نمونه، .Dl echotc home مکان‌نما را به موقعیت خانه (home) می‌برد، .Dl echotc cm 3 10 آن را به ستون ۳ و سطر ۱۰ می‌برد، و .Dl echotc ts 0; echo \&"This is a test.\&"; echotc fs متن .Dl This is a test\&. را در خط وضعیت چاپ می‌کند. .Pp اگر .Ar arg برابر با .Ql baud ، .Ql cols ، .Ql lines ، .Ql meta یا .Ql tabs باشد، مقدار آن قابلیت را چاپ می‌کند .Dq ( yes یا .Dq no که نشان می‌دهد ترمینال آن قابلیت را دارد یا ندارد). می‌توان از این قابلیت برای کاهش پرگویی خروجی یک اسکریپت شل در ترمینال‌های کند، یا محدود کردن خروجی دستور به تعداد خطوط صفحه نمایش استفاده کرد: .Bd -literal -offset indent > set history=\`echotc lines\` > @ history\-\- .Ed .Pp رشته‌های Termcap ممکن است حاوی نویسه‌های عام (wildcard) باشند که به‌درستی بازتاب داده نمی‌شوند. هنگام تنظیم یک متغیر شل روی رشته قابلیت ترمینال، باید از نقل‌قول دوگانه (double quotes) استفاده شود، مانند مثال زیر که تاریخ را در خط وضعیت قرار می‌دهد: .Bd -literal -offset indent > set tosl="\`echotc ts 0\`" > set frsl="\`echotc fs\`" > echo \-n "$tosl";date; echo \-n "$frsl" .Ed .Pp با .Fl s ، قابلیت‌های ناموجود به جای ایجاد خطا، رشته خالی برمی‌گردانند. با .Fl v ، پیام‌ها به‌صورت پرگو (verbose) خواهند بود. . .El .Pp .Bl -tag -width 6n -compact . .It Ic else .It Ic end .It Ic endif .It Ic endsw توضیحات دستورهای .Ic foreach ، .Ic if ، .Ic switch و .Ic while را در زیر ببینید. . .El .Bl -tag -width 6n . .It Ic eval Ar arg No \&... آرگومان‌ها را به عنوان ورودی شل در نظر گرفته و دستور(های) حاصل را در بستر شل فعلی اجرا می‌کند. این مورد معمولاً برای اجرای دستورهایی به کار می‌رود که در نتیجهٔ جایگزینی متغیر یا دستور ایجاد شده‌اند، چرا که تجزیهٔ دستوری (parsing) پیش از این جایگزینی‌ها انجام می‌گیرد. برای نمونه‌ای از کاربرد .Ic eval به .Xr tset 1 مراجعه کنید. . .It Ic exec Ar command No \&... دستور .Ar command مشخص‌شده را به جای شل فعلی اجرا می‌کند. . .It Ic exit Op Ar expr شل با مقدار عبارت مشخص‌شدهٔ .Ar expr (یک عبارت، همان‌طور که در .Sx Expressions توضیح داده شده است) یا در صورت عدم وجود .Ar expr ، با مقدار 0 خارج می‌شود. . .It Ic fg Op Cm % Ns Ar job No \&... کارهای مشخص‌شده (یا در صورت عدم وجود آرگومان، کار فعلی) را به پیش‌زمینه (foreground) می‌آورد، و در صورت متوقف بودن هر یک، اجرای آن را ادامه می‌دهد. .Ar job می‌تواند یک عدد، یک رشته، .Ql \& ، .Ql % ، .Ql + یا .Ql \- باشد، همان‌طور که در .Sx Jobs شرح داده شده است. همچنین دستور ویرایشگر .Ic run-fg-editor را ببینید. . .It Ic filetest \- Ns Ar op file No \&... No (+) عملگر .Ar op را (که یک عملگر استعلام فایل است، همان‌طور که در .Sx File inquiry operators توضیح داده شده) بر روی هر .Ar file اعمال کرده و نتایج را به صورت یک فهرست جدا شده با فاصله بازمی‌گرداند. . .El .Pp .Bl -tag -width 6n -compact . .It Ic foreach Ar name Cm \&( Ns Ar wordlist Ns Cm \&) .It Ic \&... .It Ic end متغیر .Ar name را به طور متوالی با هر یک از اعضای .Ar wordlist مقداردهی کرده و توالی دستورات بین این دستور و .Ic end متناظر با آن را اجرا می‌کند. (هر دو دستور .Ic foreach و .Ic end باید به تنهایی در خطوط جداگانه قرار گیرند.) دستور توکار .Ic continue می‌تواند برای ادامه دادن پیش‌از‌موعد حلقه استفاده شود و دستور توکار .Ic break برای پایان دادن پیش‌از‌موعد آن به کار می‌رود. هنگامی که این دستور از ترمینال خوانده می‌شود، پیش از اجرای هر گزاره‌ای در حلقه، کل حلقه با اعلان .Dl foreach?\ \& (یا .Ic prompt2 ) یک بار خوانده می‌شود. اگر هنگام تایپ یک حلقه در ترمینال مرتکب اشتباهی شدید، می‌توانید آن را پاک کنید. . .El .Bl -tag -width 6n . .It Ic getspath No (+) مسیر اجرای سیستم را چاپ می‌کند. (فقط در TCF) . .It Ic getxvers No (+) پیشوند نسخه آزمایشی را چاپ می‌کند. (تنها در TCF) . .It Ic glob Ar word No \&... مانند .Ic echo است، اما پارامتر .Fl n شناخته نمی‌شود و کلمات در خروجی با نویسه‌های تهی (null) از هم جدا می‌شوند. برای برنامه‌هایی که می‌خواهند از پوسته برای بسط نام فایلِ فهرستی از کلمات استفاده کنند، مفید است. . .It Ic goto Ar word روی .Ar word جایگزینی نام فایل و دستور انجام می‌شود تا رشته‌ای به شکل .Sq Ar label حاصل شود. پوسته ورودی خود را تا حد امکان به عقب برمی‌گرداند، به دنبال خطی به فرم .Dl Ar label Ns No \&: (که ممکن است قبل از آن فاصله‌ها یا تب‌ها قرار داشته باشند) می‌گردد، و اجرا را پس از آن خط ادامه می‌دهد. . .It Ic hashstat یک خط آماری را چاپ می‌کند که نشان می‌دهد جدول هش درونی تا چه اندازه در مکان‌یابی دستورها (و جلوگیری از فراخوانی‌های .Ic exec Ns ) مؤثر بوده است. به ازای هر بخش از .Ic path که تابع هش وجود احتمالی را نشان دهد، و در هر بخشی که با .Ql / شروع نشود، یک .Ic exec امتحان می‌شود. .Pp در ماشین‌های بدون .Xr vfork 2 ، فقط تعداد و اندازه باکت‌های (buckets) هش را چاپ می‌کند. . .El .Pp .Bl -tag -width 6n -compact . .It Ic history Xo .Op Fl hTr .Op Ar n .Xc .It Ic history Xo .Fl S Ns | Ns Fl L Ns | Ns Fl M .Op Ar filename (+) .Xc .It Ic history Xo .Fl c (+) .Xc فرم اول فهرست رویدادهای تاریخچه را چاپ می‌کند. اگر .Ar n داده شود، تنها .Ar n رویداد اخیر چاپ یا ذخیره می‌شوند. همراه با .Fl h ، فهرست تاریخچه بدون شماره‌های ابتدایی چاپ می‌شود. اگر .Fl T مشخص شده باشد، برچسب‌های زمانی نیز در قالب کامنت چاپ می‌شوند. این قابلیت می‌تواند برای تولید فایل‌های مناسب جهت بارگذاری با .Dl history \-L یا .Dl source \-h استفاده شود. .Pp همراه با .Fl r ، ترتیب چاپ به جای قدیمی‌ترین‌ها در ابتدا، جدیدترین‌ها در ابتدا خواهد بود. .Pp فرم دوم با .Fl S فهرست تاریخچه را در .Ar filename ذخیره می‌کند. اگر کلمه اول متغیر شل .Ic savehist بر روی یک عدد تنظیم شده باشد، حداکثر به همان تعداد خط ذخیره می‌شود. اگر کلمه دوم .Ic savehist روی .Ql merge تنظیم شده باشد، فهرست تاریخچه به جای جایگزین شدن، با فایل تاریخچه موجود ادغام شده (در صورت وجود) و بر اساس برچسب زمانی مرتب می‌شود. (+) قابلیت ادغام برای محیط‌هایی مانند X Window System با چندین شل که هم‌زمان استفاده می‌شوند در نظر گرفته شده است. اگر کلمه دوم .Ic savehist برابر .Ql merge و کلمه سوم روی .Ql lock تنظیم شده باشد، به‌روزرسانی فایل تاریخچه با سایر نشست‌های شل که ممکن است دقیقاً در همان زمان قصد ادغام تاریخچه را داشته باشند، به‌صورت سریالی انجام خواهد شد. .Pp شکل دوم با .Fl L محتویات .Ar filename (که احتمالاً یک فهرست تاریخچه ذخیره شده توسط گزینه .Fl S یا سازوکار .Ic savehist است) را به فهرست تاریخچه ضمیمه می‌کند. .Fl M مشابه .Fl L است، اما محتویات .Ar filename در فهرست تاریخچه ادغام شده و بر اساس برچسب زمان مرتب می‌شوند. در هر دو حالت، اگر .Ar filename مشخص نشده باشد از .Ic histfile استفاده می‌شود و اگر .Ic histfile تنظیم نشده باشد، .Pa ~/.history به کار می‌رود. .Pp توجه داشته باشید که .Dl history \-L دقیقاً مانند .Dl source \-h عمل می‌کند، با این تفاوت که نیازی به نام فایل ندارد. .Pp توجه داشته باشید که شل‌های لاگین در هنگام راه‌اندازی معادل دستور .Dl history \-L و در صورت تنظیم بودن .Ic savehist ، پیش از خروج معادل دستور .Dl history \-S را اجرا می‌کنند. از آنجا که به طور معمول فقط .Pa ~/.tcshrc پیش از .Pa ~/.history فراخوانی (source) می‌شود، .Ic histfile باید در .Pa ~/.tcshrc تنظیم شود و نه در .Pa ~/.login . .Pp اگر .Ic histlit تنظیم شده باشد، فرم‌های اول و دوم شکل تحت‌اللفظی (بسط‌نیافته) فهرست تاریخچه را چاپ و ذخیره می‌کنند. .Pp فرم سوم فهرست تاریخچه را پاک می‌کند. . .El .Bl -tag -width 6n . .It Ic hup Oo Ar command Oc No (+) همراه با .Ar command ، دستور .Ar command را به گونه‌ای اجرا می‌کند که هنگام دریافت سیگنال قطع ارتباط (hangup) خارج شود و ترتیبی می‌دهد که شل هنگام خروج خود، یک سیگنال قطع ارتباط به آن ارسال کند. توجه داشته باشید که ممکن است دستورها پاسخ خود را به قطع ارتباط تنظیم کرده و .Ic hup را نادیده بگیرند. بدون آرگومان، فقط باعث می‌شود شلِ غیرتعاملی برای باقی‌ماندهٔ اسکریپت هنگام قطع ارتباط خارج شود. همچنین ببینید .Sx "مدیریت سیگنال (Signal handling)" و دستور توکار .Ic nohup را. . .It Ic if Cm \&( Ns Ar expr Ns Cm \&) Ar command اگر .Ar expr (یک عبارت، همان‌طور که در زیر .Sx "عبارات (Expressions)" توضیح داده شده است) درست ارزیابی شود، آنگاه .Ar command اجرا می‌شود. جایگزینی متغیرها روی .Ar command زودتر و هم‌زمان با بقیهٔ دستورِ .Ic if انجام می‌شود. .Ar command باید یک دستور ساده باشد، نه یک نام مستعار (alias)، یک خط لوله (pipeline)، یک فهرست دستورات یا یک فهرست دستورات داخل پرانتز؛ اما می‌تواند آرگومان داشته باشد. تغییر مسیر ورودی/خروجی رخ می‌دهد حتی اگر .Ar expr نادرست باشد و در نتیجه .Ar command اجرا .Em نشود ؛ این یک باگ است. . .El .Pp .Bl -tag -width 6n -compact . .It Ic if Cm \&( Ns Ar expr Ns Cm \&) then .It Ic \&... .It Ic else if Cm \&( Ns Ar expr2 Ns Cm \&) then .It Ic \&... .It Ic else .It Ic \&... .It Ic endif اگر .Ar expr مشخص‌شده درست باشد، دستورات تا اولین .Ic else اجرا می‌شوند؛ در غیر این صورت اگر .Ar expr2 درست باشد دستورات تا دومین .Ic else اجرا می‌گردند و به همین ترتیب. هر تعداد جفت .Ic else if امکان‌پذیر است؛ تنها یک .Ic endif مورد نیاز است. بخش .Ic else نیز به همین ترتیب اختیاری است. (کلمات .Ic else و .Ic endif باید در ابتدای خطوط ورودی ظاهر شوند؛ .Ic if باید به تنهایی در خط ورودی خود یا پس از یک .Ic else قرار گیرد.) . .El .Pp .Bl -tag -width 6n -compact . .It Ic inlib Ar shared-library No \&... No (+) هر .Ar shared-library را به محیط فعلی اضافه می‌کند. هیچ راهی برای حذف یک کتابخانه مشترک وجود ندارد. (فقط Domain/OS) . .El .Pp .Bl -tag -width 6n -compact . .It Ic jobs Op Fl l .It Ic jobs Fl Z Oo Ar title Oc No (+) شکل اول کارهای فعال را فهرست می‌کند. همراه با .Fl l ، شناسه‌های فرایند (PID) را علاوه بر اطلاعات عادی فهرست می‌کند. در سیستم‌های TCF، پایگاهی (site) که هر کار بر روی آن در حال اجرا است را چاپ می‌کند. .Pp شکل دوم همراه با گزینهٔ .Fl Z عنوان فرایند را در صورت در دسترس بودن با استفاده از .Xr setproctitle 3 روی .Ar title تنظیم می‌کند. اگر هیچ .Ar title مشخص نشده باشد، عنوان فرایند پاک خواهد شد. . .\" adjacant multi-tag items; add a blank .Pp . .It Ic kill Fl l .It Ic kill Xo .Op Fl s Ar signal .Cm % Ns Ar job Ns | Ns Ar pid No \&... .Xc شکل اول نام‌های سیگنال‌ها را فهرست می‌کند. .Pp شکل دوم .Ar signal مشخص‌شده (یا در صورت عدم تعیین، سیگنال TERM (خاتمه)) را به کارها یا فرایندهای مشخص‌شده ارسال می‌کند. .Ar job می‌تواند یک عدد، یک رشته، .Ql \& , .Ql % , .Ql + , یا .Ql \- باشد، همان‌طور که در بخش .Sx Jobs شرح داده شده است. سیگنال‌ها یا با شماره یا با نام (همان‌طور که در .Pa /usr/include/signal.h بدون پیشوند .Sq SIG آمده است) تعیین می‌شوند. .Pp هیچ .Ar job پیش‌فرضی وجود ندارد؛ تنها وارد کردن .Dl kill سیگنالی به کار فعلی ارسال نمی‌کند. اگر سیگنال ارسالی TERM (خاتمه) یا HUP (قطع تماس) باشد، آنگاه به کار یا فرایند سیگنال CONT (ادامه) نیز ارسال می‌شود. . .El .Bl -tag -width 6n . .It Ic limit Oo Fl h Oc Op Ar resource Op Ar maximum-use میزان مصرف فرایند فعلی و هر فرایندی که ایجاد می‌کند را به گونه‌ای محدود می‌سازد که به طور مجزا از .Ar maximum-use بر روی .Ar resource مشخص‌شده تجاوز نکند. .Pp اگر هیچ .Ar maximum-use مشخص نشود، حد فعلی برای .Ar resource چاپ می‌شود. .Pp اگر هیچ .Ar resource مشخص نشود، تمامی محدودیت‌ها نمایش داده می‌شوند. .Pp اگر فلگ .Fl h داده شود، محدودیت‌های سخت (hard limits) به جای محدودیت‌های فعلی استفاده می‌شوند. محدودیت‌های سخت سقفی را برای مقادیر محدودیت‌های فعلی تعیین می‌کنند. تنها کاربر ارشد (super-user) می‌تواند محدودیت‌های سخت را افزایش دهد، اما هر کاربری می‌تواند محدودیت‌های فعلی را در محدوده مجاز کاهش یا افزایش دهد. .Pp انواع .Ar resource قابل کنترل در حال حاضر شامل موارد زیر است (در صورت پشتیبانی توسط سیستم‌عامل): .Bl -tag -width ".Ic coredumpsize" -offset indent .It Ar resource .Sy توضیحات منبع . .It Ic concurrency حداکثر تعداد ریسه‌ها (threads) برای این فرایند. . .It Ic coredumpsize اندازه بزرگ‌ترین core dump که ایجاد خواهد شد. . .It Ic cputime حداکثر تعداد ثانیه‌های پردازنده (cpu-seconds) که توسط هر فرایند استفاده می‌شود. . .It Ic datasize حداکثر رشد ناحیه داده+پشته (data+stack) از طریق .Xr sbrk 2 فراتر از انتهای متن برنامه (program text). . .It Ic descriptors No یا Ic openfiles حداکثر تعداد فایل‌های باز برای این فرایند. . .It Ic filesize بزرگ‌ترین اندازه یک فایل تکی که می‌تواند ایجاد شود. . .It Ic heapsize حداکثر میزان حافظه‌ای که یک فرایند می‌تواند در هر فراخوانی سیستمی .Xr brk 2 تخصیص دهد. . .It Ic kqueues حداکثر تعداد kqueueهای تخصیص‌یافته برای این فرایند. . .It Ic maxlocks حداکثر تعداد قفل‌ها برای این کاربر. . .It Ic maxmessage حداکثر تعداد بایت‌ها در mqueueهای POSIX برای این کاربر. . .It Ic maxnice حداکثر اولویت nice که کاربر مجاز است آن را افزایش دهد، نگاشت‌شده از [19...-20] به [0...39] برای این کاربر. . .It Ic maxproc حداکثر تعداد فرایندهای هم‌زمان برای این شناسه کاربری (user id). . .It Ic maxrtprio حداکثر اولویت بلادرنگ (realtime) برای این کاربر. . .It Ic maxrttime مهلت زمانی (timeout) برای وظایف RT برحسب میکروثانیه برای این کاربر. . .It Ic maxsignal حداکثر تعداد سیگنال‌های در انتظار (pending) برای این کاربر. . .It Ic maxthread حداکثر تعداد ریسه‌های (فرایندهای سبک‌وزن) هم‌زمان برای این شناسه کاربری. . .It Ic memorylocked حداکثر اندازه‌ای که یک فرایند می‌تواند با استفاده از .Xr mlock 2 در حافظه قفل کند. . .It Ic memoryuse حداکثر میزان حافظه فیزیکی که ممکن است در یک زمان مشخص به یک فرایند تخصیص داده شده باشد. . .It Ic posixlocks حداکثر تعداد قفل‌های مشورتی (advisory) استاندارد POSIX برای این کاربر. . .It Ic pseudoterminals حداکثر تعداد شبه‌پایانه‌ها (pseudo-terminals) برای این کاربر. . .It Ic sbsize حداکثر اندازهٔ بافر سوکتِ استفاده‌شده برای این کاربر. . .It Ic stacksize حداکثر اندازهٔ ناحیهٔ پشته (stack) که به‌طور خودکار گسترش می‌یابد. . .It Ic swapsize حداکثر میزان فضای swap رزروشده یا استفاده‌شده برای این کاربر. . .It Ic threads حداکثر تعداد threadها برای این فرآیند. . .It Ic vmemoryuse حداکثر میزان حافظهٔ مجازی که یک فرآیند می‌تواند در یک زمان مشخص به خود تخصیص دهد (فضای آدرس‌دهی). . .El .Pp .Ar maximum-use می‌تواند به صورت یک عدد (اعشاری یا صحیح) به همراه یک ضریب مقیاس مشخص شود. برای تمام محدودیت‌ها به‌جز .Ic cputime مقیاس پیش‌فرض .Ql k یا .Ql kilobytes (۱۰۲۴ بایت) است؛ همچنین ضریب مقیاس .Ql m یا .Ql megabytes (۱۰۴۸۵۷۶ بایت) یا .Ql g یا .Ql gigabytes (۱۰۷۳۷۴۱۸۲۴ بایت) نیز می‌تواند استفاده شود. برای .Ic cputime مقیاس پیش‌فرض .Ql seconds است، در حالی که .Ql m برای دقیقه یا .Ql h برای ساعت، یا زمانی به شکل .Sq Ar mm Ns Li \&: Ns Ar ss شامل دقیقه و ثانیه نیز می‌تواند استفاده شود. .Pp اگر .Ar maximum-use برابر با .Ql unlimited باشد، محدودیت روی .Ar resource مشخص‌شده برداشته می‌شود (این معادل با دستور توکار .Ic unlimit است). .Pp هم برای نام‌های .Ar resource و هم برای ضریب‌های مقیاس، پیشوندهای غیرمبهم از نام‌ها کفایت می‌کند. . .It Ic log No (+) متغیر شل .Ic watch را چاپ کرده و وضعیت هر کاربری را که در .Ic watch مشخص شده و وارد سیستم است، بدون توجه به زمان آخرین ورود او گزارش می‌دهد. همچنین نگاه کنید به .Ic watchlog . . .It Ic login شل ورود (login shell) را خاتمه داده و نمونه‌ای از .Pa /bin/login را جایگزین آن می‌کند. این یکی از روش‌های خروج از سیستم (log off) است که جهت سازگاری با .Xr sh 1 گنجانده شده است. . .It Ic logout یک شل ورود را خاتمه می‌دهد. به‌ویژه زمانی که .Ic ignoreeof تنظیم شده باشد بسیار کاربردی است. . .It Ic ls\-F Xo .Op Fl Ar switch No \&... .Op Ar file No \&... (+) .Xc فایل‌ها را مشابه .Dl ls \-F اما بسیار سریع‌تر فهرست می‌کند. .Pp دستور .Ic ls\-F هر نوع فایل خاص را در فهرست با یک پسوند کاراکتر ویژه مشخص می‌کند: .Pp .Bl -tag -width ".Sy Suffix" -offset indent -compact .It Sy پسوند .Sy نوع فایل خاص .Pp .It Li / دایرکتوری. .It Li * قابل اجرا (Executable). .It Li # دستگاه بلوکی (Block device). .It Li % دستگاه نویسه‌ای (Character device). .It Li \&| پایپ نام‌گذاری‌شده (فقط در سیستم‌های دارای پایپ نام‌گذاری‌شده). .It Li = سوکت (فقط در سیستم‌های دارای سوکت). .It Li @ پیوند نمادین (فقط در سیستم‌های دارای پیوند نمادین). .It Li + دایرکتوری مخفی (فقط AIX) یا وابسته به زمینه (فقط HP/UX). .It Li \&: ویژه شبکه (فقط HP/UX). .El .Pp اگر متغیر پوستهٔ .Ic listlinks تنظیم شده باشد، پیوندهای نمادین با جزئیات بیشتری مشخص می‌شوند (البته تنها در سیستم‌هایی که از آن‌ها پشتیبانی می‌کنند): .Pp .Bl -tag -width ".Sy Suffix" -offset indent -compact .It Sy پسوند .Sy نوع پیوند نمادین .Pp .It Li @ پیوند نمادین به یک غیر دایرکتوری. .It Li > پیوند نمادین به یک دایرکتوری. .It Li & پیوند نمادین یتیم (شکسته). .El .Pp همچنین .Ic listlinks سرعت .Ic ls\-F را کاهش می‌دهد و باعث می‌شود پارتیشن‌های حاوی فایل‌هایی که پیوندهای نمادین به آن‌ها اشاره دارند مونت شوند. .Pp اگر متغیر پوستهٔ .Ic listflags روی .Ql x ، .Ql a ، یا .Ql A ، یا هر ترکیبی از آن‌ها (برای نمونه، .Ql xA ) تنظیم شده باشد، از آن‌ها به عنوان گزینه‌هایی برای .Ic ls\-F استفاده می‌شود و باعث می‌شود مانند موارد زیر عمل کند: .Bd -literal -offset indent -compact ls \-xF ls \-Fa ls \-FA .Ed .Pp یا ترکیبی از آن‌ها، به عنوان مثال .Dl ls \-FxA .Pp روی سیستم‌هایی که در آن‌ها .Dl ls \-C پیش‌فرض نیست، .Ic ls\-F مانند .Dl ls \-CF عمل می‌کند مگر اینکه .Ic listflags شامل یک .Ql x باشد، که در این حالت مانند .Dl ls \-xF رفتار می‌کند. .Pp دستور .Ic ls\-F اگر هرگونه سوییچی به آن داده شود، آرگومان‌های خود را به .Xr ls 1 ارسال می‌کند، بنابراین .Dl alias ls ls\-F به طور کلی عملکرد درستی ارائه می‌دهد. .Pp دستور توکار .Ic ls\-F می‌تواند فایل‌ها را بسته به نوع یا پسوند فایل با رنگ‌های متفاوتی فهرست کند. متغیر شل .Ic color و متغیرهای محیطی .Ev CLICOLOR_FORCE ، .Ev LSCOLORS و .Ev LS_COLORS را ببینید. .El .Pp .Bl -tag -width 6n -compact . .It Ic migrate Xo .Op Fl Ar site .Ar pid Ns | Ns Cm % Ns Ar jobid No \&... (+) .Xc .It Ic migrate Fl Ar site No (+) شکل اول، فرایند یا جاب را به سایت مشخص‌شده یا سایت پیش‌فرضی که توسط مسیر سیستم تعیین شده مهاجرت (migrate) می‌دهد. (فقط در TCF) .Pp شکل دوم معادل با .Dl migrate \- Ns Ar site Li $$ است، به این صورت که فرایند جاری را به سایت مشخص‌شده منتقل می‌کند. مهاجرت دادن خود شل می‌تواند رفتارهای غیرمنتظره‌ای ایجاد کند، زیرا شل تمایلی به از دست دادن tty خود ندارد. (فقط در TCF) .El .Bl -tag -width 6n . .It Ic newgrp Oo Cm \- Oc Oo Ar group Oc No (+) معادل با .Dl exec newgrp مطابق با .Xr newgrp 1 . تنها در صورتی در دسترس است که شل به این شکل کامپایل شده باشد؛ متغیر شل .Ic version را ببینید. . .It Ic nice Oo Cm + Ns Ar number Oc Op Ar command اولویت زمان‌بندی شل را به اندازهٔ .Ar number یا بدون .Ar number به اندازهٔ ۴ واحد افزایش می‌دهد. همراه با .Ar command ، دستور .Ar command را با اولویت مناسب اجرا می‌کند. هرچه .Ar number بزرگ‌تر باشد، پردازه cpu کمتری دریافت می‌کند. کاربر ارشد (super-user) می‌تواند با استفاده از .Dl nice \- Ns Ar number Li \&... اولویت را کاهش دهد. .Pp .Ar command همواره در یک زیرشل (sub-shell) اجرا می‌شود، و محدودیت‌های اعمال‌شده بر دستورها در عبارات سادهٔ .Ic if بر آن نیز اعمال می‌گردد. . .It Ic nohup Op Ar command همراه با .Ar command ، دستور .Ar command را به گونه‌ای اجرا می‌کند که سیگنال‌های قطع ارتباط (hangup) را نادیده بگیرد. توجه داشته باشید که ممکن است دستورها پاسخ خود را به hangup تنظیم کنند و .Ic nohup را نادیده بگیرند. .Pp بدون آرگومان، تنها باعث می‌شود که شل غیرتعاملی تا پایان اسکریپت، سیگنال‌های قطع ارتباط را نادیده بگیرد. همچنین بخش .Sx Signal handling و دستور توکار .Ic hup را ببینید. . .It Ic notify Op Cm % Ns Ar job No \&... باعث می‌شود که شل به محض تغییر وضعیت هر یک از شغل‌های مشخص‌شده (یا در صورت عدم تعیین .Cm % Ns Ar job ، شغل فعلی) به‌صورت ناهمگام به کاربر اطلاع دهد، به جای اینکه طبق روال معمول تا خط اعلان بعدی منتظر بماند. .Ar job می‌تواند یک عدد، یک رشته، .Ql \& , .Ql % , .Ql + , یا .Ql \- باشد، همان‌طور که در بخش .Sx Jobs توضیح داده شده است. همچنین متغیر شل .Ic notify را ببینید. . .It Ic onintr Op Cm \- Ns | Ns Ar label عملکرد شل در هنگام وقفه‌ها (interrupts) را کنترل می‌کند. بدون آرگومان، عملکرد پیش‌فرض شل در برابر وقفه‌ها را بازیابی می‌کند، که همانا خاتمه دادن به اسکریپت‌های شل یا بازگشت به سطح ورودی دستور ترمینال است. .Pp به همراه .Ql \- ، باعث می‌شود که تمام وقفه‌ها نادیده گرفته شوند. .Pp به همراه .Ar label ، باعث می‌شود که شل هنگام دریافت یک وقفه یا خاتمه یافتن یک فرآیند فرزند به دلیل وقفه، یک دستور .Dl goto Ar label را اجرا کند. .Pp اگر شل به‌صورت جداشده (detached) اجرا شده باشد و همچنین در فایل‌های راه‌اندازی سیستم (به .Sx FILES مراجعه کنید) که در هر صورت وقفه‌ها در آن‌ها غیرفعال هستند، .Ic onintr نادیده گرفته می‌شود. . .It Ic popd Xo .Op Fl p .Op Fl l .Op Fl n Ns | Ns Fl v .Op Cm + Ns Ar n .Xc بدون آرگومان، پشتهٔ دایرکتوری را خارج (pop) کرده و به دایرکتوری بالای جدید بازمی‌گردد. .Pp با یک عدد .Ql + Ns Ar n , مورد .Ar n Ns ‌اُم را در پشته دور می‌اندازد. .Pp در نهایت، همهٔ حالت‌های .Ic popd پشتهٔ دایرکتوری نهایی را چاپ می‌کنند، درست مانند .Ic dirs . متغیر پوستهٔ .Ic pushdsilent را می‌توان برای جلوگیری از این کار تنظیم کرد و فلگ .Fl p را می‌توان برای نادیده‌گرفتن .Ic pushdsilent به کار برد. فلگ‌های .Fl l , .Fl n و .Fl v اثری مشابه بر روی .Ic popd دارند همان‌طور که بر .Ic dirs دارند. (+) . .It Ic printenv Oo Ar name Oc No (+) نام‌ها و مقادیر تمام متغیرهای محیطی را چاپ می‌کند، یا با .Ar name , مقدار متغیر محیطی .Ar name را چاپ می‌کند. . .It Ic pushd Xo .Op Fl p .Op Fl l .Op Fl n Ns | Ns Fl v .Op Ar name Ns | Ns Cm + Ns Ar n .Xc بدون آرگومان، دو عنصر بالای پشتهٔ دایرکتوری را جابه‌جا می‌کند. اگر .Ic pushdtohome تنظیم شده باشد، .Ic pushd بدون آرگومان همانند .Dl pushd ~ مانند .Ic cd عمل می‌کند. (+) .Pp با .Ar name ، دایرکتوری کاری فعلی را به پشتهٔ دایرکتوری اضافه کرده (push) و به .Ar name تغییر مکان می‌دهد. اگر .Ar name برابر با .Ql \- باشد، به عنوان دایرکتوری کاری قبلی تفسیر می‌شود (بخش .Sx Filename substitution را ببینید). (+) اگر .Ic dunique تنظیم شده باشد، .Ic pushd پیش از اضافه کردن .Ar name به پشته، هر نمونه از آن را از پشته حذف می‌کند. (+) .Pp با یک شمارهٔ .Ql + Ns Ar n ، عنصر .Ar n Ns ـُمِ پشتهٔ دایرکتوری را می‌چرخاند تا به عنصر بالا (top) تبدیل شود و به آن تغییر مکان می‌دهد. با این حال، اگر .Ic dextract تنظیم شده باشد، .Dl pushd + Ns Ar n دایرکتوری .Ar n Ns ـُم را استخراج کرده، آن را به بالای پشته اضافه می‌کند و به آن تغییر مکان می‌دهد. (+) .Pp در نهایت، تمام اشکال .Ic pushd پشتهٔ نهایی دایرکتوری را درست مانند .Ic dirs چاپ می‌کنند. متغیر شل .Ic pushdsilent را می‌توان برای جلوگیری از این کار تنظیم کرد و فلگ .Fl p را می‌توان برای لغو اثر .Ic pushdsilent مشخص نمود. فلگ‌های .Fl l ، .Fl n و .Fl v اثری مشابه بر روی .Ic pushd دارند همان‌طور که بر روی .Ic dirs دارند. (+) . .It Ic rehash باعث محاسبهٔ مجدد جدول درهم‌سازی (hash table) داخلی محتویات دایرکتوری‌های موجود در متغیر .Ic path می‌شود. در صورتی که متغیر شل .Ic autorehash تنظیم نشده باشد و هنگام ورود به سیستم، دستورهای جدیدی به دایرکتوری‌های .Ic path اضافه شوند، به این دستور نیاز خواهد بود. با فعال بودن .Ic autorehash ، دستورهای جدید به‌طور خودکار پیدا می‌شوند، به جز در حالت خاصی که دستوری با همان نام در دایرکتوری دیگری از قبل در جدول درهم‌سازی وجود داشته باشد. همچنین کش دایرکتوری‌های خانگی ساخته‌شده توسط بسط تیلدا (tilde expansion) را پاک‌سازی می‌کند. . .It Ic repeat Ar count Ar command دستور .Ar command مشخص‌شده، که مشمول همان محدودیت‌های .Ar command در عبارت تک‌خطی .Ic if در بالا است، به تعداد .Ar count بار اجرا می‌شود. تغییر مسیرهای I/O دقیقاً یک بار اتفاق می‌افتند، حتی اگر .Ar count برابر با 0 باشد. . .It Ic rootnode Cm // Ns Ar nodename No (+) گره ریشه (rootnode) را به .Pa // Ns Ar nodename تغییر می‌دهد، به‌طوری که .Ql / به‌صورت .Ql // Ns Ar nodename تفسیر خواهد شد. (فقط در Domain/OS) . .El .Pp .Bl -tag -width 6n -compact . .It Ic sched No (+) .It Ic sched Xo .Op Cm + Ns .Ar hh Ns Cm \&: Ns Ar mm .Ar command (+) .Xc .It Ic sched Cm \- Ns Ar n No (+) شکل اول فهرست رویدادهای زمان‌بندی‌شده را چاپ می‌کند. متغیر شل .Ic sched را می‌توان برای تعیین قالبی که فهرست رویدادهای زمان‌بندی‌شده بر اساس آن چاپ می‌شود، مقداردهی کرد. .Pp شکل دوم .Ar command را به فهرست رویدادهای زمان‌بندی‌شده اضافه می‌کند. برای نمونه، .Bd -literal -offset indent > sched 11:00 echo It\e's eleven o\e'clock. .Ed .Pp باعث می‌شود که شل عبارت .Dl It's eleven o'clock\&. را در ساعت ۱۱ صبح چاپ کند. .Pp زمان می‌تواند در قالب ۱۲ ساعته AM/PM باشد: .Bd -literal -offset indent > sched 5pm set prompt='[%h] It\e's after 5; go home: >' .Ed .Pp یا می‌تواند نسبت به زمان فعلی تعیین شود: .Bd -literal -offset indent > sched +2:15 /usr/lib/uucp/uucico \-r1 \-sother .Ed .Pp مشخص‌کردن زمان به صورت نسبی نمی‌تواند از قالب AM/PM استفاده کند. .Pp شکل سوم مورد شماره .Ar n را از فهرست رویدادها حذف می‌کند: .Bd -literal -offset indent > sched 1 Wed Apr 4 15:42 /usr/lib/uucp/uucico \-r1 \-sother 2 Wed Apr 4 17:00 set prompt=[%h] It's after 5; go home: > > sched \-2 > sched 1 Wed Apr 4 15:42 /usr/lib/uucp/uucico \-r1 \-sother .Ed .Pp دستوری که در فهرست رویدادهای زمان‌بندی‌شده قرار دارد، درست پیش از چاپ اولین اعلان (prompt) پس از فرا رسیدن زمان زمان‌بندی‌شده اجرا می‌شود. ممکن است زمان دقیق اجرای دستور از دست برود، اما دستوری که موعد آن گذشته باشد در اولین اعلان بعدی اجرا خواهد شد. دستوری که موعد آن در زمان انتظار شل برای ورودی کاربر فرا برسد، بلافاصله اجرا می‌شود. با این حال، اجرای عادی فرمانی که در حال اجراست برای اجرای عنصری از فهرست رویدادهای زمان‌بندی‌شده متوقف نخواهد شد. .Pp این سازوکار مشابه، اما نه کاملاً یکسان با دستور .Xr at 1 در برخی سیستم‌های یونیکس است. بزرگ‌ترین عیب آن این است که ممکن است دستور را دقیقاً در زمان مشخص‌شده اجرا نکند. بزرگ‌ترین مزیت آن این است که از آنجا که .Ic sched مستقیماً از درون پوسته اجرا می‌شود، به متغیرهای پوسته و سایر ساختارها دسترسی دارد. این موضوع سازوکاری را برای تغییر محیط کاری کاربر بر اساس ساعت روز فراهم می‌کند. . .\" adjacant multi-tag items; add a blank .Pp . .It Ic set .It Ic set Ar name No \&... .It Ic set Ar name Ns Cm = Ns Ar word No \&... .It Ic set Xo .Op Fl r .Op Fl f Ns | Ns Fl l .Ar name Ns Cm =\&( Ns Ar wordlist Ns Cm \&) No \&... (+) .Xc .It Ic set Ar name Ns Cm \&[ Ns Ar index Ns Cm ]= Ns Ar word No \&... .It Ic set Fl r No (+) .It Ic set Fl r Ar name No \&... No (+) .It Ic set Fl r Ar name Ns Cm = Ns Ar word No \&... No (+) شکل اول دستور مقدار تمام متغیرهای پوسته را چاپ می‌کند. متغیرهایی که حاوی بیش از یک کلمه باشند، به صورت یک فهرست کلمات در داخل پرانتز چاپ می‌شوند. .Pp شکل دوم .Ar name را روی یک رشته‌ی تهی تنظیم می‌کند. .Pp شکل سوم .Ar name را روی یک تک‌کلمه‌ی .Ar word تنظیم می‌کند. .Pp شکل چهارم .Ar name را روی فهرست کلمات موجود در .Ar wordlist تنظیم می‌کند. .Pp در تمام موارد، مقدار با گسترش دستور و نام‌فایل جایگزین می‌شود. اگر .Fl r مشخص شده باشد، مقدار به صورت فقط‌خواندنی تنظیم می‌شود. اگر .Fl f یا .Fl l مشخص شده باشند، فقط کلمات یکتا با حفظ ترتیب آن‌ها تنظیم می‌شوند. .Fl f اولین رخداد یک کلمه را ترجیح می‌دهد و .Fl l آخرین رخداد را. .Pp شکل پنجم مؤلفهٔ .Ar index Ns ام .Ar name را به .Ar word تنظیم می‌کند؛ این مؤلفه باید از پیش وجود داشته باشد. .Pp شکل ششم تنها نام تمام متغیرهای شل را که فقط‌خواندنی هستند فهرست می‌کند. .Pp شکل هفتم .Ar name را صرف‌نظر از اینکه مقداری دارد یا خیر، فقط‌خواندنی می‌کند. .Pp شکل هشتم همانند شکل سوم است، اما هم‌زمان .Ar name را فقط‌خواندنی نیز می‌کند. .Pp این آرگومان‌ها را می‌توان برای مقداردهی و/یا فقط‌خواندنی کردن چندین متغیر در یک دستور set منفرد تکرار کرد. با این حال، توجه داشته باشید که بسط متغیرها پیش از انجام هرگونه تنظیم برای تمام آرگومان‌ها رخ می‌دهد. همچنین دقت کنید که .Ql = می‌تواند به هر دو مورد .Ar name و .Ar word بچسبد یا با فاصله از هر دوی آن‌ها جدا شود، اما نمی‌تواند تنها به یکی از آن‌ها بچسبد. همچنین دستور توکار .Ic unset را ببینید. . .El .Bl -tag -width 6n . .It Ic setenv Op Ar name Op Ar value بدون آرگومان، نام و مقدار تمام متغیرهای محیطی را چاپ می‌کند. .Pp به همراه .Ar name ، متغیر محیطی .Ar name را به .Ar value یا در صورت عدم وجود .Ar value ، به یک رشتهٔ تهی (null) تنظیم می‌کند. . .It Ic setpath Ar path No (+) معادل با .Xr setpath 1 . (فقط در Mach) . .It Ic setspath Cm LOCAL Ns | Ns Ar site Ns | Ns Ar cpu No \&... No (+) مسیر اجرای سیستم را تنظیم می‌کند. (فقط در TCF) . .It Ic settc Ar cap value No (+) به شل اعلام می‌کند که قابلیت ترمینالِ .Ar cap (همان‌طور که در .Xr termcap 5 تعریف شده) دارای مقدار .Ar value است. هیچ بررسی اعتبارسنجی‌ای (sanity check) انجام نمی‌شود. کاربران ترمینال Concept ممکن است نیاز داشته باشند از .Dl settc xn no استفاده کنند تا شکستن خطوط (wrapping) در راست‌ترین ستون به درستی انجام گیرد. . .It Ic setty Xo .Op Fl d Ns | Ns Fl q Ns | Ns Fl x .Op Fl a .Op Oo Cm + Ns | Ns Cm \- Oc Ns Ar mode (+) .Xc کنترل می‌کند که شل اجازه تغییر کدام حالت‌های tty (رجوع کنید به .Sx مدیریت ترمینال (+) ) را نمی‌دهد. گزینه‌های .Fl d ، .Fl q یا .Fl x به .Ic setty می‌گویند که به ترتیب بر روی مجموعه‌حالت‌های tty مربوط به .Sq edit ، .Sq quote یا .Sq execute عمل کند؛ بدون .Fl d ، .Fl q یا .Fl x ، مجموعه .Sq execute استفاده می‌شود. .Pp بدون آرگومان‌های دیگر، .Ic setty حالت‌هایی از مجموعه‌ی انتخاب‌شده را که به صورت روشن .Pq Sq Cm + Ns Ar mode یا خاموش .Pq Sq Cm - Ns Ar mode ثابت شده‌اند، فهرست می‌کند. حالت‌های موجود، و در نتیجه نحوه نمایش، از سیستمی به سیستم دیگر متفاوت است. با .Fl a ، همه حالت‌های tty را در مجموعه‌ی انتخاب‌شده، صرف‌نظر از اینکه ثابت شده‌اند یا خیر، فهرست می‌کند. با .Cm + Ns Ar mode ، .Cm - Ns Ar mode یا .Ar mode ، حالت .Ar mode را در مجموعه‌ی انتخاب‌شده به صورت روشن یا خاموش ثابت می‌کند، یا کنترل را از .Ar mode برمی‌دارد. برای نمونه، .Dl setty +echok echoe حالت .Ql echok را روشن نگه می‌دارد و به دستورات اجازه می‌دهد تا حالت .Ql echoe را روشن یا خاموش کنند، هر دو در زمانی که پوسته در حال اجرای دستورات است. . .It Ic setxvers Oo Ar string Oc No (+) پیشوند نسخه آزمایشی را روی .Ar string تنظیم می‌کند، یا در صورت حذف .Ar string آن را پاک می‌کند. (فقط در TCF) . .It Ic shift Op Ar variable بدون آرگومان، .Ic argv Ns [1] را دور می‌اندازد و اعضای .Ic argv را به سمت چپ شیفت می‌دهد. تنظیم نشدن .Ic argv یا داشتن مقداری با کمتر از یک کلمه، یک خطا محسوب می‌شود. .Pp همراه با .Ar variable ، همان عملکرد را روی .Ar variable انجام می‌دهد. . .It Ic source Oo Fl h Oc Ar name Op Ar args No \&... شِل دستورها را از .Ar name خوانده و اجرا می‌کند. این دستورها در فهرست تاریخچه قرار نمی‌گیرند. اگر هرگونه .Ar args داده شود، در .Ic argv قرار می‌گیرند. (+) دستورهای .Ic source می‌توانند تو در تو باشند؛ اگر بیش از حد عمیق تو در تو شوند، ممکن است توصیف‌کننده‌های فایل شِل تمام شوند. بروز خطا در یک .Ic source در هر سطحی، تمام دستورهای .Ic source تو در تو را متوقف می‌کند. .Pp همراه با .Fl h ، دستورها به جای اجرا شدن در فهرست تاریخچه قرار می‌گیرند، بسیار شبیه به .Dl history \-L . .It Ic stop % Ns Ar job Ns | Ns Ar pid No \&... کارهای یا فرآیندهای مشخص‌شده‌ای را که در پس‌زمینه در حال اجرا هستند متوقف می‌کند. .Ar job می‌تواند یک عدد، یک رشته، .Ql \& , .Ql % , .Ql + یا .Ql \- باشد، همان‌طور که در بخش .Sx Jobs شرح داده شده است. .Pp هیچ .Ar job پیش‌فرضی وجود ندارد؛ تنها وارد کردن .Dl stop کار جاری را متوقف نمی‌کند. . .It Ic suspend باعث متوقف شدن پوسته در جای خود می‌شود، درست مانند زمانی که سیگنال توقف با .Ic ^Z برای آن ارسال شده باشد. این دستور بیشتر برای متوقف کردن پوسته‌هایی به کار می‌رود که توسط .Xr su 1 شروع شده‌اند. . .El .Pp .Bl -tag -width 6n -compact . .It Ic switch Cm \&( Ns Ar string Ns Cm \&) .It Ic case Ar str1 Ns \&: .It Ic \ \ \ \ \&... .It Ic \ \ \ \ breaksw .It Ic \&... .It Ic default\&: .It Ic \ \ \ \ \&... .It Ic \ \ \ \ breaksw .It Ic endsw هر برچسب case به‌طور متوالی با .Ar string مشخص‌شده مطابقت داده می‌شود؛ این رشته ابتدا دستخوش بسط دستور و نام فایل قرار می‌گیرد. از نویسه‌های کنترلیِ فایل (metacharacters) شامل .Ql * ، .Ql \&? و .Ql [...] می‌توان در برچسب‌های case استفاده کرد که این برچسب‌ها دستخوش بسط متغیر می‌شوند. اگر پیش از رسیدن به برچسب .Ic default هیچ‌یک از برچسب‌ها مطابقت نداشته باشند، اجرا از پس از برچسب .Ic default آغاز می‌شود. هر برچسب case و برچسب .Ic default باید در ابتدای یک خط قرار گیرند. دستور .Ic breaksw باعث ادامهٔ اجرا پس از .Ic endsw می‌شود. در غیر این صورت، روند اجرای دستورات ممکن است مانند زبان C از میان برچسب‌های case و برچسب‌های default عبور کند (fall through). اگر هیچ برچسبی مطابقت نداشته باشد و بخش default نیز وجود نداشته باشد، اجرا پس از .Ic endsw ادامه می‌یابد. . .El .Bl -tag -width 6n . .It Ic telltc No (+) مقادیر تمام قابلیت‌های ترمینال را فهرست می‌کند (نگاه کنید به .Xr termcap 5 ) . . .It Ic termname Oo Ar termtype Oc No (+) بررسی می‌کند که آیا .Ar termtype (یا مقدار فعلی .Ev TERM اگر هیچ .Ar termtype مشخص نشده باشد) مدخلی در پایگاه‌داده .Xr termcap 5 یا .Xr terminfo 5 میزبان دارد یا خیر. در صورت وجود مدخل، نوع ترمینال را در خروجی استاندارد چاپ کرده و مقدار 0 را برمی‌گرداند؛ در غیر این صورت 1 را برمی‌گرداند. . .It Ic time Op Ar command دستور .Ar command (که باید یک دستور ساده باشد، نه یک alias، یک خط لوله، یک لیست دستور یا یک لیست دستور پرانتزگذاری‌شده) را اجرا کرده و خلاصه‌ای از زمان را مطابق آنچه ذیل متغیر .Ic time توصیف شده، چاپ می‌کند. در صورت لزوم، یک شل اضافی برای چاپ آمار زمانی پس از تکمیل دستور ایجاد می‌شود. .Pp بدون .Ar command ، خلاصه‌ای از زمان را برای شل فعلی و فرزندان آن چاپ می‌کند. . .It Ic umask Op Ar value ماسک ایجاد فایل را روی .Ar value که در مبنای هشت (اکتال) داده می‌شود، تنظیم می‌کند. مقادیر متداول برای این ماسک عبارتند از 002، که تمام دسترسی‌ها را به گروه و دسترسی خواندن و اجرا را به دیگران می‌دهد، و 022، که دسترسی خواندن و اجرا را به گروه و دیگران می‌دهد. .Pp بدون .Ar value ، ماسک فعلی ایجاد فایل را چاپ می‌کند. . .It Ic unalias Ar pattern تمام نام‌های مستعاری (aliases) را که نام آن‌ها با .Ar pattern مطابقت دارد، حذف می‌کند. بنابراین .Dl unalias * تمام aliasها را حذف می‌کند. اگر هیچ موردی برای .Ic unalias شدن وجود نداشته باشد، خطا محسوب نمی‌شود. . .It Ic uncomplete Ar pattern No (+) تمام تکمیل‌هایی را که نام آن‌ها با .Ar pattern مطابق باشد حذف می‌کند. بنابراین .Dl uncomplete * تمام تکمیل‌ها را حذف می‌کند. اگر هیچ موردی برای .Ic uncomplete شدن وجود نداشته باشد، خطا محسوب نمی‌شود. . .It Ic unhash استفاده از جدول درهم‌سازی (hash table) داخلی را برای افزایش سرعت در پیدا کردن محل برنامه‌های اجرا شده غیرفعال می‌کند. . .It Ic universe Ar universe No (+) محیط universe را روی .Ar universe تنظیم می‌کند. (فقط در Masscomp/RTU) . .It Ic unlimit Oo Fl hf Oc Op Ar resource محدودیت اعمال‌شده بر روی .Ar resource یا در صورت مشخص نشدن .Ar resource ، تمام محدودیت‌های .Ar resource را حذف می‌کند. .Pp با گزینهٔ .Fl h ، محدودیت‌های سخت (hard limits) متناظر حذف می‌شوند. تنها کاربر ارشد (super-user) اجازهٔ انجام این کار را دارد. .Pp توجه داشته باشید که ممکن است .Ic unlimit با موفقیت به پایان نرسد، زیرا اکثر سیستم‌ها اجازه نمی‌دهند که .Ic descriptors نامحدود باشند. .Pp با گزینهٔ .Fl f از خطاها چشم‌پوشی می‌شود. . .It Ic unset Ar pattern تمام متغیرهایی را که نام آن‌ها با .Ar pattern مطابق باشد حذف می‌کند، مگر اینکه فقط‌خواندنی (read-only) باشند. بنابراین .Dl unset * تمام متغیرها را به جز موارد فقط‌خواندنی حذف می‌کند؛ این کار ایدهٔ بدی است. .Pp این‌که چیزی برای .Ic unset شدن وجود نداشته باشد، خطا محسوب نمی‌شود. . .It Ic unsetenv Ar pattern تمام متغیرهای محیطی را که نام آن‌ها با .Ar pattern تطابق دارد حذف می‌کند. بنابراین .Dl unsetenv * تمام متغیرهای محیطی را حذف می‌کند؛ این کار ایدهٔ بدی است. .Pp این‌که چیزی با .Ic unsetenv حذف نشود، خطا محسوب نمی‌شود. . .It Ic ver Oo Ar systype Oo Ar command Oc Oc No (+) بدون آرگومان، مقدار .Ev SYSTYPE را چاپ می‌کند. .Pp همراه با .Ar systype , مقدار .Ev SYSTYPE را روی .Ar systype تنظیم می‌کند. .Pp همراه با .Ar systype و .Ar command , دستور .Ar command را تحت .Ar systype اجرا می‌کند. .Ar systype می‌تواند .Ql bsd4.3 یا .Ql sys5.3 باشد. .Pp (فقط در Domain/OS) . .It Ic wait پوسته منتظر تمام کارهای پس‌زمینه می‌ماند. اگر پوسته تعاملی باشد، یک وقفه انتظار را مختل کرده و باعث می‌شود پوسته نام‌ها و شماره کارهای تمام کارهای باقی‌مانده را چاپ کند. . .It Ic warp Ar universe No (+) جهان (universe) را به .Ar universe تنظیم می‌کند. (فقط در Convex/OS) . .It Ic watchlog No (+) نامی جایگزین برای دستور داخلی .Ic log . تنها در صورتی در دسترس است که پوسته بدین صورت کامپایل شده باشد؛ متغیر پوستهٔ .Ic version را ببینید. . .It Ic where Ar command No (+) تمامی موارد شناخته‌شده از .Ar command را گزارش می‌دهد، شامل نام‌های مستعار (aliases)، دستورهای داخلی و فایل‌های اجرایی در .Ic path . . .It Ic which Ar command No (+) دستوری را نمایش می‌دهد که پس از اعمال جایگزینی‌ها، جستجوی .Ic path و غیره توسط پوسته اجرا خواهد شد. این دستور داخلی درست مانند .Xr which 1 است، اما نام‌های مستعار و دستورهای داخلی .Nm را به‌درستی گزارش می‌کند و ۱۰ تا ۱۰۰ برابر سریع‌تر است. همچنین دستور ویرایشگر .Ic which-command را ببینید. . .El .Pp .Bl -tag -width 6n -compact . .It Ic while Cm \&( Ns Ar expr Ns Cm \&) .It Ic \&... .It Ic end دستورهای بین .Ic while و .Ic end متناظر با آن را تا زمانی که .Ar expr (یک عبارت، همان‌طور که در بخش .Sx Expressions توصیف شده) مقداری غیر صفر ارزیابی شود، اجرا می‌کند. .Ic while و .Ic end باید به‌تنهایی در خطوط ورودی خود ظاهر شوند. .Ic break و .Ic continue ممکن است برای پایان دادن یا ادامه دادن زودهنگام حلقه استفاده شوند. اگر ورودی یک ترمینال باشد، در نخستین بار اجرای حلقه مانند .Ic foreach از کاربر ورودی درخواست می‌شود. .El . .Ss نام‌های مستعار ویژه (+) در صورت تنظیم، هر یک از این نام‌های مستعار به‌طور خودکار در زمان مشخص‌شده اجرا می‌شوند. همگی آن‌ها در ابتدا تعریف‌نشده هستند. .Pp نام‌های مستعار ویژهٔ پشتیبانی‌شده عبارتند از: . .Bl -tag -width 6n . .It Ic beepcmd زمانی اجرا می‌شود که پوسته بخواهد زنگ ترمینال را به صدا درآورد. . .It Ic cwdcmd پس از هر بار تغییر دایرکتوری کاری اجرا می‌شود. برای مثال، اگر کاربر در یک سامانه پنجره X با استفاده از .Xr xterm 1 و یک مدیر پنجره بازوالدین‌ساز که از نوار عنوان پشتیبانی می‌کند، مانند .Xr twm 1 کار کند و دستور زیر را اجرا کند: .Bd -literal -offset indent > alias cwdcmd 'echo \-n "^[]2;${HOST}:$cwd ^G"' .Ed .Pp آنگاه پوسته عنوان .Xr xterm 1 در حال اجرا را به نام میزبان، یک .Ql \&: و دایرکتوری کاری جاری کامل تغییر می‌دهد. روشی حرفه‌ای‌تر برای انجام این کار بدین صورت است: .Bd -literal -offset indent > alias cwdcmd 'echo \-n "^[]2;${HOST}:$cwd^G^[]1;${HOST}^G"' .Ed .Pp این کار نام میزبان و دایرکتوری کاری را در نوار عنوان قرار می‌دهد، اما تنها نام میزبان را در منوی مدیریت آیکون‌ها درج می‌کند. .Pp توجه داشته باشید که قرار دادن یک .Ic cd ، .Ic pushd یا .Ic popd درون .Ic cwdcmd ممکن است باعث ایجاد یک حلقه بی‌نهایت شود. به عقیده نویسنده، هر کس چنین کاری کند به آنچه مستحق آن است خواهد رسید. . .It Ic jobcmd پیش از اجرای هر دستور، یا هنگامی که دستور تغییر وضعیت می‌دهد، اجرا می‌شود. این مشابه .Ic postcmd است، اما دستورهای داخلی را چاپ نمی‌کند. .Bd -literal -offset indent > alias jobcmd 'echo \-n "^[]2\e;\e!#:q^G"' .Ed .Pp سپس اجرای .Dl vi foo.c رشته دستور را در نوار عنوان xterm قرار می‌دهد. . .It Ic helpcommand توسط دستور ویرایشگر .Ic run-help فراخوانی می‌شود. نام دستوری که برای آن درخواست راهنما شده است، به‌عنوان تنها آرگومان ارسال می‌گردد. به‌عنوان مثال، اگر فردی چنین کند: .Bd -literal -offset indent > alias helpcommand '\e!:1 --help' .Ed .Pp آنگاه با استفاده از قرارداد فراخوانی راهنمای GNU، نمایش راهنمای خود دستور فراخوانی خواهد شد. .Pp در حال حاضر راه ساده‌ای برای پشتیبانی از قراردادهای مختلف فراخوانی وجود ندارد (مانند .Ql -h مرسوم در Unix)، مگر با استفاده از جدولی متشکل از دستورهای بسیار. . .It Ic periodic هر .Ic tperiod دقیقه یک‌بار اجرا می‌شود. این سازوکار، روشی مناسب برای بررسی تغییرات رایج اما کم‌تکرار مانند ایمیل‌های جدید فراهم می‌آورد. برای نمونه، اگر شخصی چنین کند: .Bd -literal -offset indent > set tperiod = 30 > alias periodic checknews .Ed .Pp آنگاه برنامه .Xr checknews 1 هر ۳۰ دقیقه یک‌بار اجرا خواهد شد. .Pp اگر .Ic periodic تنظیم شده باشد اما .Ic tperiod تنظیم نشده یا مقدار آن 0 باشد، .Ic periodic رفتاری مشابه .Ic precmd خواهد داشت. . .It Ic precmd درست پیش از چاپ هر اعلان (prompt) اجرا می‌شود. به عنوان مثال، اگر کسی دستور زیر را اجرا کند: .Bd -literal -offset indent > alias precmd date .Ed .Pp آنگاه .Xr date 1 درست پیش از این‌که شل برای هر دستور اعلان را نمایش دهد، اجرا می‌شود. .Pp هیچ محدودیتی در مورد آنچه .Ic precmd می‌تواند برای انجام آن تنظیم شود وجود ندارد، اما باید احتیاط به خرج داد. . .It Ic postcmd پیش از اجرای هر دستور اجرا می‌شود. .Bd -literal -offset indent > alias postcmd 'echo \-n "^[]2\e;\e!#:q^G"' .Ed .Pp سپس اجرای .Dl vi foo.c رشته دستور را در نوار عنوان xterm قرار می‌دهد. . .It Ic shell مفسر را برای اسکریپت‌های اجرایی که خودشان مفسری را مشخص نکرده‌اند تعیین می‌کند. کلمه اول باید یک مسیر کامل به مفسر مورد نظر باشد (مانند .Ql /bin/csh یا .Ql /usr/local/bin/tcsh ) . . .El . .Ss "متغیرهای ویژه شل" متغیرهایی که در این بخش شرح داده شده‌اند، معنای خاصی برای شل دارند. .Pp شل متغیرهای .Ic addsuffix ، .Ic argv ، .Ic autologout ، .Ic csubstnonl ، .Ic command ، .Ic echo_style ، .Ic edit ، .Ic gid ، .Ic group ، .Ic home ، .Ic loginsh ، .Ic oid ، .Ic path ، .Ic prompt ، .Ic prompt2 ، .Ic prompt3 ، .Ic shell ، .Ic shlvl ، .Ic tcsh ، .Ic term ، .Ic tty ، .Ic uid ، .Ic user و .Ic version را در هنگام راه‌اندازی مقداردهی می‌کند؛ این متغیرها پس از آن تغییر نمی‌کنند مگر آنکه توسط کاربر تغییر داده شوند. شل متغیرهای .Ic cwd ، .Ic dirstack ، .Ic owd و .Ic status را در صورت لزوم به‌روزرسانی کرده، و متغیر .Ic logout را هنگام خروج از شل (logout) تنظیم می‌کند. .Pp شل متغیرهای .Ic group ، .Ic home ، .Ic path ، .Ic shlvl ، .Ic term و .Ic user را با متغیرهای محیطی با همین نام‌ها همگام‌سازی می‌کند: هر بار که متغیر محیطی تغییر کند، شل متغیر متناظر آن در شل را نیز متناسب با آن تغییر می‌دهد (مگر اینکه متغیر شل فقط-خواندنی باشد) و بالعکس. توجه داشته باشید اگرچه .Ic cwd و .Ev PWD معنای یکسانی دارند، به این شیوه همگام‌سازی نمی‌شوند، و این که شل به‌طور خودکار فرمت‌های متفاوت .Ic path و .Ev PATH را به یکدیگر تبدیل می‌کند. . .Pp متغیرهای ویژه و پشتیبانی‌شدهٔ شل عبارتند از: . .Bl -tag -width 6n . .It Ic addsuffix No (+) در صورت تنظیم بودن، تکمیل نام فایل هنگام تطابق دقیق، یک .Ql / به انتهای دایرکتوری‌ها و یک فاصله (space) به انتهای فایل‌های معمولی اضافه می‌کند. به طور پیش‌فرض تنظیم است. . .It Ic afsuser No (+) در صورت تنظیم بودن، قابلیت قفل خودکار .Ic autologout Ns \& به‌جای نام کاربری محلی، از مقدار این متغیر برای احراز هویت kerberos استفاده می‌کند. . .It Ic ampm No (+) در صورت تنظیم بودن، تمام زمان‌ها در قالب ۱۲ ساعتهٔ AM/PM نمایش داده می‌شوند. . .It Ic anyerror No (+) این متغیر تعیین می‌کند که چه مقداری به متغیر .Ic status منتقل شود. برای اطلاعات بیشتر به توضیحات متغیر .Ic status در ادامه مراجعه کنید. . .It Ic argv آرگومان‌های ارائه‌شده به شل. پارامترهای موضعی از .Ic argv گرفته می‌شوند؛ یعنی .Ql $1 با .Ql $argv[1] جایگزین می‌شود، و غیره. به طور پیش‌فرض تنظیم می‌شود، اما معمولاً در شل‌های تعاملی خالی است. . .It Ic autocorrect No (+) در صورت تنظیم بودن، دستور ویرایشگر .Ic spell-word پیش از هر بار تلاش برای تکمیل خودکار، به طور خودکار فراخوانی می‌شود. . .It Ic autoexpand No (+) در صورت تنظیم بودن، دستور ویرایشگر .Ic expand-history پیش از هر بار تلاش برای تکمیل خودکار، به طور خودکار فراخوانی می‌شود. .Pp اگر این مقدار برابر با .Ql onlyhistory تنظیم شود، آن‌گاه تنها تاریخچه بسط داده خواهد شد و تکمیل مجدد، نام فایل‌ها را بسط می‌دهد. . .It Ic autolist No (+) در صورت تنظیم، گزینه‌های محتمل پس از یک تکمیل مبهم فهرست می‌شوند. .Pp اگر برابر با .Ql ambiguous تنظیم شود، گزینه‌های محتمل تنها زمانی فهرست می‌شوند که هیچ نویسه جدیدی با تکمیل افزوده نشود. . .It Ic autologout No (+) کلمه اول، تعداد دقایق عدم فعالیت قبل از خروج خودکار از سیستم است. کلمه اختیاری دوم، تعداد دقایق عدم فعالیت قبل از قفل شدن خودکار است. هنگامی که پوسته به‌طور خودکار خارج می‌شود، عبارت .Dl auto-logout را چاپ کرده، متغیر .Ic logout را به .Ql automatic تنظیم می‌کند و خارج می‌شود. هنگامی که پوسته به‌طور خودکار قفل می‌شود، کاربر برای ادامه کار ملزم به وارد کردن رمز عبور خود خواهد بود. پنج بار تلاش ناموفق منجر به خروج خودکار از سیستم می‌شود. .Pp به‌طور پیش‌فرض در پوسته‌های ورود و مدیر سیستم (کاربر ارشد) به .Ql 60 (خروج خودکار پس از ۶۰ دقیقه، و بدون قفل شدن) تنظیم شده است، اما نه در حالتی که پوسته تشخیص دهد تحت یک سامانه پنجره‌ای اجرا می‌شود (یعنی متغیر محیطی .Ev DISPLAY تنظیم شده باشد)، یا tty یک pseudo-tty (pty) باشد یا پوسته به این شکل کامپایل نشده باشد (متغیر پوسته .Ic version را ببینید). .Pp برای غیرفعال کردن خروج خودکار، متغیر .Ic autologout را لغو تنظیم (unset) کرده یا آن را برابر با .Ql 0 قرار دهید. همچنین متغیرهای پوسته .Ic afsuser و .Ic logout را نیز ببینید. . .It Ic autorehash No (+) در صورت تنظیم، اگر دستوری در جدول درهم‌سازی (هش) پیدا نشود، جدول هش داخلی محتویات دایرکتوری‌های موجود در متغیر .Ic path مجدداً محاسبه خواهد شد. علاوه بر این، در صورت تنظیم به ترتیب روی .Ql complete یا .Ql correct فهرست دستورهای در دسترس برای هر تلاش جهت تکمیل دستور یا تصحیح املایی بازسازی می‌شود؛ اگر روی .Ql always تنظیم شود، این کار برای هر دو مورد انجام خواهد شد. . .It Ic backslash_quote No (+) در صورت تنظیم، بک‌اسلش‌ها (`\e') همیشه .Ql \e ، .Ql \&' و .Ql \&" را نقل‌قول (quote) می‌کنند. این امر ممکن است انجام کارهای پیچیده نقل‌قول را آسان‌تر کند، اما می‌تواند در اسکریپت‌های .Xr csh 1 باعث خطاهای نحوی (syntax errors) شود. . .It Ic catalog نام فایل کاتالوگ پیام. در صورت تنظیم، .Nm به جای .Pa tcsh پیش‌فرض، از .Pa tcsh.${catalog} به عنوان کاتالوگ پیام استفاده می‌کند. . .It Ic cdpath فهرستی از دایرکتوری‌ها که در صورت پیدا نشدن زیردایرکتوری‌ها در دایرکتوری فعلی، .Ic cd باید در آن‌ها جستجو کند. . .It Ic cdtohome No (+) در صورت عدم تنظیم، .Ic cd به .Ar name دایرکتوری نیاز دارد و اگر این آرگومان حذف شود، به دایرکتوری .Ic home نخواهد رفت. این متغیر به طور پیش‌فرض تنظیم شده است. . .It Ic color در صورت تنظیم، نمایش رنگی را برای دستور توکار .Ic ls\-F فعال می‌کند و آرگومان .Fl \-color=auto را به .Xr ls 1 ارسال می‌نماید (یا .Fl \-color=always در صورتی که .Ev CLICOLOR_FORCE تنظیم شده باشد). همچنین می‌توان آن را تنها روی .Ql ls\-F یا تنها روی .Ql ls تنظیم کرد تا رنگ‌ها فقط برای یک دستور خاص فعال شوند. تنظیم آن بدون مقدار، معادل با تنظیم آن روی .Ql (ls\-F ls) است. اگر خروجی به یک ترمینال هدایت نشده باشد، رنگ غیرفعال می‌شود، مگر اینکه .Ev CLICOLOR_FORCE تنظیم شده باشد. . .It Ic colorcat در صورت تنظیم، توالی‌های فرار رنگی را برای فایل‌های پیام NLS فعال می‌کند و پیام‌های NLS را به‌صورت رنگی نمایش می‌دهد. . .It Ic command No (+) در صورت تنظیم، دستوری است که با گزینهٔ .Fl c به شل ارسال شده است. . .It Ic compat_expr No (+) در صورت تنظیم، شل عبارت‌ها را مانند .Xr csh 1 اصلی، از راست به چپ ارزیابی می‌کند. . .It Ic complete No (+) اگر روی .Ql igncase تنظیم شود، تکمیل دستورها به بزرگ و کوچکی حروف غیرحساس می‌شود. .Pp اگر روی .Ql enhance تنظیم شود، تکمیل علاوه بر نادیده گرفتن بزرگی و کوچکی حروف، خط تیره و زیرخط را معادل یکدیگر در نظر می‌گیرد؛ همچنین با نقطه، خط تیره و زیرخط .Po .Ql \&. ، .Ql \- و .Ql _ .Pc به‌عنوان جداکنندهٔ کلمات رفتار خواهد کرد. .Pp اگر روی .Ql Enhance تنظیم شود، تکمیل دستورها نویسه‌های بزرگ و خط تیره پایین (underscore) را به‌صورت صریح مطابقت می‌دهد و نویسه‌های کوچک و خط تیره را بدون حساسیت به بزرگی و کوچکی حروف تطبیق می‌دهد؛ همچنین نقطه‌ها، خط تیره‌ها و خط‌های تیره پایین را به‌عنوان جداکننده کلمات در نظر می‌گیرد. . .It Ic continue No (+) اگر روی فهرستی از دستورها تنظیم شود، شل به جای اجرای یک دستور جدید، دستورهای فهرست‌شده را ادامه خواهد داد. . .It Ic continue_args No (+) مشابه continue است، با این تفاوت که شل دستور زیر را اجرا می‌کند: .Bd -literal -offset indent echo \`pwd\` $argv > ~/._pause; % .Ed . .It Ic correct No (+) اگر روی .Ql cmd تنظیم شود، املای دستورها به‌طور خودکار تصحیح می‌شود. .Pp اگر روی .Ql complete تنظیم شود، دستورها به‌طور خودکار تکمیل می‌شوند. .Pp اگر روی .Ql all تنظیم شود، تمام خط فرمان تصحیح می‌گردد. . .It Ic csubstnonl No (+) اگر تنظیم شود، نویسه‌های خط جدید (newlines) و بازگشت به ابتدای خط (carriage returns) در جایگزینی دستور با فاصله جایگزین می‌شوند. به‌طور پیش‌فرض تنظیم شده است. . .It Ic cwd مسیر نام کامل دایرکتوری فعلی. همچنین متغیرهای شل .Ic dirstack و .Ic owd را ببینید. . .It Ic dextract No (+) اگر تنظیم شود، .Dl pushd + Ns Ar n دایرکتوری .Ar n Ns ام را از پشته دایرکتوری‌ها استخراج می‌کند، به جای این‌که آن را با چرخش به بالای پشته بیاورد. . .It Ic dirsfile No (+) مکان پیش‌فرضی که در آن .Dl dirs \-S و .Dl dirs \-L به‌دنبال یک فایل تاریخچه می‌گردند. در صورت عدم تنظیم، .Pa ~/.cshdirs استفاده می‌شود. از آنجا که به‌طور معمول تنها .Pa ~/.tcshrc پیش از .Pa ~/.cshdirs بارگذاری (source) می‌شود، .Ic dirsfile باید در .Pa ~/.tcshrc تنظیم شود و نه در .Pa ~/.login . . .It Ic dirstack No (+) آرایه‌ای از تمام دایرکتوری‌های موجود در پشتهٔ دایرکتوری (directory stack). .Sq $dirstack[1] دایرکتوری کاری فعلی است، .Sq $dirstack[2] اولین دایرکتوری روی پشته است و الی آخر. توجه داشته باشید که دایرکتوری کاری فعلی .Sq $dirstack[1] است اما در جایگزینی‌های پشتهٔ دایرکتوری برابر با .Ql =0 می‌باشد. می‌توان پشته را به‌طور دلخواه با تنظیم .Ic dirstack تغییر داد، اما عنصر اول (دایرکتوری کاری فعلی) همیشه درست باقی می‌ماند. همچنین متغیرهای پوستهٔ .Ic cwd و .Ic owd را ببینید. . .It Ic dspmbyte No (+) تنها زمانی تأثیر دارد که .Ql dspm به‌عنوان بخشی از متغیر پوستهٔ .Ic version فهرست شده باشد. .Pp اگر روی .Ql euc تنظیم شود، نمایش و ویرایش کدهای EUC-kanji (ژاپنی) را فعال می‌کند. .Pp اگر روی .Ql sjis تنظیم شود، نمایش و ویرایش کد Shift-JIS (ژاپنی) را فعال می‌کند. .Pp اگر روی .Ql big5 تنظیم شود، نمایش و ویرایش کد Big5 (چینی) را فعال می‌کند. .Pp اگر روی .Ql utf8 تنظیم شود، نمایش و ویرایش کد Utf8 (یونیکد) را فعال می‌کند. .Pp اگر .Em دقیقاً روی ۲۵۶ نویسه در قالب زیر تنظیم شود، نمایش و ویرایش قالب اصلی کدهای چندبایتی (multi-byte) را فعال می‌کند: .Pp .Dl > set dspmbyte = Ar NNN Ns No \&... Ns Em \&[250 characters\&] Ns No \&... Ns Ar NNN .Pp هر نویسه .Ar N در این مقدارِ ۲۵۶ نویسه‌ای، (از چپ به راست) با کدهای اسکی 0x00, 0x01, 0x02, ..., 0xfd, 0xfe, 0xff در همان اندیس متناظر است. هر نویسه روی عدد ۰، ۱، ۲ یا ۳ تنظیم می‌شود که دارای این معانی هستند: .Pp .Bl -tag -width ".Sy Number" -offset indent -compact .It Sy Number .Sy Multi-byte purpose .Pp .It Li 0 برای نویسه‌های چندبایتی استفاده نمی‌شود. .It Li 1 برای اولین بایت یک نویسهٔ چندبایتی استفاده می‌شود. .It Li 2 برای دومین بایت یک نویسهٔ چندبایتی استفاده می‌شود. .It Li 3 هم برای اولین بایت و هم برای دومین بایت یک نویسهٔ چندبایتی استفاده می‌شود. .El .Pp برای نمونه، اگر روی ۲۵۶ نویسه تنظیم شود که با .Ql 001322 آغاز می‌شوند، مقدار بدین صورت تفسیر می‌شود: . .Bl -column -offset indent ".Sy Character" ".Sy ASCII" "" .It Sy Character Ta Sy ASCII Ta Sy Multi-byte character use .Pp .It Li 0 Ta 0x00 Ta استفاده نمی‌شود. .It Li 0 Ta 0x01 Ta استفاده نمی‌شود. .It Li 1 Ta 0x02 Ta بایت اول. .It Li 3 Ta 0x03 Ta بایت اول و بایت دوم. .It Li 2 Ta 0x04 Ta بایت دوم. .It Li 2 Ta 0x05 Ta بایت دوم. .El .Pp نسخه GNU coreutils از .Xr ls 1 نمی‌تواند نام فایل‌های چندبایتی را بدون گزینه .Fl N .Pq Fl -literal نمایش دهد. اگر از این نسخه استفاده می‌کنید، کلمه دوم dspmbyte را روی .Ql ls تنظیم کنید. در غیر این صورت، برای مثال، .Dl ls\-F -l نمی‌تواند نام فایل‌های چندبایتی را نمایش دهد. .Pp توجه داشته باشید که این متغیر تنها زمانی قابل استفاده است که KANJI و DSPMBYTE در زمان کامپایل تعریف شده باشند. . .It Ic dunique No (+) در صورت تنظیم، .Ic pushd هر نمونه از .Ar name را پیش از قرار دادن آن در پشته، از پشته حذف می‌کند. . .It Ic echo در صورت تنظیم، هر دستور به همراه آرگومان‌هایش درست پیش از اجرا بازتاب (echo) می‌شود. برای دستورهای غیرداخلی (non-builtin)، تمام بسط‌ها پیش از بازتاب رخ می‌دهند. دستورهای داخلی پیش از جایگزینی دستور و نام فایل بازتاب داده می‌شوند، زیرا این جایگزینی‌ها سپس به صورت گزینشی انجام می‌شوند. توسط گزینه خط فرمان .Fl x تنظیم می‌شود. . .It Ic echo_style No (+) سبک و شیوه دستور داخلی .Ic echo . می‌تواند روی مقادیر زیر تنظیم شود: . .Bl -tag -width ".Sy Value" -offset indent .It Sy مقدار .Ic echo .Sy سبک .It Li bsd اگر اولین آرگومان .Fl n باشد خط جدید چاپ نمی‌کند؛ پیش‌فرض برای .Xr csh 1 . . .It Li sysv توالی‌های فرار با بک‌اسلش (backslashed escape sequences) را در رشته‌های echo تشخیص می‌دهد. . .It Li both هم فلگ .Fl n و هم توالی‌های فرار با بک‌اسلش را تشخیص می‌دهد؛ پیش‌فرض برای .Nm . . .It Li none هیچ‌کدام را تشخیص نمی‌دهد. .El .Pp به‌طور پیش‌فرض روی مقدار پیش‌فرض سیستم محلی تنظیم می‌شود. گزینه‌های BSD و System V در صفحات راهنمای .Xr echo 1 روی سیستم‌های مربوطه توضیح داده شده‌اند. . .It Ic edit No (+) در صورت تنظیم، از ویرایشگر خط فرمان استفاده می‌شود. به‌طور پیش‌فرض در پوسته‌های تعاملی تنظیم شده است. . .It Ic editors No (+) فهرستی از نام دستورها برای دستور ویرایشگر .Ic run-fg-editor جهت تطبیق. در صورت عدم تنظیم، متغیرهای محیطی .Ev EDITOR .Ql ( ed در صورت عدم تنظیم) و .Ev VISUAL .Ql ( vi در صورت عدم تنظیم) به جای آن استفاده خواهند شد. . .It Ic ellipsis No (+) در صورت تنظیم، توالی‌های خط اعلان .Ql %c ، .Ql %. و .Ql \&%C (متغیر پوستهٔ .Ic prompt را ببینید) دایرکتوری‌های نادیده‌گرفته‌شده را به جای .Ql /< Ns Ar skipped Ns Li > با یک علامت تعلیق یا سه‌نقطه .Pq Ql \&... نشان می‌دهند. . .It Ic euid No (+) شناسه کاربر مؤثر (effective user ID) کاربر. . .It Ic euser No (+) نخستین نام منطبق در مدخل‌های passwd متناظر با شناسه کاربر مؤثر. . .It Ic fignore No (+) پسوندهای نام فایلی را که باید در تکمیل خودکار (completion) نادیده گرفته شوند، فهرست می‌کند. . .It Ic filec در .Nm ، تکمیل خودکار همیشه استفاده می‌شود و این متغیر به‌طور پیش‌فرض نادیده گرفته می‌شود. .Pp اگر .Ic edit تنظیم نشده باشد، روش سنتی تکمیل خودکار در .Xr csh 1 استفاده می‌شود. .Pp اگر در .Xr csh 1 تنظیم شود، تکمیل خودکار نام فایل به کار گرفته می‌شود. . .It Ic gid No (+) شناسه گروه واقعی (real group ID) کاربر. . .It Ic globdot No (+) در صورت تنظیم، الگوهای عمومی کاراکترهای عام (wild-card glob) با فایل‌ها و دایرکتوری‌هایی که با .Ql \&. آغاز می‌شوند منطبق خواهند شد، به جز .Sq Pa \&. و .Sq Pa \&.. . . .It Ic globstar No (+) در صورت تنظیم، الگوهای عمومی فایل .Ql ** و .Ql *** با هر رشته‌ای از کاراکترها شامل .Ql / منطبق شده و در تمام زیردایرکتوری‌های موجود پیمایش می‌کنند. به عنوان مثال، .Dl ls **.c تمام فایل‌های ‎.c را در درخت دایرکتوری فعلی فهرست می‌کند. .Pp اگر به تنهایی استفاده شود، با صفر یا چند زیردایرکتوری تطابق می‌یابد. برای نمونه، .Dl ls /usr/include/**/time.h هر فایلی به نام .Ql time.h را در درخت دایرکتوری .Pa /usr/include فهرست می‌کند؛ در حالی که .Dl ls /usr/include/**time.h با هر فایلی در درخت دایرکتوری .Pa /usr/include که به .Ql time.h ختم شود، تطابق خواهد داشت. .Pp برای جلوگیری از مشکلات ناشی از بازگشت (recursion)، الگوی انطباق .Ql ** به درون پیوند نمادینی که به یک دایرکتوری اشاره دارد وارد نخواهد شد. برای نادیده گرفتن این مورد، از .Ql *** استفاده کنید. . .It Ic group No (+) نام گروه کاربر. . .It Ic highlight اگر تنظیم شود، مورد منطبق در جستجوی افزایشی (در .Ic i-search-back و .Ic i-search-fwd ) و ناحیه بین نشان (mark) و مکان‌نما به صورت تصویر وارون (reverse video) برجسته (highlight) می‌شوند. .Pp برجسته‌سازی نیازمند نوشتن‌های مکرر در ترمینال است که بار اضافی (overhead) ایجاد می‌کند. اگر کارایی ترمینال برایتان اهمیت دارد، شاید بهتر باشد این گزینه را غیرفعال بگذارید. . .It Ic histchars یک مقدار رشته‌ای که نویسه‌های مورد استفاده در .Sx History substitution را تعیین می‌کند. .Pp نخستین نویسه از مقدار آن به عنوان نویسه جایگزینی تاریخچه استفاده می‌شود و جایگزین نویسه پیش‌فرض .Ql \&! می‌گردد. .Pp دومین نویسه از مقدار آن جایگزین نویسه .Ql ^ در جایگزینی‌های سریع می‌شود. . .It Ic histdup No (+) مدیریت ورودی‌های تکراری در فهرست تاریخچه را کنترل می‌کند. .Pp اگر روی .Ql all تنظیم شود، تنها رخدادهای تاریخچه منحصربه‌فرد در فهرست تاریخچه وارد می‌شوند. .Pp اگر روی .Ql prev تنظیم شود و آخرین رخداد تاریخچه مشابه با دستور فعلی باشد، آن‌گاه دستور فعلی در تاریخچه وارد نمی‌شود. .Pp اگر روی .Ql erase تنظیم شود و همان رخداد در فهرست تاریخچه پیدا شود، آن رخداد قدیمی پاک شده و رخداد فعلی درج می‌شود. .Pp توجه داشته باشید که گزینه‌های .Ql prev و .Ql all رویدادهای تاریخچه را دوباره شماره‌گذاری می‌کنند تا هیچ فاصله‌ای وجود نداشته باشد. . .It Ic histfile No (+) مکان پیش‌فرضی که .Dl history \-S و .Dl history \-L در آن به دنبال یک فایل تاریخچه می‌گردند. .Pp اگر تنظیم نشده باشد، از .Pa ~/.history استفاده می‌شود. .Pp متغیر .Ic histfile هنگام به اشتراک گذاشتن یک دایرکتوری خانگی یکسان بین ماشین‌های مختلف، یا هنگام ذخیره تاریخچه‌های جداگانه در ترمینال‌های مختلف مفید است. از آنجا که معمولاً تنها .Pa ~/.tcshrc پیش از .Pa ~/.history خوانده و اجرا می‌شود، .Ic histfile باید به جای .Pa ~/.login در .Pa ~/.tcshrc تنظیم شود. . .It Ic histlit No (+) در صورت تنظیم شدن، دستورات توکار، دستورات ویرایشگر و سازوکار .Ic savehist از شکل لفظی (گسترش‌نیافته) خطوط در فهرست تاریخچه استفاده می‌کنند. همچنین دستور ویرایشگر .Ic toggle-literal-history را ببینید. . .It Ic history کلمه اول نشان‌دهنده تعداد رویدادهای تاریخچه برای ذخیره‌سازی است. .Pp کلمه اختیاری دوم (+) قالب چاپ تاریخچه را مشخص می‌کند؛ اگر تعیین نشود، از .Ql %h\et%T\et%R\en استفاده می‌شود. توالی‌های قالب در بخش زیر تحت .Ic prompt توضیح داده شده‌اند؛ به معنای متغیر .Ql \&%R توجه داشته باشید. .Pp به‌طور پیش‌فرض روی .Ql 100 تنظیم شده است. . .It Ic home با دایرکتوری خانگی فراخواننده مقداردهی اولیه می‌شود. بسط نام فایل برای .Ql ~ به این متغیر اشاره دارد. . .It Ic ignoreeof اگر روی رشته خالی یا .Ql 0 تنظیم شده باشد و دستگاه ورودی یک ترمینال باشد، دستور .Ic end-of-file (که معمولاً توسط کاربر با فشردن .Ic ^D در یک خط خالی ایجاد می‌شود) باعث می‌شود که شل عبارت .Dl Use \&"exit\&" to leave tcsh\&. را به جای خروج چاپ کند. این کار از بسته شدن تصادفی شل جلوگیری می‌کند. از نظر تاریخی، این تنظیم پس از ۲۶ کاراکتر EOF متوالی برای جلوگیری از حلقه‌های بی‌نهایت خارج می‌شد. .Pp اگر روی یک عدد .Sq Em n تنظیم شود، شل از .Em n \- 1 دستور .Ic end-of-file Ns متوالی چشم‌پوشی می‌کند و در .Em n Ns اُمین بار خارج می‌شود (+). .Pp اگر مقداردهی نشده باشد، .Ql 1 استفاده می‌شود؛ بدین معنی که شل با یک .Ic ^D خارج می‌شود. . .It Ic implicitcd No (+) در صورت تنظیم، شل با نام یک دایرکتوری که به عنوان یک دستور تایپ شده به گونه‌ای رفتار می‌کند که گویی درخواستی برای رفتن به آن دایرکتوری بوده است. .Pp اگر روی .Ic verbose تنظیم شود، تغییر دایرکتوری در خروجی استاندارد منعکس می‌شود. .Pp این رفتار در اسکریپت‌های پوسته غیرتعاملی، یا برای رشته‌های دستوری با بیش از یک کلمه، غیرفعال می‌شود. تغییر دایرکتوری نسبت به اجرای فرمانی با نام مشابه اولویت دارد، اما پس از جایگزینی‌های .No alias انجام می‌شود. بسط‌های تیلدا و متغیر طبق انتظار کار می‌کنند. . .It Ic inputmode No (+) اگر روی .Ql insert یا .Ql overwrite تنظیم شود، ویرایشگر را در ابتدای هر خط به آن حالت ورودی می‌برد. . .It Ic killdup No (+) مدیریت ورودی‌های تکراری در حلقه حذف (kill ring) را کنترل می‌کند. .Pp اگر روی .Ql all تنظیم شود، فقط رشته‌های یکتا وارد حلقه حذف می‌شوند. .Pp اگر روی .Ql prev تنظیم شود و آخرین رشته حذف‌شده با رشته حذف‌شده فعلی یکسان باشد، رشته فعلی وارد حلقه نمی‌شود. .Pp اگر روی .Ql erase تنظیم شود و همان رشته در حلقه حذف پیدا شود، رشته قدیمی پاک شده و رشته فعلی درج می‌شود. . .It Ic killring No (+) تعداد رشته‌های حذف‌شده را که باید در حافظه نگه‌داری شوند، مشخص می‌کند. .Pp به‌طور پیش‌فرض روی .Ql 30 تنظیم شده است. .Pp اگر تنظیم نشده باشد یا روی مقداری کمتر از .Ql 2 تنظیم شود، پوسته فقط اخیراً حذف‌شده‌ترین رشته را نگه‌داری می‌کند. .Pp رشته‌ها توسط دستورات ویرایشگری که رشته‌های متنی را پاک (kill) می‌کنند، مانند .Ic backward-delete-word ، .Ic kill-line و غیره، و همچنین دستور .Ic copy-region-as-kill در حلقه حذف (killring) قرار می‌گیرند. دستور ویرایشگر .Ic yank اخیراً حذف‌شده‌ترین رشته را به خط فرمان بازمی‌گرداند (yank)، در حالی که .Ic yank-pop (نگاه کنید به .Sx دستورات ویرایشگر (+) ) می‌تواند برای بازیابی رشته‌های حذف‌شده قبلی استفاده شود. . .It Ic listflags No (+) اگر روی .Ql x ، .Ql a یا .Ql A ، یا هر ترکیبی از آن‌ها (مانند .Ql xA ) تنظیم شود، به عنوان گزینه‌های .Ic ls\-F استفاده می‌شوند و باعث می‌شوند مانند موارد زیر عمل کند: .Bd -literal -offset indent -compact ls \-xF ls \-Fa ls \-FA .Ed .Pp یا یک ترکیب، برای مثال .Dl ls \-FxA .Pp اگر کلمه اول شامل .Ql a باشد، همه فایل‌ها را نشان می‌دهد (حتی اگر با یک .Ql \&. شروع شوند). .Pp اگر کلمه اول شامل .Ql A باشد، همه فایل‌ها را به جز .Ql \&. و .Ql \&.. نشان می‌دهد. .Pp اگر کلمه اول شامل .Ql x باشد، مرتب‌سازی را به صورت افقی (سطری) به جای عمودی (ستونی) انجام می‌دهد. .Pp اگر کلمه دوم .Ic listflags تنظیم شده باشد، به عنوان مسیر .Xr ls 1 استفاده می‌شود. . .It Ic listjobs No (+) اگر تنظیم شود، هنگام معلق شدن یک شغل (job)، همه شغل‌ها فهرست می‌شوند. .Pp اگر روی .Ql long تنظیم شود، فهرست‌بندی در قالب طولانی خواهد بود. . .It Ic listlinks No (+) اگر تنظیم شود، دستور توکار .Ic ls\-F نوع فایلی را که هر پیوند نمادین (symbolic link) به آن اشاره دارد، نشان می‌دهد. . .It Ic listmax No (+) حداکثر تعداد مواردی که دستور ویرایشگر .Ic list-choices بدون پرسش اولیه فهرست می‌کند. . .It Ic listmaxrows No (+) حداکثر تعداد ردیف‌های مواردی که دستور ویرایشگر .Ic list-choices بدون پرسش اولیه فهرست می‌کند. . .It Ic loginsh No (+) اگر پوسته یک پوستهٔ لاگین (ورود) باشد، توسط پوسته تنظیم می‌شود. مقداردهی یا لغو آن درون یک پوسته هیچ تأثیری ندارد. همچنین ببینید: .Ic shlvl . . .It Ic logout No (+) توسط پوسته قبل از خروج عادی روی .Ql normal ، قبل از خروج خودکار روی .Ql automatic و در صورتی که پوسته با یک سیگنال hangup کشته شده باشد روی .Ql hangup تنظیم می‌شود (ببینید .Sx Signal handling ) . همچنین متغیر پوسته‌ای .Ic autologout را ببینید. . .It Ic mail فهرستی از فایل‌ها و دایرکتوری‌ها برای بررسی ایمیل‌های دریافتی، که به طور اختیاری یک کلمه عددی در ابتدای آن قرار می‌گیرد. قبل از هر خط فرمان (prompt)، اگر ۱۰ دقیقه از آخرین بررسی گذشته باشد، پوسته هر فایل را بررسی کرده و پیام .Dl You have new mail\&. (یا اگر .Ic mail شامل چندین فایل باشد، .Dl You have new mail in Ar name Ns \&. ) را در صورتی که اندازه فایل بزرگتر از صفر باشد و زمان تغییر (modification time) آن بزرگتر از زمان دسترسی (access time) آن باشد، نمایش می‌دهد. .Pp اگر در یک پوستهٔ ورود (login shell) هستید، برای جلوگیری از اعلان‌های تکراری، هیچ فایل ایمیلی گزارش نمی‌شود مگر اینکه پس از زمان راه‌اندازی پوسته تغییر یافته باشد. بیشتر برنامه‌های لاگین هنگام ورود به شما اطلاع می‌دهند که آیا ایمیل دارید یا خیر. .Pp اگر فایلی که در .Ic mail مشخص شده یک دایرکتوری باشد، پوسته هر فایل درون آن دایرکتوری را به عنوان یک پیام جداگانه شمارش می‌کند و به فراخور حالت، عبارت .Dl You have Ar n No mails\&. یا .Dl You have Ar n No mails in Ar name Ns No \&. را گزارش خواهد داد. این قابلیت در درجه اول برای سیستم‌هایی فراهم شده است که نامه‌ها را به این صورت ذخیره می‌کنند، مانند Andrew Mail System. .Pp اگر کلمه اول .Ic mail عددی باشد، به عنوان بازه زمانی متفاوتی برای بررسی نامه (برحسب ثانیه) در نظر گرفته می‌شود. .Pp در شرایط بسیار نادر، ممکن است پوسته به جای .Dl You have new mail\&. عبارت .Dl You have mail\&. را گزارش کند. . .It Ic matchbeep No (+) اگر روی .Ql never تنظیم شود، تکمیل خودکار هرگز بوق نمی‌زند. .Pp اگر روی .Ql nomatch تنظیم شود، تنها زمانی که هیچ تطابقی وجود نداشته باشد بوق می‌زند. .Pp اگر روی .Ql ambiguous تنظیم شود، هنگام وجود چندین تطابق بوق می‌زند. .Pp اگر روی .Ql notunique تنظیم شود، هنگامی که یک تطابق دقیق و تطابق‌های طولانی‌تر دیگری وجود داشته باشد بوق می‌زند. .Pp اگر تنظیم نشده باشد، .Ql ambiguous استفاده می‌شود. . .It Ic nobeep No (+) اگر تنظیم شود، بوق زدن به طور کامل غیرفعال می‌شود. همچنین نگاه کنید به .Ic visiblebell . . .It Ic noclobber اگر تنظیم شود، محدودیت‌هایی روی تغییر مسیر خروجی اعمال می‌شود تا اطمینان حاصل شود که فایل‌ها به طور تصادفی بازنویسی و نابود نمی‌شوند و اینکه تغییر مسیرهای .Ql >> به فایل‌های موجود ارجاع می‌دهند، همان‌طور که در بخش .Sx ورودی/خروجی (Input/output) توضیح داده شده است. .Pp اگر حاوی .Ql ask باشد، به جای بروز خطا یک تاییدیه تعاملی نمایش داده می‌شود. .Pp اگر حاوی .Ql notempty باشد، استفاده از .Ql > روی فایل‌های خالی مجاز است. . .It Ic noding در صورت تنظیم شدن، چاپ .Dl DING\&! در مشخص‌کننده‌های زمان اعلان .Ic prompt در هنگام تغییر ساعت غیرفعال می‌شود. . .It Ic noglob در صورت تنظیم شدن، .Sx جایگزینی نام فایل (Filename substitution) و .Sx جایگزینی پشته دایرکتوری (+) (Directory stack substitution (+)) غیرفعال می‌شوند. این ویژگی بیش از همه در اسکریپت‌های شل که با نام فایل‌ها سر و کار ندارند، یا پس از دریافت فهرستی از نام‌های فایل که در آن گسترش‌های بیشتر مطلوب نیست، کاربرد دارد. . .It Ic nokanji No (+) اگر تنظیم شده باشد و شل از Kanji پشتیبانی کند (متغیر شل .Ic version را ببینید)، غیرفعال می‌شود تا بتوان از کلید meta استفاده کرد. . .It Ic nonomatch در صورت تنظیم شدن، چنانچه یک .Sx جایگزینی نام فایل (Filename substitution) یا .Sx جایگزینی پشته دایرکتوری (+) (Directory stack substitution (+)) با هیچ فایل موجودی مطابقت نداشته باشد، به جای ایجاد خطا بدون تغییر رها می‌شود. با این حال، در صورتی که ساختار جایگزینی نادرست باشد (بدریخت باشد)، همچنان خطا محسوب می‌شود. برای مثال، .Dl echo \&[ همچنان با خطا مواجه می‌شود. . .It Ic nostat No (+) فهرستی از دایرکتوری‌ها (یا الگوهای تطبیق فایل glob که با دایرکتوری‌ها مطابقت دارند؛ بخش .Sx Filename substitution را ببینید) که در طول عملیات تکمیل خودکار نباید روی آن‌ها .Xr stat 2 انجام شود. این متغیر معمولاً برای مستثنی کردن دایرکتوری‌هایی استفاده می‌شود که فراخوانی .Xr stat 2 روی آن‌ها زمان بسیار زیادی می‌برد، مانند .Pa /afs . . .It Ic notify در صورت تنظیم، شل پایان کارها (jobs) را به صورت ناهمگام اعلام می‌کند. حالت پیش‌فرض این است که اتمام کارها دقیقاً پیش از نمایش اعلان شل (prompt) گزارش داده شود. . .It Ic oid No (+) شناسه سازمانی (organization ID) واقعی کاربر. (فقط در Domain/OS) . .It Ic owd No (+) دایرکتوری کاری قبلی، معادل .Ql \- که توسط .Ic cd و .Ic pushd استفاده می‌شود. همچنین متغیرهای شل .Ic cwd و .Ic dirstack را ببینید. . .It Ic padhour در صورت تنظیم، چاپ صفر پیش‌وند ('0') برای ساعت‌ها در قالب‌های ۲۴ و ۱۲ ساعته فعال می‌شود. به عنوان مثال، .Sq 07:45:42 در مقایسه با .Sq 7:45:42 . . .It Ic parseoctal برای حفظ سازگاری با نسخه‌های قدیمی‌تر، متغیرهای عددی که با 0 شروع می‌شوند به عنوان مبنای هشت (octal) تفسیر نمی‌شوند. تنظیم این متغیر، تجزیه صحیح مبنای هشت را فعال می‌کند. . .It Ic path فهرستی از دایرکتوری‌ها که برای یافتن دستورات اجرایی در آن‌ها جستجو می‌شود. .Pp یک کلمه تهی (null) دایرکتوری جاری را مشخص می‌کند. .Pp اگر متغیر .Ic path وجود نداشته باشد، تنها نام‌های کامل مسیر اجرا خواهند شد. .Pp متغیر .Ic path هنگام راه‌اندازی توسط شل از روی متغیر محیطی .Ev PATH تنظیم می‌شود، یا در صورتی که .Ev PATH وجود نداشته باشد، روی یک مقدار پیش‌فرض وابسته به سیستم تنظیم می‌گردد، مانند .Dl (/usr/local/bin /usr/bsd /bin /usr/bin .) .Pp بسته به نحوه کامپایل شدن شل، ممکن است شل کاراکتر .Ql \&. را در ابتدا یا انتهای .Ic path قرار دهد یا آن را به طور کامل حذف کند؛ متغیر شل .Ic version را ببینید. .Pp شلی که نه گزینه .Fl c و نه گزینه .Fl t به آن داده شده باشد، پس از خواندن .Pa ~/.tcshrc و هر بار که .Ic path مجدداً تنظیم می‌شود، محتویات دایرکتوری‌های موجود در .Ic path را هش (فهرست‌بندی) می‌کند. .Pp اگر در حین فعال بودن شل، دستور جدیدی به دایرکتوری موجود در .Ic path اضافه شود، ممکن است لازم باشد کاربر یک .Ic rehash انجام دهد تا شل بتواند آن را پیدا کند. . .It Ic printexitvalue No (+) در صورت تنظیم بودن، چنانچه یک برنامه تعاملی با وضعیتی غیر از صفر خارج شود، شل عبارت .Dl Exit Ar status را چاپ می‌کند. . .It Ic prompt رشته‌ای که قبل از خواندن هر دستور از ترمینال چاپ می‌شود. .Pp متغیر .Ic prompt می‌تواند شامل هر یک از توالی‌های قالب‌بندی (+) زیر باشد که با اطلاعات مشخص‌شده جایگزین می‌شوند: . .Bl -tag -width ".Sy Format" -offset indent .It Sy قالب .Sy اطلاعات خط فرمان (Prompt) . .It Li %/ دایرکتوری کاری فعلی. . .It Li %~ دایرکتوری کاری فعلی، اما با نمایش دایرکتوری خانگی کاربر با .Ql ~ و دایرکتوری خانگی سایر کاربران با .Ql ~ Ns Ar user مطابق با .Sx Filename substitution . جایگزینی .Ql ~ Ns Ar user تنها در صورتی رخ می‌دهد که پوسته قبلاً از .Ql ~ Ns Ar user در یک مسیر در نشست جاری استفاده کرده باشد. . .It Xo .Li %c[[0] Ns Ar n Ns Li \&] , .Li %.[[0] Ns Ar n Ns Li \&] .Xc بخش انتهایی دایرکتوری کاری فعلی، یا در صورت تعیین رقم .Ar n ، به تعداد .Ar n بخش انتهایی. اگر .Ar n با .Ql 0 شروع شود، تعداد بخش‌های رد شده قبل از بخش(های) انتهایی در قالب .Ql /< Ns Ar skipped Ns Li >trailing قرار می‌گیرد. اگر متغیر پوسته .Ic ellipsis تنظیم شده باشد، بخش‌های رد شده با یک علامت تعلیق (...) نمایش داده می‌شوند تا کل آن به شکل .Ql \&...trailing درآید. جایگزینی .Ql ~ مانند .Ql %~ در بالا انجام می‌شود، اما مؤلفه .Ql ~ هنگام شمارش بخش‌های انتهایی نادیده گرفته می‌شود. . .It Li \&%C مانند .Ql %c ، اما بدون جایگزینی .Ql ~ . . .It Li %h , %! , \&! شماره رویداد تاریخچه جاری. . .It Li \&%M نام کامل میزبان (hostname). . .It Li %m نام میزبان تا نخستین .Ql \&. . . .It Li \&%S Pq Li %s شروع (پایان) حالت برجسته (standout). . .It Li \&%B Pq Li %b شروع (پایان) حالت پررنگ (bold). . .It Li \&%U (%u) شروع (پایان) حالت زیرخط‌دار (underline). . .It Li %t , %@ زمان جاری در قالب ۱۲ ساعته با ق.ظ/ب.ظ (AM/PM). . .It Li \&%T مانند .Ql %t ، اما در قالب ۲۴ ساعته (به متغیر پوسته .Ic ampm نیز مراجعه کنید). . .It Li %p زمان جاری به صورت .Sq دقیق در قالب ۱۲ ساعته با ق.ظ/ب.ظ (AM/PM)، همراه با ثانیه‌ها. . .It Li \&%P مانند .Ql %p ، اما در قالب ۲۴ ساعته (به متغیر پوسته .Ic ampm نیز مراجعه کنید). . .It Li \e Ns Ar c .Ar c مشابه .Ic bindkey تجزیه می‌شود. . .It Li ^ Ns Ar c .Ar c مانند .Ic bindkey تجزیه می‌شود. . .It Li %% یک نویسهٔ تکی .Ql % . . .It Li %n نام کاربری. . .It Li \&%N نام کاربری مؤثر. . .It Li %j تعداد jobها (کارهای در حال اجرا). . .It Li %d روز هفته در قالب .Sq Day . . .It Li \&%D روز ماه در قالب .Sq dd . . .It Li %w ماه در قالب .Sq Mon . . .It Li \&%W ماه در قالب .Sq mm . . .It Li %y سال در قالب .Sq yy . . .It Li \&%Y سال در قالب .Sq yyyy . . .It Li %l ترمینال (tty) پوسته. . .It Li \&%L از انتهای اعلان (prompt) تا انتهای صفحه نمایش یا انتهای خط را پاک می‌کند. . .It Li %$ متغیر شل یا محیطی که بلافاصله پس از .Ql $ آمده است را بسط می‌دهد. . .It Li %# برای کاربران عادی .Ql > (یا نویسه اول از متغیر شل .Ic promptchars ) و برای کاربر ارشد (superuser) .Ql # (یا نویسه دوم از .Ic promptchars ) قرار می‌دهد. . .It Li %{ Ns Ar string Ns Li %} رشته .Ic string را به عنوان یک توالی گریز (escape sequence) لفظی اضافه می‌کند. این مورد باید تنها برای تغییر ویژگی‌های ترمینال استفاده شود و نباید مکان نشانگر را جابجا کند. این مورد نمی‌تواند آخرین توالی در .Ic prompt باشد. . .It Li %? کد بازگشتی دستوری که درست پیش از اعلان اجرا شده است. . .It Li \&%R در .Ic prompt2 ، وضعیت تجزیه‌کننده (parser). در .Ic prompt3 ، رشته تصحیح‌شده. در .Ic history ، رشته تاریخچه. . .El . .Pp .Ql \&%B ، .Ql \&%S ، .Ql \&%U و .Ql %{ Ns Ar string Ns Li %} فقط در شل‌های هشت‌بیتی بدون دستکاری (eight-bit-clean) در دسترس هستند؛ متغیر شل .Ic version را ببینید. .Pp توالی‌های پررنگ (bold)، برجسته (standout) و زیرخط (underline) اغلب برای تمایز اعلان شل کاربر ارشد (superuser) به کار می‌روند. برای نمونه، .Pp .\" Using Bl not Bd to allow bold formatting in the second line .Bl -tag -width 20n -offset indent -compact .It Li > set prompt = \&"%m [%h] \&%B[%@]%b [%/] you rang? \&" .It Li tut [37] Cm [2:54pm] Li [/usr/accts/sys] you rang? _ .El .Pp اگر .Ql %t ، .Ql %@ ، .Ql \&%T ، .Ql %p یا .Ql \&%P استفاده شود و .Ic noding تنظیم نشده باشد، آن‌گاه به جای زمان واقعی، هنگام تغییر ساعت (یعنی دقیقه .Sq \&:00 ) عبارت .Dl DING\&! چاپ می‌شود. .Pp در شل‌های تعاملی به‌طور پیش‌فرض روی .Sq Li %#\ \& تنظیم شده است. . .It Ic prompt2 No (+) رشته‌ای که به عنوان اعلان در حلقه‌های .Ic while و .Ic foreach و پس از خطوط منتهی به .Ql \e نمایش داده می‌شود. می‌توان همان توالی‌های قالب‌بندی موجود در .Ic prompt را استفاده کرد؛ به تفاوت معنای متغیر .Ql \&%R توجه داشته باشید. .Pp در شل‌های تعاملی به‌طور پیش‌فرض روی .Sq Li \&%R?\ \& تنظیم شده است. . .It Ic prompt3 No (+) رشته‌ای که هنگام تأیید تصحیح خودکار املایی به عنوان اعلان نمایش داده می‌شود. می‌توان همان توالی‌های قالب‌بندی موجود در .Ic prompt را استفاده کرد؛ به تفاوت معنای متغیر .Ql \&%R توجه داشته باشید. .Pp به صورت پیش‌فرض در پوسته‌های تعاملی بر روی .Sq Li CORRECT>%R (y|n|e|a)?\ \& تنظیم شده است. . .It Ic promptchars No (+) در صورت تنظیم شدن (به یک رشته دو نویسه‌ای)، دنباله قالب‌بندی .Ql %# در متغیر پوسته .Ic prompt برای کاربران عادی با نویسه اول و برای کاربر ریشه (superuser) با نویسه دوم جایگزین می‌شود. . .It Ic pushdtohome No (+) در صورت تنظیم شدن، دستور .Ic pushd بدون آرگومان مانند .Ic cd عمل .Dl pushd ~ را انجام می‌دهد. . .It Ic pushdsilent No (+) در صورت تنظیم شدن، .Ic pushd و .Ic popd پشته دایرکتوری را چاپ نمی‌کنند. . .It Ic recexact No (+) در صورت تنظیم شدن، تکمیل خودکار بر روی یک تطابق دقیق اعمال می‌شود، حتی اگر تطابق طولانی‌تری ممکن باشد. . .It Ic recognize_only_executables No (+) در صورت تنظیم شدن، فهرست‌بندی دستورها تنها فایل‌هایی از مسیر را نمایش می‌دهد که قابل اجرا هستند. کند است. . .It Ic rmstar No (+) در صورت تنظیم شدن، پیش از اجرای .Dl rm * از کاربر تاییدیه گرفته می‌شود. . .It Ic rprompt No (+) رشته‌ای که هنگام نمایش اعلان (prompt) در سمت چپ، در سمت راست صفحه (پس از ورودی دستور) چاپ می‌شود. این متغیر نویسه‌های قالب‌بندی مشابه با .Ic prompt را می‌شناسد. در صورت لزوم به‌طور خودکار ناپدید و دوباره ظاهر می‌شود تا اطمینان حاصل شود که ورودی دستور پوشانده نمی‌شود، و تنها در صورتی ظاهر می‌شود که اعلان، ورودی دستور و خودش همگی در خط اول جا شوند. .Pp اگر .Ic edit تنظیم نشده باشد، .Ic rprompt پس از خط اعلان و پیش از ورودی دستور چاپ خواهد شد. . .It Ic savedirs No (+) در صورت تنظیم بودن، شل پیش از خروج دستور .Dl dirs \-S را اجرا می‌کند. .Pp اگر کلمه اول روی یک عدد تنظیم شود، حداکثر به همان تعداد از مدخل‌های پشتهٔ دایرکتوری ذخیره می‌شوند. . .It Ic savehist در صورت تنظیم بودن، شل پیش از خروج دستور .Dl history \-S را اجرا می‌کند. .Pp اگر کلمه اول روی یک عدد تنظیم شود، حداکثر به همان تعداد خط ذخیره می‌شود. (این عدد باید کمتر یا مساوی تعداد مدخل‌های .Ic history باشد؛ اگر بزرگ‌تر از تعداد تنظیمات .Ic history تعیین شود، تنها مدخل‌های .Ic history ذخیره خواهند شد.) .Pp اگر کلمه دوم روی .Ql merge تنظیم شده باشد، فهرست تاریخچه به‌جای جایگزین شدن با فایل تاریخچهٔ موجود (در صورت وجود)، با آن ادغام شده و بر اساس برچسب زمان مرتب می‌شود و تازه‌ترین رویدادها نگه‌داشته می‌شوند. .Pp اگر کلمه دوم روی .Ql merge و کلمه سوم روی .Ql lock تنظیم شده باشد، به‌روزرسانی فایل تاریخچه با دیگر نشست‌های شل که احتمالاً می‌خواهند تاریخچه را دقیقاً در همان زمان ادغام کنند، به‌صورت سریالی (پیاپی) انجام خواهد شد. (+) . .It Ic sched No (+) قالبی که دستور توکار .Ic sched رویدادهای زمان‌بندی‌شده را در آن چاپ می‌کند؛ اگر مشخص نشود، از .Sq Li %h\et%T\et%R\en استفاده می‌شود. توالی‌های قالب در بالا ذیل .Ic prompt توضیح داده شده‌اند؛ به معنی متغیر .Ql \&%R توجه داشته باشید. . .It Ic shell فایلی که پوسته در آن قرار دارد. این متغیر در پوسته‌های منشعب‌شده .Pq forked برای تفسیر فایل‌هایی به کار می‌رود که بیت‌های اجرایی آن‌ها تنظیم شده است، اما توسط سیستم قابل اجرا نیستند. (به توضیحات بخش .Sx "اجرای دستورات توکار و غیرتوکار (Builtin and non-builtin command execution)" مراجعه کنید.) مقدار اولیه آن با محل قرارگیری پوسته (وابسته به سیستم) تعیین می‌شود. . .It Ic shlvl No (+) تعداد پوسته‌های تو در تو. در پوسته‌های ورود .Pq login shells به ۱ بازنشانی می‌شود. همچنین نگاه کنید به .Ic loginsh . . .It Ic status وضعیت خروج از آخرین دستور یا بسط نقل‌قول معکوس، یا هر دستوری در یک خط لوله .Pq pipeline به .Ic status منتقل می‌شود. (این همچنین رفتار پیش‌فرض .Xr csh 1 است.) این حالت پیش‌فرض با آنچه POSIX الزام می‌کند (بازگرداندن وضعیتِ تنها آخرین دستور) مطابقت ندارد. برای تطابق با رفتار POSIX، باید .Ic anyerror را حذف .Pq unset کنید. .Pp اگر متغیر .Ic anyerror تنظیم نشده باشد، وضعیت خروج یک خط لوله تنها بر اساس آخرین دستور در خط لوله تعیین می‌شود، و وضعیت خروج یک بسط نقل‌قول معکوس به .Ic status منتقل .Em نمی‌شود . .Pp اگر دستوری به طور غیرعادی پایان یابد، مقدار 0200 به وضعیت اضافه می‌شود. دستورات توکاری که با شکست مواجه می‌شوند وضعیت خروج .Ql 1 و سایر دستورات توکار وضعیت .Ql 0 را بازمی‌گردانند. . .It Ic symlinks No (+) می‌تواند روی چندین مقدار مختلف تنظیم شود تا تفکیک پیوند نمادین .Pq Sq symlink را کنترل کند: .Pp اگر روی .Ql chase تنظیم شده باشد، هر زمان که دایرکتوری جاری به دایرکتوری‌ای تغییر کند که حاوی پیوند نمادین (symbolic link) است، به نام واقعی دایرکتوری‌ای که پیوند به آن اشاره می‌کند بسط داده می‌شود. این مورد برای دایرکتوری خانگی (home) کاربر کار نمی‌کند؛ این یک باگ است. .Pp اگر روی .Ql ignore تنظیم شده باشد، پوسته تلاش می‌کند یک دایرکتوری جاری نسبت به دایرکتوری جاری پیش از گذر از پیوند نمادین بسازد. این بدان معناست که .Dl cd از طریق یک پیوند نمادین و سپس .Dl cd \&.. فرد را به دایرکتوری اصلی بازمی‌گرداند. این مورد فقط بر دستورهای توکار (builtin) و تکمیل نام فایل تأثیر می‌گذارد. .Pp اگر روی .Ql expand تنظیم شده باشد، پوسته تلاش می‌کند پیوندهای نمادین را با بسط دادن واقعی آرگومان‌هایی که شبیه نام مسیر به نظر می‌رسند، اصلاح کند. این مورد بر هر دستوری تأثیر می‌گذارد، نه فقط دستورهای توکار. متأسفانه این قابلیت برای نام‌های فایلی که تشخیص آن‌ها سخت است، مانند نام‌هایی که در گزینه‌های دستور جاسازی شده‌اند، کار نمی‌کند. با استفاده از نقل‌قول (quoting) می‌توان از بسط دادن جلوگیری کرد. اگرچه این تنظیم معمولاً راحت‌ترین حالت است، اما گاهی در مواردی که موفق به تشخیص آرگومانی که باید بسط داده شود نمی‌شود، گمراه‌کننده و گاه گیج‌کننده است. یک مصالحه مناسب استفاده از .Ql ignore و استفاده از دستور ویرایشگر .Ic normalize-path (متصل شده به‌صورت پیش‌فرض به .Ic ^X-n ) در صورت لزوم است. .Pp چند مثال برای درک بهتر ارائه شده است. ابتدا، بیایید چند دایرکتوری آزمایشی ایجاد کنیم: .Bd -literal -offset indent > cd /tmp > mkdir from from/src to > ln \-s from/src to/dst .Ed .Pp در اینجا رفتار در حالتی که .Ic symlinks تنظیم نشده است آورده شده است: .Bd -literal -offset indent > cd /tmp/to/dst; echo $cwd /tmp/to/dst > cd ..; echo $cwd /tmp/from .Ed .Pp در اینجا رفتار در حالتی که .Ic symlinks بر روی .Ql chase تنظیم شده باشد آمده است: .Bd -literal -offset indent > cd /tmp/to/dst; echo $cwd /tmp/from/src > cd ..; echo $cwd /tmp/from .Ed .Pp در اینجا رفتار در حالتی که .Ic symlinks بر روی .Ql ignore تنظیم شده باشد آمده است: .Bd -literal -offset indent > cd /tmp/to/dst; echo $cwd /tmp/to/dst > cd ..; echo $cwd /tmp/to .Ed .Pp در اینجا رفتار در حالتی که .Ic symlinks بر روی .Ql expand تنظیم شده باشد آورده شده است: .Bd -literal -offset indent > cd /tmp/to/dst; echo $cwd /tmp/to/dst > cd ..; echo $cwd /tmp/to > cd /tmp/to/dst; echo $cwd /tmp/to/dst > cd ".."; echo $cwd /tmp/from > /bin/echo .. /tmp/to > /bin/echo ".." \&.. .Ed .Pp توجه داشته باشید که بسط .Ql expand : .Bl -enum -offset indent -compact . .It برای دستورهای توکار مانند .Ic cd دقیقاً شبیه .Ql ignore عمل می‌کند. . .It با نقل‌قول‌گذاری (کوتیشن) جلوی آن گرفته می‌شود. . .It پیش از ارسال نام فایل‌ها به دستورهای غیرتوکار رخ می‌دهد. .El . .It Ic tcsh No (+) شماره نگارش پوسته در قالب .Sq Ar R Ns No \&. Ns Ar VV Ns No \&. Ns Ar PP ، که در آن .Sq Ar R شماره انتشار اصلی، .Sq Ar VV نگارش کنونی، و .Sq Ar PP سطح وصله (patchlevel) است. . .It Ic term نوع ترمینال. معمولاً در .Pa ~/.login همان‌طور که در بخش .Sx راه‌اندازی و خاموش‌سازی توضیح داده شده، تنظیم می‌شود. . .It Ic time اگر روی یک عدد تنظیم شود، دستور توکار .Ic time پس از هر دستوری که بیش از آن مقدار ثانیه از CPU زمان ببرد، به طور خودکار اجرا می‌شود. .Pp اگر کلمه دومی وجود داشته باشد، به عنوان رشته قالب‌بندی (format string) برای خروجی دستور توکار .Ic time استفاده می‌شود. .Pp (u) توالی‌های زیر را می‌توان در رشته قالب .Ic time به کار برد: . .Bl -tag -width ".Sy Format" -offset indent .It Sy Format .Sy Time information . .It Li \&%U مدت زمانی که پردازش در حالت کاربر سپری کرده است، به ثانیه پردازنده. . .It Li \&%S مدت زمانی که پردازش در حالت کرنل سپری کرده است، به ثانیه پردازنده. . .It Li \&%E زمان سپری‌شده واقعی (ساعت دیواری) به ثانیه. . .It Li \&%P درصد استفاده از پردازنده که به صورت (\&%U + \&%S) / \&%E محاسبه می‌شود. . .It Li \&%W تعداد دفعاتی که پردازش مبادله (swap) شده است. . .It Li \&%X میانگین فضای متنی (اشتراکی) استفاده‌شده بر حسب کیلوبایت. . .It Li \&%D میانگین فضای داده/پشته (غیراشتراکی) استفاده‌شده بر حسب کیلوبایت. . .It Li \&%K مجموع فضای استفاده‌شده (\&%X + \&%D) بر حسب کیلوبایت. . .It Li \&%M حداکثر حافظه‌ای که پردازش در هر لحظه استفاده کرده است، بر حسب کیلوبایت. . .It Li \&%F تعداد خطاهای عمده صفحه (صفحه‌ای که نیاز به فراخوانی از دیسک داشت). . .It Li \&%R تعداد خطاهای جزئی صفحه. . .It Li \&%I تعداد عملیات ورودی. . .It Li \&%O تعداد عملیات خروجی. . .It Li %r تعداد پیام‌های سوکت دریافت شده. . .It Li %s تعداد پیام‌های ارسالی سوکت. . .It Li %k تعداد سیگنال‌های دریافت‌شده. . .It Li %w تعداد تعویض‌های زمینه‌ای داوطلبانه (انتظارها). . .It Li %c تعداد تعویض‌های زمینه‌ای غیرداوطلبانه. . .El .Pp تنها چهار توالی اول در سیستم‌های فاقد توابع محدودیت منابع BSD پشتیبانی می‌شوند. قالب زمان پیش‌فرض .Sq Li \&%Uu \&%Ss \&%E \&%P \&%X+%Dk \&%I+%Oio \&%Fpf+%Ww برای سیستم‌هایی است که از گزارش مصرف منابع پشتیبانی می‌کنند، و .Sq Li \&%Uu \&%Ss \&%E \&%P برای سیستم‌هایی است که پشتیبانی نمی‌کنند. .Pp تحت سیستم‌عامل DYNIX/ptx از شرکت Sequent، توالی‌های .Ql \&%X ، .Ql \&%D ، .Ql \&%K ، .Ql %r و .Ql %s در دسترس نیستند، اما توالی‌های اضافی زیر موجود می‌باشند: . .Bl -tag -width ".Sy Format" -offset indent .It Sy Format .Sy Description .Sy Sequent DYNIX/ptx time information . .It Li \&%Y تعداد فراخوانی‌های سیستمیِ (system calls) انجام‌شده. . .It Li \&%Z تعداد صفحاتی که برحسب تقاضا با صفر پر شده‌اند (zero-filled on demand). . .It Li %i تعداد دفعاتی که اندازهٔ مجموعه مقیم (resident set size) یک فرآیند توسط کرنل افزایش یافته است. . .It Li %d تعداد دفعاتی که اندازهٔ مجموعه مقیم یک فرآیند توسط کرنل کاهش یافته است. . .It Li %l تعداد فراخوانی‌های سیستمی خواندن (read) انجام‌شده. . .It Li %m تعداد فراخوانی‌های سیستمی نوشتن (write) انجام‌شده. . .It Li %p تعداد خواندن‌ها از دیسک‌گردان‌های خام (raw disk devices). . .It Li %q تعداد نوشتن‌ها در دیسک‌گردان‌های خام (raw disk devices). . .El .Pp و قالب زمانی پیش‌فرض عبارت است از .Sq Li \&%Uu \&%Ss \&%E \&%P \&%I+%Oio \&%Fpf+%Ww . .Pp توجه داشته باشید که درصد استفاده از CPU در سیستم‌های چندپردازنده‌ای می‌تواند بیشتر از ۱۰۰٪ باشد. . .It Ic tperiod No (+) دوره زمانی، بر حسب دقیقه، بین اجراهای نام مستعار ویژهٔ .Ic periodic . . .It Ic tty No (+) نام tty، یا در صورتی که به هیچ tty متصل نباشد، خالی است. . .It Ic uid No (+) شناسهٔ واقعی کاربر (real user ID). . .It Ic user نام کاربری ورود (login name) کاربر. . .It Ic verbose در صورت تنظیم شدن، باعث می‌شود کلمات هر دستور پس از جایگزینی تاریخچه (در صورت وجود) چاپ شوند. توسط گزینهٔ خط فرمان .Fl v تنظیم می‌شود. . .It Ic version No (+) مهر شناسهٔ نسخه. شامل شماره نسخهٔ پوسته (نگاه کنید به .Ic tcsh ) ، مبدأ، تاریخ انتشار، ارائه‌دهنده (vendor)، سیستم‌عامل و معماری ماشین (نگاه کنید به .Ev VENDOR ، .Ev OSTYPE و .Ev MACHTYPE ) و فهرستی جداشده با کاما از گزینه‌هایی است که در زمان کامپایل تنظیم شده‌اند. گزینه‌هایی که به‌طور پیش‌فرض در توزیع فعال هستند مشخص شده‌اند. .Pp گزینه‌های پشتیبانی‌شده برای .Ic version عبارتند از: . .Bl -tag -width ".Sy Option" -offset indent . .It Sy گزینه .Sy توضیحات . .It Li 8b پوسته از نویسه‌های ۸-بیتی به طور کامل پشتیبانی می‌کند؛ پیش‌فرض. . .It Li 7b پوسته از نویسه‌های ۸-بیتی به طور کامل پشتیبانی نمی‌کند. . .It Li wide پوسته از رمزگذاری‌های چندبایتی (مانند UTF-8) پشتیبانی می‌کند. . .It Li nls از NLS سیستم استفاده می‌شود؛ پیش‌فرض برای سیستم‌های دارای NLS. . .It Li lf پوسته‌های ورود (login shells) فایل .Pa /etc/csh.login را پیش از .Pa /etc/csh.cshrc (به جای پس از آن) و فایل .Pa ~/.login را پیش از .Pa ~/.tcshrc و .Pa ~/.history اجرا می‌کنند. . .It Li dl برای امنیت بیشتر، .Ql \&. در انتهای .Ic path قرار می‌گیرد؛ پیش‌فرض. . .It Li nd برای امنیت بیشتر، .Ql \&. از .Ic path حذف می‌شود. . .It Li vi ویرایش به سبک .Xr vi 1 به جای سبک .Xr emacs 1 پیش‌فرض است. . .It Li dtr پوسته‌های لاگین هنگام خروج، DTR را قطع می‌کنند. . .It Li bye دستور .Ic bye مترادفی برای .Ic logout بوده و .Ic log نام جایگزینی برای .Ic watchlog است. . .It Li al قابلیت .Ic autologout فعال است؛ حالت پیش‌فرض. . .It Li kan اگر با توجه به تنظیمات محلی (locale) مناسب باشد، از کانجی (Kanji) استفاده می‌شود، مگر اینکه متغیر پوستهٔ .Ic nokanji تنظیم شده باشد. . .It Li sm از .Xr malloc 3 سیستم استفاده می‌شود. . .It Li hb هنگام اجرای اسکریپت‌های پوسته، قرارداد .Dl #! Ns Ar interpreter arg Li \&... شبیه‌سازی می‌شود. . .It Li ng دستور توکار .Ic newgrp در دسترس است. . .It Li rh پوسته تلاش می‌کند متغیر محیطی .Ev REMOTEHOST را مقداردهی کند. . .It Li afs اگر احراز هویت محلی ناموفق باشد، پوسته رمز عبور شما را با سرور kerberos بررسی و اعتبارسنجی می‌کند. متغیر پوستهٔ .Ic afsuser یا متغیر محیطی .Ev AFSUSER در صورت تنظیم شدن، نام کاربری محلی شما را بازنویسی (override) می‌کنند. . .El .Pp یک مدیر سیستم ممکن است رشته‌های بیشتری را برای مشخص کردن تفاوت‌ها در نسخهٔ محلی وارد کند. . .It Ic vimode No (+) در صورت لغو تنظیم، رفتار کلیدهای مقید مختلف بیشتر شبیه به شیوهٔ .Xr emacs 1 می‌شود: مرزهای کلمات توسط .Ic wordchars در مقابل دیگر نویسه‌ها تعیین می‌شوند. .Pp در صورت تنظیم، رفتار کلیدهای مقید مختلف بیشتر شبیه به شیوهٔ .Xr vi 1 می‌شود: مرزهای کلمات توسط .Ic wordchars در مقابل فاصله‌های سفید (whitespace) در مقابل دیگر نویسه‌ها تعیین می‌شوند؛ رفتار مکان‌نما به حالت فعلی vi (حالت‌های command،‏ delete،‏ insert،‏ replace) بستگی دارد. .Pp این متغیر توسط .Ic bindkey Fl e لغو تنظیم شده و توسط .Ic bindkey Fl v تنظیم می‌شود. در صورت نیاز، کاربر می‌تواند .Ic vimode را پس از این عملیات‌های .Ic bindkey به‌طور صریح تنظیم یا لغو تنظیم کند. . .It Ic visiblebell No (+) در صورت تنظیم، به جای زنگ صوتی از چشمک‌زدن صفحه استفاده می‌شود. همچنین ببینید: .Ic nobeep . . .It Ic watch No (+) فهرستی از جفت‌های کاربر/ترمینال برای نظارت بر ورودها و خروج‌ها. اگر کاربر برابر با .Ql any باشد، همهٔ ترمینال‌ها برای آن کاربر نظارت می‌شوند و برعکس. تنظیم .Ic watch به .Dl (any any) همهٔ کاربران و ترمینال‌ها را نظارت می‌کند. برای مثال، .Bd -literal -offset indent set watch = (george ttyd1 any console $user any) .Ed .Pp فعالیت‌های کاربر .Ql george روی .Ql ttyd1 ، هر کاربری روی کنسول، و خود کاربر (یا یک متجاوز) را روی هر ترمینالی گزارش می‌دهد. .Pp ورودها و خروج‌ها به‌طور پیش‌فرض هر ۱۰ دقیقه بررسی می‌شوند، اما کلمه اول .Ic watch را می‌توان روی یک عدد تنظیم کرد تا هر چند دقیقه یک‌بار بررسی انجام شود. برای نمونه، .Bd -literal -offset indent set watch = (1 any any) .Ed .Pp هرگونه ورود/خروج را هر یک دقیقه یک‌بار گزارش می‌دهد. برای افراد کم‌حوصله، دستور توکار .Ic log یک گزارش .Ic watch را در هر زمانی ایجاد می‌کند. تمام ورودهای فعلی (مانند دستور توکار .Ic log Ns ) هنگامی که .Ic watch برای اولین بار مقداردهی می‌شود، گزارش می‌گردند. .Pp متغیر شل .Ic who قالب گزارش‌های .Ic watch را کنترل می‌کند. . .It Ic who No (+) رشته قالب برای پیام‌های .Ic watch Ns . دنباله‌های زیر با اطلاعات داده‌شده جایگزین می‌شوند: . .Bl -tag -width ".Sy Format" -offset indent .It Sy Format .Sy اطلاعات Who . .It Li %n نام کاربری که وارد/خارج شده است. . .It Li %a عمل مشاهده‌شده، یعنی .Sq logged on ، .Sq logged off ، یا .Sq replaced Ar olduser No on . . .It Li %l ترمینال (tty) که کاربر از طریق آن وارد/خارج شده است. . .It Li \&%M نام کامل میزبان راه دور، یا .Sq local اگر ورود/خروج از میزبان محلی بوده باشد. . .It Li %m نام میزبان راه دور تا اولین .Sq \&. . اگر آدرس IP یا نمایشگر سامانه پنجره X باشد، نام کامل چاپ می‌شود. . .El .Pp .Ql \&%M و .Ql %m تنها در سیستم‌هایی در دسترس هستند که نام میزبان راه دور را در .Pa /etc/utmp ذخیره می‌کنند. .Pp اگر تنظیم نشده باشد، .Dl %n has %a %l from %m\&. استفاده می‌شود، یا .Dl %n has %a %l\&. در سیستم‌هایی که نام میزبان راه دور را ذخیره نمی‌کنند. . .It Ic wordchars No (+) فهرستی از نویسه‌های غیرحرفی-عددی که توسط دستورهای ویرایشگر مانند .Ic forward-word ، .Ic backward-word و غیره بخشی از یک کلمه در نظر گرفته می‌شوند. .Pp اگر تنظیم نشده باشد، مقدار پیش‌فرض بر اساس وضعیت .Ic vimode تعیین می‌شود: اگر .Ic vimode تنظیم نشده باشد، .Sq Li *?_\-.[]~= به عنوان پیش‌فرض استفاده می‌شود؛ اگر .Ic vimode تنظیم شده باشد، .Ql _ به عنوان پیش‌فرض استفاده خواهد شد. . .El . .Sh "محیط (ENVIRONMENT)" .Bl -tag -width 6n . .It Ev AFSUSER No (+) معادل با متغیر پوستهٔ .Ic afsuser . . .It Ev CLICOLOR_FORCE توالی‌های رنگی برای .Ic ls\-F به طور معمول در صورتی که خروجی به یک ترمینال هدایت نشده باشد غیرفعال هستند. این رفتار را می‌توان با تنظیم این متغیر لغو کرد، که همچنین فراخوانی .Xr ls 1 توسط .Ic ls\-F را به گونه‌ای تغییر می‌دهد که به جای .Fl \-color=auto از .Fl \-color=always استفاده کند. .Pp توجه داشته باشید که .Ic color باید تنظیم شده باشد تا این متغیر محیطی موثر واقع شود؛ به خودی خود، .Ev CLICOLOR_FORCE رنگ را برای .Ic ls\-F فعال نمی‌کند. . .It Ev COMMAND_LINE هنگام فراخوانی برنامه‌ها برای حالت .Ql \`...\` در .Ic complete .Ar list ، توسط .Nm به خط فرمان فعلی تنظیم می‌شود. بخش .Ic complete در .Sx Builtin commands را ببینید. . .It Ev COLUMNS تعداد ستون‌ها در ترمینال. بخش .Sx Terminal management (+) را ببینید. . .It Ev DISPLAY توسط سامانه پنجره اکس (X Window System) استفاده می‌شود (نگاه کنید به .Xr X 1 ) . در صورت تنظیم بودن، شل .Ic autologout را مقداردهی نمی‌کند. . .It Ev EDITOR مسیر پرونده یک ویرایشگر پیش‌فرض. در صورتی که متغیر شل .Ic editors تنظیم نشده باشد، توسط دستور ویرایشگر .Ic run-fg-editor استفاده می‌شود. همچنین نگاه کنید به متغیر محیطی .Ev VISUAL . . .It Ev GROUP No (+) معادل با متغیر شل .Ic group . . .It Ev HOME معادل با متغیر شل .Ic home . . .It Ev HOST No (+) با نام ماشینی که شل بر روی آن در حال اجراست مقداردهی اولیه می‌شود، همان‌طور که توسط فراخوان سیستمی .Xr gethostname 2 تعیین می‌گردد. . .It Ev HOSTTYPE No (+) با نوع ماشینی که شل بر روی آن در حال اجراست مقداردهی اولیه می‌شود، همان‌طور که در زمان کامپایل مشخص شده است. این متغیر منسوخ شده است و در نسخه‌های آینده حذف خواهد شد. . .It Ev HPATH No (+) فهرستی از دایرکتوری‌های جداشده با .So Li \&: Sc که دستور ویرایشگر .Ic run-help در آن‌ها به دنبال مستندات دستورها می‌گردد. . .It Ev LANG محیط نویسه‌ای ترجیحی را مشخص می‌کند. نگاه کنید به .Sx Native Language System support (+) . . .It Ev LC_CTYPE در صورت تنظیم، تنها نحوهٔ مدیریت نویسه‌های ctype تغییر می‌کند. بخش .Sx "پشتیبانی از سیستم زبان محلی (Native Language System support) (+)" را ببینید. . .It Ev LINES تعداد خطوط ترمینال. بخش .Sx "مدیریت ترمینال (Terminal management) (+)" را ببینید. . .It Ev LSCOLORS یکی از دو متغیر محیطی است که می‌توان از آن برای تعریف رنگ‌های اختصاصی هر فایل که توسط .Ic ls\-F استفاده می‌شود (به‌همراه .Ev LS_COLORS ) بهره برد. این متغیر توسط برخی از نسخه‌های BSD از .Xr ls 1 استفاده می‌شود. .Pp در زمان راه‌اندازی .Nm ، متغیر .Ev LS_COLORS نسبت به .Ev LSCOLORS اولویت دارد. اگر هر دو متغیر .Ev LSCOLORS یا .Ev LS_COLORS با دستور .Ic setenv مقداردهی شوند، آخرین .Ic setenv اعمال‌شده استفاده می‌شود. اگر .Ev LSCOLORS با دستور .Ic unsetenv حذف شود در حالی که .Ev LS_COLORS همچنان با .Ic setenv تنظیم شده باشد، آن‌گاه .Ev LS_COLORS دوباره تجزیه می‌شود (با نادیده گرفتن هرگونه هشدار) تا تنظیمات آن مجدداً اعمال گردد. .Pp این متغیر یک رشتهٔ ۲۲ نویسه‌ای است که از به‌هم‌پیوستن ۱۱ جفت به‌صورت .Ar f Ns Ar b تشکیل شده است، که در آن .Ar f رنگ پیش‌زمینه و .Ar b رنگ پس‌زمینه است. اگر کمتر از ۱۱ جفت مشخص شود، برای مدخل‌های باقی‌مانده از رنگ‌های پیش‌فرض استفاده می‌شود. اگر بیش از ۱۱ جفت مشخص شود، مقادیر اضافی نادیده گرفته می‌شوند. .Pp ترتیب جفت‌های ویژگی رنگ نسبت به متغیر معادل .Ev LS_COLORS ، نوع فایل و رنگ پیش‌فرض به شرح زیر است: .Pp .Bl -column -offset indent ".Sy Index" ".Sy Var" "" . .It Sy شاخص Ta Sy متغیر Ta Sy نوع فایل. [رنگ پیش‌فرض] . .It 1 Ta Li di Ta دایرکتوری. [آبی پُررنگ] . .It 2 Ta Li ln Ta پیوند نمادین. [فیروزه‌ای پُررنگ] . .It 3 Ta Li so Ta سوکت. [ارغوانی پُررنگ] . .It 4 Ta Li pi Ta لوله نام‌گذاری‌شده (FIFO). [زرد (یا قهوه‌ای)] . .It 5 Ta Li ex Ta فایل قابل اجرا. [سبز پُررنگ] . .It 6 Ta Li bd Ta دستگاه بلوکی. [زرد پُررنگ] . .It 7 Ta Li cd Ta دستگاه نویسه‌ای. [زرد پُررنگ] . .It 8 Ta Li su Ta فایل دارای Setuid. [سفید روی قرمز] . .It 9 Ta Li sg Ta فایل دارای Setgid. [سیاه روی زرد] . .It 10 Ta Li tw Ta دایرکتوری Sticky و قابل نوشتن توسط دیگران. [سیاه روی سبز] . .It 11 Ta Li ow Ta دایرکتوری قابل نوشتن توسط دیگران بدون Sticky. [آبی روی سبز] .El .Pp شناسه‌های کد رنگ به شرح زیر هستند: .Pp .Bl -tag -width "Code" -offset indent -compact .It Sy کد .Sy توضیحات .It Li a سیاه. .It Li b قرمز. .It Li c سبز. .It Li d زرد (یا قهوه‌ای). .It Li e آبی. .It Li f ارغوانی. .It Li g فیروزه‌ای (Cyan). .It Li h خاکستری روشن. .It Li A سیاه پُررنگ (Bold)، معمولاً به صورت خاکستری تیره نمایش داده می‌شود. .It Li B قرمز پُررنگ. .It Li C سبز پُررنگ. .It Li D زرد پُررنگ. .It Li E آبی پُررنگ. .It Li F سرخابی پُررنگ (Magenta). .It Li G فیروزه‌ای پُررنگ. .It Li H خاکستری روشن پُررنگ؛ شبیه به سفید درخشان به نظر می‌رسد. .It Li x رنگ پیش‌زمینه یا پس‌زمینهٔ پیش‌فرض. .El .Pp توجه داشته باشید که موارد فوق رنگ‌های استاندارد ANSI هستند. نمایش واقعی ممکن است بسته به قابلیت‌های رنگی ترمینالِ در حال استفاده، متفاوت باشد. .Pp رنگ‌های پیش‌فرض مطابق با متغیرهای رنگ در .Ev LS_COLORS هستند، و با رنگ‌های پیش‌فرضی که در برخی نسخه‌های BSD از .Xr ls 1 استفاده می‌شوند، یکسان نیستند. . .It Ev LS_COLORS یکی از دو متغیر محیطی است که می‌تواند برای تعیین رنگ‌های مجزای هر فایلِ مورد استفاده توسط .Ic ls\-F (در کنار .Ev LSCOLORS ) به کار رود. این متغیر توسط نسخهٔ GNU coreutils از .Xr ls 1 استفاده شده و می‌تواند توسط .Xr dircolors 1 تنظیم شود. .Pp هنگام راه‌اندازی .Nm Ns ، .Ev LS_COLORS نسبت به .Ev LSCOLORS اولویت دارد. اگر هر دو متغیر .Ev LSCOLORS یا .Ev LS_COLORS با .Ic setenv مقداردهی شوند، جدیدترین .Ic setenv استفاده می‌شود. اگر .Ev LS_COLORS با .Ic unsetenv حذف شود در حالی که .Ev LSCOLORS همچنان .Ic setenv شده باشد، آن‌گاه .Ev LSCOLORS دوباره (بدون نمایش هیچ‌گونه هشداری) تجزیه می‌شود تا تنظیمات آن مجدداً اعمال گردد. .Pp قالب این متغیر یادآور قالب فایل .Xr termcap 5 است؛ فهرستی جداشده با .So Li \&: Sc از عبارت‌هایی به شکل .Li \&" Ns Ar xx Ns Li = Ns Ar value Ns Li \&" یا .Li \&"* Ns Ar ext Ns Li = Ns Ar value Ns Li \&" . .Pp شکل اول، .Li \&" Ns Ar xx Ns Li = Ns Ar value Ns Li \&" ، که در آن .Li \&" Ns Ar xx Ns Li \&" یک نام متغیر دو نویسه‌ای است، از متغیرهای زیر، کد رنگ یا توالی‌های گریز استاندارد ISO 6429 پیش‌فرض مربوط به آن‌ها، و نوع فایل پشتیبانی می‌کند: . .Bl -column -offset indent ".Sy Var" ".Sy Default" "" . .It Sy Var Ta Sy پیش‌فرض Ta Sy نوع فایل. [رنگ پیش‌فرض] . .It Li no Ta Li 0 Ta متن عادی (غیر نام‌فایل). . .It Li fi Ta Li 0 Ta فایل معمولی. . .It Li di Ta Li 01;34 Ta دایرکتوری. [آبی پررنگ] . .It Li ln Ta Li 01;36 Ta پیوند نمادین (Symbolic link). [فیروزه‌ای پررنگ] . .It Li pi Ta Li 33 Ta لوله نام‌گذاری‌شده (FIFO). [زرد (یا قهوه‌ای)] . .It Li so Ta Li 01;35 Ta سوکت. [ارغوانی پررنگ] . .It Li do Ta Li 01;35 Ta دُر (Door). [ارغوانی پررنگ] . .It Li bd Ta Li 01;33 Ta دستگاه بلوکی (Block device). [زرد پررنگ] . .It Li cd Ta Li 01;33 Ta دستگاه نویسه‌ای (Character device). [زرد پررنگ] . .It Li ex Ta Li 01;32 Ta فایل اجرایی. [سبز پررنگ] . .It Li mi Ta (هیچ) Ta فایل ناموجود (مقصد پیوند نمادین یتیم). پیش‌فرض آن Li fi است. . .It Li or Ta (هیچ) Ta پیوند نمادین یتیم (شکسته). پیش‌فرض آن Li ln است. . .It Li lc Ta Li ^[[ Ta کد چپ (Left code). . .It Li rc Ta Li m Ta کد راست (Right code). . .It Li ec Ta (هیچ) Ta کد پایانی. جایگزین Li lc Ns + Ns Li no Ns + Ns Li rc می‌شود. . .It Li su Ta Li 37;41 Ta فایل Setuid. [سفید روی قرمز] . .It Li sg Ta Li 30;43 Ta فایل Setgid. [سیاه روی زرد] . .It Li tw Ta Li 30;42 Ta دایرکتوری با بیت چسبان (sticky) و قابل نوشتن برای دیگران. [سیاه روی سبز] . .It Li ow Ta Li 34;42 Ta دایرکتوری قابل نوشتن برای دیگران اما بدون بیت چسبان. [آبی روی سبز] . .It Li st Ta Li 37;44 Ta دایرکتوری با بیت چسبان اما غیرقابل نوشتن برای دیگران. [سفید روی آبی] . .It Li mh Ta (هیچ) Ta فایل با چندین پیوند سخت (hard link). . .El .Pp تنها لازم است متغیرهایی را که می‌خواهید نسبت به مقدار پیش‌فرض تغییر دهید، اضافه کنید. .Pp فرم دوم، .Li \&"* Ns Ar ext Ns Li = Ns Ar value Ns Li \&" نام فایل‌ها را بر اساس پسوند رنگ‌آمیزی می‌کند. برای نمونه، با استفاده از کدهای ISO 6429، جهت آبی کردن رنگ همه فایل‌های منبع زبان C عبارت .Li \&"*.c=34\&" را مشخص می‌کنید. این کار رنگ تمام فایل‌های ختم‌شده به .Ql .c را به رنگ پیش‌زمینه آبی (34) تغییر می‌دهد. .Pp نویسه‌های کنترلی را می‌توان در نمادگذاری گریز سبک C (C\-style\-escaped) یا نمادگذاری ^ مشابه stty نوشت. نمادگذاری سبک C عبارت .Ql ^[ را برای Escape، .Ql \_ را برای نویسه فاصله معمولی، و .Ql \&? را برای Delete می‌افزاید. علاوه بر این، نویسه گریز .Ql ^[ می‌تواند برای لغو تفسیر پیش‌فرض .Ql ^[ ، .Ql ^ ، .Ql \&: و .Ql = استفاده شود. .Pp هر نام فایل به صورت زیر در ترمینال خروجی داده خواهد شد: .Dl lc Ar color-code Li rc Ar filename Li ec .Pp اگر کد .Ql ec تعریف نشده باشد، دنباله .Dl lc no rc به جای آن استفاده خواهد شد. این روش معمولاً برای استفاده راحت‌تر است، اما عمومیت کمتری دارد. .Pp کد چپ .Pq Ql lc ، کد راست .Pq Ql rc و کدهای پایان .Pq Ql ec فراهم شده‌اند تا نیازی نباشد بخش‌های مشترک را بارها و بارها تایپ کنید و همچنین برای پشتیبانی از پایانه‌های نامتعارف؛ عموماً نیازی به تغییر دادن آن‌ها نخواهید داشت مگر اینکه پایانه شما از کدهای رنگ ISO 6429 استفاده نکرده و از سیستم دیگری استفاده کند. .Pp اگر پایانه شما از کدهای رنگ ISO 6429 استفاده می‌کند، می‌توانید کدهای نوع (یعنی همه به جز کدهای .Ql lc ، .Ql rc و .Ql ec Ns ) را از کدهای عددی رنگ ISO 6429 که با .Ql \&; از هم جدا شده‌اند، ترکیب کنید. برای مثال، .Ql 01;32 رنگ پیش‌زمینه سبز روشن با پس‌زمینه پیش‌فرض است. .Pp رایج‌ترین کدهای رنگ ISO 6429 عبارتند از: .Pp .Bl -tag -width ".Sy Color" -offset indent -compact . .It Sy Color .Sy Description .Pp . .It Li 0 برای بازیابی رنگ پیش‌فرض. . .It Li 1 رنگ‌های پررنگ (Bold) / روشن‌تر. . .It Li 4 متن دارای زیرخط (Underline). . .It Li 5 متن چشمک‌زن. . .It Li 30 پیش‌زمینه سیاه. . .It Li 31 پیش‌زمینه قرمز. . .It Li 32 پیش‌زمینه سبز. . .It Li 33 پیش‌زمینه زرد (یا قهوه‌ای). . .It Li 34 پیش‌زمینه آبی. . .It Li 35 پیش‌زمینه سرخابی (magenta). . .It Li 36 پیش‌زمینه فیروزه‌ای (cyan). . .It Li 37 پیش‌زمینه سفید (یا خاکستری). . .It Li 40 پس‌زمینه سیاه. . .It Li 41 پس‌زمینه قرمز. . .It Li 42 پس‌زمینه سبز. . .It Li 43 پس‌زمینه زرد (یا قهوه‌ای). . .It Li 44 پس‌زمینه آبی. . .It Li 45 پس‌زمینه سرخابی (magenta). . .It Li 46 پس‌زمینه فیروزه‌ای (cyan). . .It Li 47 پس‌زمینه سفید (یا خاکستری). . .El .Pp تمام کدهای رنگ ISO 6429 روی همهٔ سیستم‌ها یا دستگاه‌های نمایش کار نخواهند کرد. .Pp برخی از برنامه‌های ترمینال کد پایانی پیش‌فرض را به‌درستی تشخیص نمی‌دهند. اگر پس از گرفتن فهرست دایرکتوری تمام متن‌ها رنگی شدند، سعی کنید کدهای .Ql no و .Ql fi را از 0 به کدهای عددی مربوط به رنگ‌های استاندارد پیش‌زمینه و پس‌زمینهٔ خود تغییر دهید. .Pp برای پیوندهای نمادین، کلیدواژهٔ .Ql ln می‌تواند روی .Ql target تنظیم شود، که باعث می‌شود رنگ فایل با رنگ مقصد پیوند یکسان شود. . .It Ev MACHTYPE No (+) نوع ماشین (کلاس ریزپردازنده یا مدل ماشین)، همان‌طور که در زمان کامپایل مشخص شده است. . .It Ev NOREBIND No (+) در صورت تنظیم، نویسه‌های قابل‌چاپ مجدداً به .Ic self-insert-command مقید نمی‌شوند. ببینید .Sx Native Language System support (+) . . .It Ev OSTYPE No (+) سیستم‌عامل، همان‌طور که در زمان کامپایل مشخص شده است. . .It Ev PATH یک فهرست از دایرکتوری‌های جداشده با .So Li \&: Sc برای جستجوی فایل‌های اجرایی. معادل متغیر شل .Ic path است، اما با قالبی متفاوت. . .It Ev PWD No (+) معادل متغیر شل .Ic cwd است، اما با آن همگام‌سازی نشده است؛ تنها پس از یک تغییر دایرکتوری واقعی به‌روزرسانی می‌شود. . .It Ev REMOTEHOST No (+) میزبانی که کاربر از راه دور از طریق آن وارد سیستم شده است، در صورتی که چنین باشد و شل قادر به تشخیص آن باشد. تنها در صورتی تنظیم می‌شود که شل به این صورت کامپایل شده باشد؛ متغیر شل .Ic version را ببینید. . .It Ev SHLVL No (+) معادل با متغیر پوسته‌ای .Ic shlvl است. . .It Ev SYSTYPE No (+) نوع سیستم فعلی. (فقط در Domain/OS) . .It Ev TERM معادل با متغیر پوسته‌ای .Ic term است. . .It Ev TERMCAP رشتهٔ قابلیت‌های ترمینال. نگاه کنید به .Sx Terminal management (+) . . .It Ev USER معادل با متغیر پوسته‌ای .Ic user است. . .It Ev VENDOR No (+) فروشنده یا سازنده، همان‌گونه که در زمان کامپایل تعیین شده است. . .It Ev VISUAL مسیر کامل ویرایشگر تمام‌صفحهٔ پیش‌فرض. توسط دستور ویرایشگر .Ic run-fg-editor استفاده می‌شود اگر متغیر پوسته‌ای .Ic editors تنظیم نشده باشد. همچنین متغیر محیطی .Ev EDITOR را نیز ببینید. . .El . .Sh "فایل‌ها (FILES)" .Bl -tag -width 6n . .It Pa /etc/csh.cshrc ابتدا توسط هر پوسته خوانده می‌شود. .Pp سیستم‌های ConvexOS، Stellix و Intel از .Pa /etc/cshrc استفاده می‌کنند. .Pp سیستم‌های NeXT از .Pa /etc/cshrc.std استفاده می‌کنند. .Pp سیستم‌های A/UX،‏ AMIX،‏ Cray و IRIX معادل این فایل را در .Xr csh 1 ندارند، اما با این وجود این فایل را در .Nm می‌خوانند. .Pp ‏Solaris 2.x نیز فاقد آن است، اما .Nm فایل .Pa /etc/.cshrc را می‌خواند. .Pp (+) . .It Pa /etc/csh.login توسط شل‌های لاگین پس از .Pa /etc/csh.cshrc خوانده می‌شود. .Pp سیستم‌های ConvexOS،‏ Stellix و Intel از .Pa /etc/login استفاده می‌کنند. .Pp سیستم‌های NeXT از .Pa /etc/login.std استفاده می‌کنند. .Pp ‏Solaris 2.x از .Pa /etc/.login استفاده می‌کند. .Pp سیستم‌های A/UX،‏ AMIX،‏ Cray و IRIX از .Pa /etc/cshrc استفاده می‌کنند. . .It Pa ~/.tcshrc No (+) توسط هر شل پس از .Pa /etc/csh.cshrc یا معادل آن خوانده می‌شود. . .It Pa ~/.cshrc توسط هر شل، در صورتی که .Pa ~/.tcshrc وجود نداشته باشد، پس از .Pa /etc/csh.cshrc یا معادل آن خوانده می‌شود. .Pp در این راهنما عبارت .Sq Pa ~/.tcshrc به معنای .Do .Pa ~/.tcshrc یا در صورت پیدا نشدن .Pa ~/.tcshrc ، فایل .Pa ~/.cshrc .Dc به‌کار رفته است. . .It Pa ~/.history توسط شل‌های ورود پس از .Pa ~/.tcshrc خوانده می‌شود اگر .Ic savehist تنظیم شده باشد، اما همچنین به .Ic histfile نگاه کنید. . .It Pa ~/.login توسط شل‌های ورود پس از .Pa ~/.tcshrc یا .Pa ~/.history خوانده می‌شود. .Pp ممکن است شل به گونه‌ای کامپایل شده باشد که .Pa ~/.login را به جای بعد از آن، قبل از .Pa ~/.tcshrc و .Pa ~/.history بخواند؛ به متغیر شل .Ic version نگاه کنید. . .It Pa ~/.cshdirs No (+) توسط شل‌های ورود پس از .Pa ~/.login خوانده می‌شود اگر .Ic savedirs تنظیم شده باشد، اما همچنین به .Ic dirsfile نگاه کنید. . .It Pa /etc/csh.logout توسط شل‌های ورود هنگام خروج خوانده می‌شود. .Pp سیستم‌های ConvexOS، Stellix و Intel از .Pa /etc/logout استفاده می‌کنند. سیستم‌های NeXT از .Pa /etc/logout.std استفاده می‌کنند. .Pp سیستم‌های A/UX، AMIX، Cray و IRIX معادلی در .Xr csh 1 ندارند، اما در هر صورت این فایل را در .Nm می‌خوانند. .Pp سیستم‌های Solaris 2.x نیز آن را ندارند، اما .Nm فایل .Pa /etc/.logout را می‌خواند. (+) . .It Pa ~/.logout توسط شل‌های ورود به سیستم (login shells) در هنگام خروج پس از .Pa /etc/csh.logout یا معادل آن خوانده می‌شود. . .It Pa /bin/sh برای تفسیر اسکریپت‌های شلی که با .Ql # شروع نمی‌شوند استفاده می‌شود. . .It Pa /tmp/sh* فایل موقت برای .Ql << . . .It Pa /etc/passwd منبع دایرکتوری‌های خانگی برای جایگزینی‌های .Sq ~name . . .El .Pp اگر شل به این صورت کامپایل شده باشد، ترتیب خوانده شدن فایل‌های راه‌اندازی ممکن است تفاوت داشته باشد؛ بخش .Sx Startup and shutdown و متغیر شل .Ic version را ببینید. . .Sh "ویژگی‌های جدید (+) (NEW FEATURES)" این راهنما .Nm را به عنوان یک موجودیت واحد توصیف می‌کند، اما کاربران باتجربهٔ .Xr csh 1 مایل خواهند بود توجه ویژه‌ای به ویژگی‌های جدید .Nm داشته باشند. .Pp یک ویرایشگر خط فرمان، که از نگاشت‌های کلید به سبک .Xr emacs 1 یا به سبک .Xr vi 1 پشتیبانی می‌کند. رجوع کنید به .Sx "ویرایشگر خط فرمان (+)" و .Sx "دستورهای ویرایشگر (+)" . .Pp تکمیل کلمات و فهرست‌بندی تعاملی و برنامه‌پذیر. رجوع کنید به .Sx "تکمیل و فهرست‌بندی (+)" و دستورهای توکار .Ic complete و .Ic uncomplete . .Pp .Sx "تصحیح املا (+)" برای نام فایل‌ها، دستورها و متغیرها. .Pp .Sx "دستورهای ویرایشگر (+)" که عملکردهای مفید دیگری را در میان دستورهای تایپ‌شده انجام می‌دهند، از جمله جستجوی مستندات .Ic ( run-help ) , راه‌اندازی سریع ویرایشگر .Ic ( run-fg-editor ) , و شناسایی دستور .Ic ( which-command ) . .Pp یک سازوکار تاریخچهٔ ارتقایافته. رویدادها در فهرست تاریخچه دارای برچسب زمانی هستند. همچنین رجوع کنید به دستور .Ic history و متغیرهای پوستهٔ مرتبط با آن، مشخص‌کنندهٔ رویداد .Ql # که پیش‌تر مستند نشده بود و اصلاح‌کننده‌های جدید در .Sx "جایگزینی تاریخچه" , دستورهای ویرایشگر .Ic down-history , .Ic expand-history , .Ic history-search-backward , .Ic history-search-forward , .Ic i-search-back , .Ic i-search-fwd , .Ic toggle-literal-history , .Ic vi-search-back , .Ic vi-search-fwd , و .Ic up-history و متغیر پوستهٔ .Ic histlit . .Pp تجزیه بهبودیافته دایرکتوری و مدیریت پشته دایرکتوری. دستورهای .Ic cd , .Ic pushd , .Ic popd , و .Ic dirs و متغیرهای شل وابسته به آن‌ها، شرح .Sx "جایگزینی پشته دایرکتوری (+) (Directory stack substitution (+))" , متغیرهای شل .Ic dirstack , .Ic owd , و .Ic symlinks و دستورهای ویرایشگر .Ic normalize-command و .Ic normalize-path را ببینید. .Pp نفی در الگوهای glob. نگاه کنید به .Sx "جایگزینی نام فایل (Filename substitution)" . .Pp .Sx "عملگرهای پرس‌وجوی فایل (File inquiry operators)" جدید و یک دستور توکار .Ic filetest که از آن‌ها استفاده می‌کند. .Pp طیف متنوعی از .Sx "رویدادهای خودکار، دوره‌ای و زمان‌بندی‌شده (+) (Automatic, periodic and timed events (+))" شامل رویدادهای زمان‌بندی‌شده، نام‌های مستعار ویژه، خروج خودکار از سیستم و قفل کردن ترمینال، زمان‌سنجی دستورها و نظارت بر ورود و خروج‌ها. .Pp پشتیبانی از سیستم زبان بومی (نگاه کنید به .Sx "پشتیبانی از سیستم زبان بومی (+) (Native Language System support (+))" ) , ویژگی‌های نگارش‌های مختلف سیستم‌عامل (نگاه کنید به .Sx "پشتیبانی از نگارش‌های مختلف سیستم‌عامل (+) (OS variant support (+))" و متغیر شل .Ic echo_style ) و مکان‌های فایل وابسته به سیستم (نگاه کنید به .Sx "فایل‌ها (FILES)" ) . .Pp قابلیت‌های گسترده در مدیریت ترمینال. رجوع کنید به .Sx Terminal management (+) . .Pp دستورهای توکار جدید شامل .Ic builtins , .Ic hup , .Ic ls\-F , .Ic newgrp , .Ic printenv , .Ic which , و .Ic where . .Pp متغیرهای جدیدی که اطلاعات مفیدی را به‌آسانی در دسترس پوسته قرار می‌دهند. رجوع کنید به متغیرهای پوستهٔ .Ic gid , .Ic loginsh , .Ic oid , .Ic shlvl , .Ic tcsh , .Ic tty , .Ic uid , و .Ic version و متغیرهای محیطی .Ev HOST , .Ev REMOTEHOST , .Ev VENDOR , .Ev OSTYPE , و .Ev MACHTYPE . .Pp سینتکس جدیدی برای گنجاندن اطلاعات مفید در رشتهٔ اعلان (رجوع کنید به .Ic prompt ) , و اعلان‌های ویژه برای حلقه‌ها و تصحیح املا (رجوع کنید به .Ic prompt2 و .Ic prompt3 ) . .Pp متغیرهای فقط‌خواندنی. رجوع کنید به .Sx Variable substitution . . .Sh "حرف T در TCSH (THE T IN TCSH)" در سال ۱۹۶۴، DEC رایانه PDP-6 را تولید کرد. مدل PDP-10 بازپیاده‌سازی بعدی آن بود. در حدود سال ۱۹۷۰، هنگامی که DEC مدل دوم یعنی KI10 را عرضه کرد، نام آن به DECsystem-10 تغییر یافت. .Pp سیستم‌عامل TENEX در سال ۱۹۷۲ در Bolt, Beranek & Newman (یک اتاق فکر در کمبریج، ماساچوست) به عنوان آزمایشی در زمینهٔ سیستم‌های عامل حافظه مجازی با صفحه‌بندی بر حسب تقاضا (demand-paged) ایجاد شد. آن‌ها یک پیجر (pager) جدید برای DEC PDP-10 ساختند و سیستم‌عامل هماهنگ با آن را ایجاد کردند. این سیستم در محافل دانشگاهی بسیار موفق بود. .Pp در سال ۱۹۷۵، شرکت DEC مدل جدیدی از PDP-10 با نام KL10 را عرضه کرد؛ آن‌ها قصد داشتند تنها یک نسخه از TENEX را که مجوز آن را از BBN گرفته بودند، برای این دستگاه جدید ارائه دهند. آن‌ها نسخهٔ خود را TOPS-20 نامیدند (بزرگ‌نویسی حروف آن نشان تجاری ثبت‌شده است). بسیاری از کاربران TOPS-10 («The OPerating System for PDP-10») اعتراض کردند؛ بنابراین DEC خود را در حال پشتیبانی از دو سیستم ناسازگار بر روی یک سخت‌افزار یکسان دید--اما در مورد PDP-11، شش سیستم‌عامل وجود داشت! .Pp سیستم‌های TENEX، و TOPS-20 تا نسخهٔ ۳، قابلیت تکمیل دستور را از طریق یک کتابخانهٔ زیرروال در سطح کد کاربر به نام ULTCMD ارائه می‌دادند. با نسخهٔ ۳، شرکت DEC تمام آن قابلیت‌ها و حتی بیشتر را به مانیتور («هسته» برای شما یونیکسی‌ها) منتقل کرد که از طریق COMND% JSYS (دستور «Jump to SYStem»، سازوکار فراخوانی سرپرست [آیا ریشه‌های آی‌بی‌ام من نیز دارند خود را نشان می‌دهند؟]) قابل دسترسی بود. .Pp سازندهٔ tcsh تحت تأثیر این ویژگی و چندین ویژگی دیگر TENEX و TOPS-20 قرار گرفت و نسخه‌ای از csh ایجاد کرد که از آن‌ها تقلید می‌کرد. . .Sh "محدودیت‌ها (LIMITATIONS)" سیستم فهرست آرگومان‌ها را به ARG_MAX نویسه محدود می‌کند. .Pp تعداد آرگومان‌های یک دستور که شامل بسط نام فایل است، به ۱/۶ تعداد نویسه‌های مجاز در یک فهرست آرگومان محدود می‌شود. .Pp جایگزینی‌های دستور نمی‌توانند نویسه‌هایی بیش از آنچه در یک فهرست آرگومان مجاز است، جایگزین کنند. .Pp برای تشخیص حلقه، شل تعداد جایگزینی‌های .Ic alias در یک خط واحد را به ۲۰ محدود می‌کند. . .Sh "همچنین ببینید (SEE ALSO)" .Xr csh 1 , .Xr dircolors 1 , .Xr emacs 1 , .Xr ls 1 , .Xr newgrp 1 , .Xr setpath 1 , .Xr sh 1 , .Xr stty 1 , .Xr su 1 , .Xr tset 1 , .Xr vi 1 , .Xr x 1 , .Xr access 2 , .Xr execve 2 , .Xr fork 2 , .Xr killpg 2 , .Xr pipe 2 , .Xr setrlimit 2 , .Xr sigvec 2 , .Xr stat 2 , .Xr umask 2 , .Xr vfork 2 , .Xr wait 2 , .Xr malloc 3 , .Xr setlocale 3 , .Xr tty 4 , .Xr a.out 5 , .Xr termcap 5 , .Xr environ 7 , .Xr termio 7 , .Em Introduction to the C Shell . .Sh "نسخه (VERSION)" این کتابچه راهنما tcsh 6.24.16 (Astron) 2025-07-09 را مستند می‌کند. . .Sh "نویسندگان (AUTHORS)" . .An -nosplit .Bl -hang -width 2n -compact . .It An William Joy . .br نویسنده اصلی .Xr csh 1 . . .It An J.E. Kulp , IIASA، لاکسنبرگ، اتریش. .br ویژگی‌های کنترل کار و پشته دایرکتوری. . .It An Ken Greer , HP Labs، 1981. .br تکمیل نام فایل. . .It An Mike Ellis , Fairchild، 1983. .br تشخیص/تکمیل نام دستور. . .It An Paul Placeway , دپارتمان CIS دانشگاه ایالتی اوهایو، 1983-1993. .br ویرایشگر خط فرمان، روال‌های اعلان، نحو جدید glob و اصلاحات و بهینه‌سازی‌های متعدد. . .It An Karl Kleinpaste , CCI، 1983-4. .br نام‌های مستعار ویژه، سازوکارهای استخراج پشته دایرکتوری، نظارت بر ورود/خروج، رویدادهای زمان‌بندی‌شده، و ایدهٔ قالب جدید اعلان. . .It An Rayan Zachariassen , دانشگاه تورنتو، 1984. .br دستورهای توکار .Ic ls\-F و .Ic which و رفع اشکالات، تغییرات و بهینه‌سازی‌های متعدد. . .It An Chris Kingsley , Caltech. .br روال‌های سریع تخصیص حافظه. . .It An Chris Grevstad , TRW, 1987. .br ادغام 4.3BSD .Xr csh 1 در .Nm . . .It An Christos S. Zoulas , Cornell U. EE Dept., 1987-94. .br پورت‌ها به HPUX، SVR2 و SVR3، نسخه‌ای از getwd.c برای SysV، پشتیبانی از SHORT_STRINGS و نسخه جدیدی از sh.glob.c. . .It An James J Dempsey , BBN و .An Paul Placeway , OSU, 1988. .br پورت A/UX. . .It An Daniel Long , NNSC, 1988. .br .Ic wordchars . . .It An Patrick Wolfe , Kuck and Associates, Inc., 1988. .br پاک‌سازی حالت .Ic vi . . .It An David C Lawrence , Rensselaer Polytechnic Institute, 1989. .br .Ic autolist و فهرست‌بندی تکمیل‌های مبهم. . .It An Alec Wolman , DEC, 1989. .br خطوط جدید در اعلان. . .It An Matt Landau , BBN, 1989. .br .Pa ~/.tcshrc . . .It An Ray Moody , دانشکده فیزیک Purdue، ۱۹۸۹. .br بسط تاریخچه با کلید فاصلهٔ جادویی. . .It An Mordechai ???? , Intel، ۱۹۸۹. .br رفع اشکالات و افزوده‌های .Fn printprompt . . .It An Kazuhiro Honda , دانشکده علوم کامپیوتر، دانشگاه Keio، ۱۹۸۹. .br تصحیح خودکار املا و .Ic prompt3 . . .It An Per Hedeland , Ellemtel، سوئد، ۱۹۹۰-. .br رفع اشکالات گوناگون، بهبودها و به‌روزرسانی‌های راهنما. . .It An Hans J. Albertsson , Sun سوئد. .br .Ic ampm , .Ic settc , و .Ic telltc . . .It An Michael Bloom . .br رفع اشکالات مدیریت وقفه. . .It An Michael Fine , Digital Equipment Corp. .br پشتیبانی از کلیدهای گسترش‌یافته. . .It An Eric Schnoebelen , Convex، ۱۹۹۰. .br پشتیبانی از Convex، رفع اشکالات فراوان در .Xr csh 1 و ذخیره و بازیابی پشتهٔ دایرکتوری. . .It An Ron Flax , Apple، ۱۹۹۰. .br پورت (مجدد) برای A/UX 2.0. . .It An Dan Oscarsson , LTH سوئد، ۱۹۹۰. .br پشتیبانی از NLS و شبیه‌سازی پشتیبانی NLS برای سیستم‌های فاقد NLS، رفع اشکال‌ها. . .It An Johan Widen , SICS سوئد، ۱۹۹۰. .br .Ic shlvl , پشتیبانی از Mach، .Ic correct-line , چاپ ۸-بیتی. . .It An Matt Day , Sanyo Icon، ۱۹۹۰. .br پشتیبانی از termio در POSIX، رفع اشکالات محدودیت‌های SysV. . .It An Jaap Vermeulen , Sequent، ۱۹۹۰-۹۱. .br رفع اشکالات حالت Vi، expand-line، رفع اشکالات تغییر پنجره، پورت به Symmetry. . .It An Martin Boyer , Institut de recherche d'Hydro-Quebec، ۱۹۹۱. .br .Ic autolist و گزینه‌های بوق آن، اصلاح جستجوی تاریخچه جهت جستجوی کل رشته از ابتدای خط تا مکان‌نما. . .It An Scott Krotz , Motorola، ۱۹۹۱. .br پورت به Minix. . .It An David Dawes , دانشگاه سیدنی استرالیا، گروه فیزیک، ۱۹۹۱. .br رفع اشکالات کنترل کار در SVR4. . .It An Kimmo Suominen , 1991-. .br رفع اشکالات گوناگون قابلیت حمل و موارد دیگر. افزودن .Ql $'' (علامت دلار و نقل‌قول تکی). . .It An Jose Sousa , Interactive Systems Corp.، ۱۹۹۱. .br رفع اشکالات گستردهٔ .Ic vi و دستور حذف در .Ic vi . . .It An Marc Horowitz , MIT, 1991. .br اصلاحات سازگاری با ANSI، کد درهم‌سازی جدید exec، اصلاحات imake، .Ic where . . .It An Luke Mewburn , 1991-. .br بهبود چاپ دایرکتوری در .Ic prompt . افزودن .Ic ellipsis و .Ic rprompt . بهبودهای .Ic vimode . بهبودهای صفحهٔ راهنما. . .It An Bruce Sterling Woodcock , sterling@netcom.com, 1991-1995. .br پورت ETA و Pyramid، اصلاحات Makefile و lint، افزودن .Ic ignoreeof= Ns Ar n و تغییرات گوناگون دیگر برای قابلیت حمل و رفع اشکالات. . .It An Jeff Fink , 1992. .br .Ic complete-word-fwd و .Ic complete-word-back . . .It An Harry C. Pulley , 1992. .br پورت Coherent. . .It An Andy Phillips , Mullard Space Science Lab U.K., 1992. .br پورت VMS-POSIX. . .It An Beto Appleton , IBM Corp., 1992. .br اصلاحات پیمایش گروه فرایند، رفع اشکالات .Xr csh 1 , آزمون‌های فایل POSIX،‏ POSIX SIGHUP. . .It An Scott Bolte , Cray Computer Corp., 1992. .br پورت CSOS. . .It An Kaveh R. Ghazi , Rutgers University, 1992. .br پورت‌ها و رفع اشکالات Tek،‏ m88k،‏ Titan و Masscomp. افزودن پشتیبانی از autoconf. . .It An Mark Linderman , Cornell University, 1992. .br پورت OS/2. . .It An Mika Liljeberg , liljeber@kruuna.Helsinki.FI, 1992. .br پورت Linux. . .It An Tim P. Starrin , NASA Langley Research Center Operations, 1993. .br متغیرهای فقط‌خواندنی. . .It An Dave Schweisguth , Yale University, 1993-4. .br صفحهٔ man جدید و tcsh.man2html. . .It An Larry Schwimmer , Stanford University, 1993. .br وصله‌های AFS و HESIOD. . .It An Edward Hutchins , Silicon Graphics Inc., 1996. .br افزودن cd ضمنی. . .It An Martin Kraemer , 1997. .br پورت به ماشین Siemens Nixdorf EBCDIC. . .It An Amol Deshpande , Microsoft, 1997. .br پورت به WIN32 (شامل Windows/95 و Windows/NT)؛ نوشتن تمام کدهای ناموجود کتابخانه و کاتالوگ پیام جهت برقراری ارتباط با Windows. . .It An Taga Nayuta , 1998. .br افزوده‌های مربوط به ls رنگی. . .El . .Sh "تشکر و قدردانی (THANKS TO)" Bryan Dunlap, Clayton Elwell, Karl Kleinpaste, Bob Manson, Steve Romig, Diana Smetters, Bob Sutterfield, Mark Verber, Elizabeth Zwicky و همه افراد دیگر در Ohio State برای پیشنهادات و دلگرمی‌هایشان .Pp همه افراد در شبکه، برای شکیبایی، گزارش اشکالات، و پیشنهاد افزوده‌های جدید برای تک‌تک نسخه‌ها .Pp Richard M. Alderson III، برای نگارش بخش .Sx T in tcsh . .Sh "اشکالات (BUGS)" هنگامی که یک دستور معلق‌شده مجدداً راه‌اندازی می‌شود، اگر دایرکتوری آغاز به کار آن با دایرکتوری فعلی متفاوت باشد، پوسته آن دایرکتوری را چاپ می‌کند. این امر می‌تواند گمراه‌کننده (یعنی نادرست) باشد، چرا که ممکن است کار به‌صورت درونی دایرکتوری را تغییر داده باشد. .Pp توابع درونی پوسته قابل توقف/راه‌اندازی مجدد نیستند. توالی دستورها به شکل .Dl a \&; b \&; c نیز هنگام تلاش برای توقف، به‌درستی مدیریت نمی‌شوند. در صورت تعلیق .Ql b , دستوری که پوسته بلافاصله پس از آن اجرا خواهد کرد عبارت است از .Ql c . این موضوع به‌ویژه زمانی محسوس است که این بسط ناشی باشد از یک .Ic alias . کافی است توالی دستورها در .Ql () Ns \&ها قرار گیرد تا به یک زیرپوسته تحمیل شود، یعنی: .Dl \&( a \&; b \&; c \&) .Pp کنترل بر روی خروجی tty پس از آغاز فرایندها ابتدایی است؛ شاید این موضوع الهام‌بخش کسی شود تا روی یک رابط ترمینال مجازی مناسب کار کند. در یک رابط ترمینال مجازی می‌توان کارهای بسیار جذاب‌تری با کنترل خروجی انجام داد. .Pp جایگزینی alias اغلب برای شبیه‌سازی ناشیانهٔ رویه‌های پوسته به کار می‌رود؛ باید به جای aliasها، رویه‌های پوسته فراهم شوند. .Pp ساختارهای کنترلی باید به جای شناخته‌شدن به عنوان دستورهای داخلی، تجزیه شوند. این امر اجازه می‌دهد دستورهای کنترلی در هر جایی قرار گیرند، با .Ql | , ترکیب شوند و با فرانحوهای .Ql & و .Ql \&; به کار روند. .Pp .Ic foreach هنگام جست‌وجو برای .Ic end خود، here documentها را نادیده نمی‌گیرد. .Pp باید امکان استفاده از اصلاح‌کننده‌های .Ql \&: روی خروجی جایگزینی‌های دستور وجود داشته باشد. .Pp به‌روزرسانی صفحه برای خطوط طولانی‌تر از عرض صفحه بسیار ضعیف است اگر پایانه نتواند مکان‌نما را به سمت بالا حرکت دهد (یعنی نوع پایانه .Ql dumb ) . .Pp .Ev HPATH و .Ev NOREBIND نیازی نیست متغیرهای محیطی باشند. .Pp الگوهای glob که از .Ql \&? , .Ql * , یا .Ql [] , استفاده نمی‌کنند، یا آن‌هایی که از .Ql {} یا .Ql ~ استفاده می‌کنند، به درستی نقیض نمی‌شوند. .Pp شکل تک‌دستوری .Ic if حتی اگر عبارت نادرست باشد و دستور اجرا نشود، تغییر مسیر خروجی را انجام می‌دهد. .Pp .Ic ls\-F هنگام مرتب‌سازی نام فایل‌ها، نویسه‌های شناسایی فایل را لحاظ می‌کند و نویسه‌های کنترلی در نام فایل‌ها را به‌خوبی مدیریت نمی‌کند. نمی‌توان در اجرای آن وقفه ایجاد کرد. .Pp جایگزینی دستور از چندین دستور و شرط پشتیبانی می‌کند، اما نه از حلقه‌ها یا .Ic goto Ns های رو به عقب. .Pp اشکالات را ترجیحاً همراه با اصلاحات در .Lk https://bugs.astron.com گزارش دهید. اگر می‌خواهید در نگهداری و آزمایش tcsh کمک کنید، خود را به فهرست پستی در .Lk https://mailman.astron.com/mailman/listinfo/tcsh اضافه کنید.