| SCREEN(1) | General Commands Manual | SCREEN(1) |
نام (NAME)
screen - مدیریتکننده نمایشگر با شبیهسازی پایانه VT100/ANSI
خلاصه دستور (SYNOPSIS)
screen [ -options ] [ cmd [
args ] ]
screen -r [[pid.]tty[.host]]
screen -r
sessionowner/[[pid.]tty[.host]]
توضیحات (DESCRIPTION)
Screen یک مدیر پنجره تمامصفحه است که یک پایانه فیزیکی را میان چندین فرایند (معمولاً پوستههای تعاملی) تسهیم و چندگانه (multiplex) میکند. هر پایانه مجازی عملکردهای یک پایانه DEC VT100 و علاوه بر آن چندین عملکرد کنترلی از استانداردهای ISO 6429 (ECMA 48, ANSI X3.64) و ISO 2022 را فراهم میآورد (برای نمونه درج/حذف خط و پشتیبانی از چندین مجموعه کاراکتر). یک بافر تاریخچه پیمایش (scrollback) برای هر پایانه مجازی و سازوکار رونوشت و جایگذاری (copy-and-paste) وجود دارد که امکان جابهجایی نواحی متنی میان پنجرهها را میدهد.
هنگامی که screen فراخوانی میشود، یک پنجره تکی همراه با یک پوسته (یا دستور مشخصشده) در آن ایجاد میکند و سپس کنار میرود تا بتوانید طبق روال عادی از برنامه استفاده کنید. سپس، در هر زمان میتوانید پنجرههای (تمامصفحه) جدید با برنامههای دیگر در آنها (از جمله پوستههای بیشتر) ایجاد کنید، پنجرههای موجود را ببندید، فهرستی از پنجرهها را مشاهده کنید، ثبت وقایع خروجی (logging) را روشن و خاموش کنید، متن را میان پنجرهها کپی و پیست کنید، تاریخچه پیمایش را مشاهده کنید، به هر شکلی که مایلید میان پنجرهها جابهجا شوید و غیره. همه پنجرهها برنامههای خود را کاملاً مستقل از یکدیگر اجرا میکنند. برنامهها حتی زمانی که پنجرهشان در حال حاضر نمایان نیست و حتی هنگامی که کل نشست screen از پایانه کاربر جدا (detach) شده است به اجرا ادامه میدهند. هنگامی که یک برنامه پایان مییابد، screen (بهطور پیشفرض) پنجره حاوی آن را میبندد. اگر این پنجره در پیشزمینه بود، صفحه نمایش به پنجره قبلی جابهجا میشود؛ اگر هیچ پنجرهای باقی نمانده باشد، screen خارج میشود. پوستهها معمولاً میان اجرا بهعنوان پوسته ورود (login-shell) یا زیرپوسته (sub-shell) تفاوت قائل میشوند. Screen آنها را بهصورت زیرپوسته اجرا میکند، مگر اینکه طور دیگری تعیین شده باشد (دستور "shell" در .screenrc را ببینید).
هر آنچه تایپ میکنید به برنامه در حال اجرا در پنجره فعلی ارسال میشود. تنها استثنا، یک کلید میانبر است که برای آغاز یک دستور به مدیر پنجره استفاده میشود. بهطور پیشفرض، هر دستور با یک control-a (که از این پس با C-a خلاصه میشود) آغاز شده و با یک کلید دیگر دنبال میشود. کاراکتر دستور و تمام کلیدهای مقیدشده (key bindings) را میتوان کاملاً سفارشیسازی کرد تا هر آنچه میخواهید باشند، اگرچه همواره طولی برابر با دو کاراکتر دارند.
دستور Screen پیشوند "C-" را به معنای کنترل درک نمیکند، هرچند این نمادگذاری برای خوانایی در این راهنما استفاده شده است. لطفاً از نمادگذاری هشتک/کَرِت ("^A" بهجای "C-a") بهعنوان آرگومانهای مواردی چون دستور escape یا گزینه -e استفاده کنید. Screen همچنین کاراکترهای کنترلی را در قالب نمادگذاری کرت چاپ خواهد کرد.
روش استاندارد برای ایجاد یک پنجره جدید فشردن C-a c است. این کار پنجره جدیدی را در حال اجرای یک پوسته ایجاد کرده و بلافاصله به آن پنجره جابهجا میشود، صرفنظر از وضعیت فرایند در حال اجرا در پنجره فعلی. به همین ترتیب، میتوانید با انتساب اولیه دستور به یک کلید (در فایل .screenrc خود یا در خط فرمان C-a :) پنجره جدیدی با یک دستور سفارشی در آن ایجاد کرده و سپس درست مانند دستور C-a c از آن استفاده کنید. علاوه بر این، میتوان پنجرههای جدید را با اجرای دستوری مانند:
- screen emacs prog.c
از اعلان پوسته درون یک پنجره از قبل ایجادشده باز کرد. این کار نسخه دیگری از screen را اجرا نخواهد کرد، بلکه نام دستور و آرگومانهای آن را به مدیر پنجره (مشخصشده در متغیر محیطی $STY) تحویل میدهد که از آن برای ایجاد پنجره جدید استفاده خواهد کرد. مثال بالا ویرایشگر emacs را باز میکند (در حال ویرایش prog.c) و به پنجره آن جابهجا میشود. - توجه داشته باشید که نمیتوانید متغیرهای محیطی را از پوسته فراخواننده به برنامه (در این مورد emacs) انتقال دهید، زیرا برنامه از فرایند والد screen منشعب (fork) میشود، نه از پوسته فراخواننده.
اگر فایل "/etc/utmp" توسط screen قابل نوشتن باشد، رکورد مناسبی برای هر پنجره در این فایل نوشته شده و با پایان یافتن پنجره حذف خواهد شد. این امر برای کار با برنامههایی مانند "talk"، "script"، "shutdown"، "rsend"، "sccs" و سایر برنامههای مشابه که از فایل utmp برای تشخیص هویت شما استفاده میکنند مفید است. تا زمانی که screen روی پایانه شما فعال است، رکورد خود پایانه از فایل utmp حذف میشود. همچنین دستور "C-a L" را ببینید.
شروع به کار (GETTING STARTED)
پیش از شروع استفاده از screen باید مطمئن شوید که نوع پایانه خود را به درستی انتخاب کردهاید، درست مانند هر برنامه دیگر مبتنی بر termcap/terminfo. (برای نمونه میتوانید این کار را با استفاده از test انجام دهید.)
اگر کمحوصله هستید و میخواهید بدون مطالعه زیاد کار را شروع کنید، باید این یک دستور را به خاطر بسپارید: C-a ?. با فشردن این دو کلید، فهرستی از دستورات موجود screen و کلیدهای میانبر متناظر آنها نمایش داده میشود. هر کلید در بخش "DEFAULT KEY BINDINGS" توضیح داده شده است. بخش "CUSTOMIZATION" نیز به محتویات فایل .screenrc شما میپردازد.
اگر پایانه شما یک پایانه حاشیه خودکار «واقعی» ("true" auto-margin) است (اجازه نمیدهد آخرین موقعیت روی صفحه بدون پیمایش صفحه بهروزرسانی شود)، استفاده از نسخهای از termcap پایانه خود را در نظر بگیرید که حاشیههای خودکار در آن خاموش (off) باشد. این کار تضمین میکند که صفحه در تمامی شرایط بهطور دقیق و بهینه بهروزرسانی شود. امروزه اکثر پایانهها دارای حاشیههای «جادویی» ("magic" margins) هستند (حاشیه خودکار به همراه ستون آخر قابل استفاده). این مورد به سبک VT100 بوده و کاملاً برای screen مناسب است. اگر تمام آنچه دارید یک پایانه حاشیه خودکار «واقعی» است، screen به استفاده از آن رضایت میدهد، اما بهروزرسانی کاراکتری که در آخرین موقعیت صفحه قرار گرفته است ممکن است تا زمان پیمایش صفحه یا انتقال کاراکتر به موقعیتی امن از طریق دیگر امکانپذیر نباشد. این تأخیر را میتوان با استفاده از پایانهای با قابلیت درج کاراکتر (insert-character) کاهش داد.
گزینههای خط فرمان (COMMAND-LINE OPTIONS)
دستور Screen دارای گزینههای خط فرمان زیر است:
- -a
- گنجاندن تمام قابلیتها (با چند استثنای جزئی) در termcap هر پنجره، حتی اگر screen برای پیادهسازی یک تابع مجبور به ترسیم مجدد بخشهایی از صفحه نمایش باشد.
- -A
- تطبیق اندازه تمام پنجرهها با اندازه پایانه فعلی. بهطور پیشفرض، screen هنگام اتصال به پایانههای با قابلیت تغییر اندازه (پایانههایی با "WS" در توضیحاتشان، مانند suncmd یا برخی انواع xterm)، سعی در بازگردانی اندازههای قبلی پنجرهها دارد.
- -c file
- جایگزینی فایل پیکربندی پیشفرض از "$HOME/.screenrc" با file.
- -d|-D [pid.tty.host]
- دستور screen را اجرا نمیکند، بلکه نشست screen در حال اجرا در جای دیگر را جدا (detach) میکند. این کار همان اثری را دارد که فشردن "C-a d" از پایانه کنترلکننده screen دارد. گزینه -D معادل کلید جداسازی اجباری (power detach) است. اگر هیچ نشستی نتواند جدا شود، این گزینه نادیده گرفته میشود. در ترکیب با گزینههای -r/-R میتوان به نتایج قدرتمندتری دست یافت:
- -d -r
- اتصال مجدد به یک نشست و در صورت نیاز، ابتدا جدا کردن آن.
- -d -R
- اتصال مجدد به یک نشست و در صورت نیاز، ابتدا جدا کردن یا حتی ایجاد آن.
- -d -RR
- اتصال مجدد به یک نشست و در صورت نیاز جدا کردن یا ایجاد آن. در صورت وجود بیش از یک نشست، از نخستین نشست موجود استفاده میشود.
- -D -r
- اتصال مجدد به یک نشست. در صورت نیاز ابتدا جدا کردن و خروج از راه دور (remote logout).
- -D -R
- اتصال همینجا و همین حالا. در جزئیات این بدان معناست: اگر نشستی در حال اجرا است، مجدداً متصل شو. در صورت نیاز ابتدا جدا کن و از راه دور خارج شو. اگر در حال اجرا نبود آن را ایجاد کرده و به کاربر اطلاع بده. این گزینه محبوبترین حالت نویسنده است.
- -D -RR
- اتصال همینجا و همین حالا. هر چه که معنایش باشد، فقط انجامش بده.
- نکته: همیشه ایده خوبی است که وضعیت نشستهای خود را با استفاده از "screen -list" بررسی کنید.
- -e xy
- کاراکتر دستور را روی x و کاراکتر تولیدکننده کاراکتر دستور لفظی را روی y (هنگامی که پس از کاراکتر دستور تایپ شود) تعیین میکند. پیشفرض "C-a" و `a' است که میتواند بهصورت "-e^Aa" مشخص شود. هنگام ایجاد یک نشست screen، این گزینه کاراکتر دستور پیشفرض را تعیین میکند. در یک نشست چندکاربره، تمام کاربران اضافهشده با این کاراکتر دستور شروع خواهند کرد. اما هنگام اتصال به یک نشست در حال اجرا، این گزینه فقط کاراکتر دستور کاربر متصلشونده را تغییر میدهد. این گزینه به ترتیب معادل دستورات "defescape" یا "escape" است.
- -f, -fn و -fa
- کنترل جریان (flow-control) را روشن، خاموش یا روی «حالت جابهجایی خودکار» ("automatic switching mode") قرار میدهد. این مورد را میتوان از طریق دستور "defflow" در .screenrc نیز تعریف کرد.
- -h num
- ارتفاع بافر تاریخچه پیمایش (scrollback) را روی num خط تعیین میکند.
- -i
- باعث میشود کلید وقفه (معمولاً C-c) هنگام روشن بودن کنترل جریان، بلافاصله نمایشگر را متوقف کند. برای جزئیات بیشتر به دستور "defflow" در .screenrc مراجعه کنید. استفاده از این گزینه توصیه نمیشود.
- -l و -ln
- حالت ورود (login mode) را روشن یا خاموش میکند (برای بهروزرسانی /etc/utmp). این مورد را میتوان از طریق دستور "deflogin" در .screenrc نیز تعریف کرد.
- -ls [match]
- -list [match]
- دستور screen را آغاز نمیکند، بلکه فهرستی از رشتههای pid.tty.host را چاپ میکند که نشستهای screen شما را مشخص مینمایند. نشستهای علامتگذاریشده با `detached' را میتوان با "screen -r" از سر گرفت. نشستهای علامتگذاریشده با `attached' در حال اجرا هستند و پایانه کنترلکننده دارند. اگر نشست در حالت چندکاربره اجرا شود، با `multi' مشخص میشود. نشستهای علامتگذاریشده با `unreachable' یا روی میزبان متفاوتی قرار دارند یا «مرده» (`dead') هستند. یک نشست غیرقابل دسترس در صورتی مرده تلقی میشود که نام آن با نام میزبان محلی یا با پارامتر مشخصشده (در صورت وجود) مطابقت داشته باشد. برای توضیحات مربوط به نحوه ساخت عبارتهای تطبیق به فلگ -r مراجعه کنید. نشستهای علامتگذاریشده با `dead' باید به دقت بررسی و حذف شوند. اگر مطمئن نیستید از مدیر سیستم خود بپرسید. نشستها را با گزینه -wipe حذف کنید.
- -L
- به screen دستور میدهد تا ثبت خودکار وقایع خروجی (logging) را برای پنجرهها فعال کند.
- -Logfile file
- بهطور پیشفرض نام فایل گزارش وقایع "screenlog.0" است. میتوانید با گزینه "-Logfile" نام جدیدی برای فایل گزارش تعیین کنید.
- -m
- باعث میشود screen متغیر محیطی $STY را نادیده بگیرد. با دستور "screen -m" ایجاد یک نشست جدید اجبار میشود، صرفنظر از اینکه screen از درون یک نشست دیگر screen فراخوانی شده باشد یا خیر. این فلگ در ارتباط با گزینه `-d' معنای ویژهای دارد:
- -d -m
- اجرای screen در حالت «جداشده» ("detached"). این کار یک نشست جدید ایجاد میکند اما به آن متصل نمیشود. این ویژگی برای اسکریپتهای راهاندازی سیستم مفید است.
- -D -m
- این گزینه نیز screen را در حالت «جداشده» ("detached") اجرا میکند، اما فرایند جدیدی منشعب نمیکند. در صورت پایان یافتن نشست، دستور خاتمه مییابد.
- -O
- بهجای شبیهسازی دقیق VT100، حالت خروجی بهینه را برای پایانه شما انتخاب میکند (فقط بر پایانههای حاشیه خودکار فاقد `LP' تأثیر میگذارد). این مورد را میتوان در فایل .screenrc نیز با تعیین `OP' در یک دستور "termcap" تنظیم کرد.
- -p number_or_name|-|=|+
- انتخاب از پیش یک پنجره. این ویژگی زمانی مفید است که میخواهید مجدداً به یک پنجره خاص متصل شوید یا میخواهید دستوری را از طریق گزینه "-X" به پنجرهای خاص ارسال کنید. همانند دستور select در screen، نماد "-" پنجره خالی را انتخاب میکند. بهعنوان حالت خاص برای اتصال مجدد، نماد "=" فهرست پنجرهها را روی پنجره خالی باز میکند، در حالی که نماد "+" یک پنجره جدید ایجاد خواهد کرد. اگر پنجره مشخصشده پیدا نشود، دستور اجرا نخواهد شد.
- -P
- احراز هویت را فعال میکند. بهطور پیشفرض screen اجازه میدهد بدون وارد کردن گذرواژه کاربر، اتصال برقرار شود. این گزینه این رفتار را تغییر میدهد، یعنی احراز هویت را فعال میسازد. همین اثر را میتوان با استفاده از دستور "auth on" اعمال کرد.
- -q
- جلوگیری از چاپ پیامهای خطا. در ترکیب با "-ls" مقدار خروج به این صورت است: 9 نشاندهنده دایرکتوری بدون نشست است. 10 نشاندهنده دایرکتوری با نشستهای در حال اجرا اما غیرقابل اتصال است. 11 (یا بیشتر) نشاندهنده 1 (یا بیشتر) نشست قابل استفاده است. در ترکیب با "-r" مقدار خروج بدین شرح است: 10 نشان میدهد هیچ نشستی برای بازیابی وجود ندارد. 12 (یا بیشتر) نشان میدهد که 2 (یا بیشتر) نشست برای بازیابی وجود دارد و باید مشخص کنید کدامیک را انتخاب میکنید. در سایر موارد، "-q" هیچ تأثیری ندارد.
- -Q
- اکنون
میتوان
برخی
دستورات را
با استفاده
از این فلگ
از یک نشست
راه دور
استعلام
کرد، مانند
"screen -Q windows".
دستورات
پاسخ را به stdout
فرایند
استعلامکننده
ارسال
خواهند کرد.
اگر خطایی
در دستور
وجود داشته
باشد،
فرایند
استعلامکننده
با یک وضعیت
غیرصفر
خارج خواهد
شد.
دستوراتی که اکنون میتوان استعلام کرد عبارتند از:
echo
info
lastmsg
number
select
time
title
windows - -r [pid.tty.host]
- -r sessionowner/[pid.tty.host]
- یک نشست جداشده (detached) screen را از سر میگیرد. هیچ گزینه دیگری (به جز ترکیب با -d/-D) نباید مشخص شود، هرچند ممکن است برای تشخیص میان چندین نشست جداشده screen، پیشوند اختیاری [pid.]tty.host لازم باشد. قالب دوم برای اتصال به نشست screen کاربر دیگر که در حالت چندکاربره اجرا میشود به کار میرود. این نشان میدهد که screen باید به دنبال نشستها در پوشه کاربری دیگر بگردد. این کار نیازمند دسترسی setuid-root است.
- -R
- فقط زمانی screen را از سر میگیرد که اتصال به نشست بدون ابهام باشد؛ معمولاً زمانی که تنها یک screen جداشده (detached) وجود داشته باشد. در غیر این صورت نشستهای موجود را فهرست میکند. -RR تلاش میکند تا نخستین نشست screen جداشدهای را که پیدا میکند از سر بگیرد. در صورت موفقیت، تمام گزینههای دیگر خط فرمان نادیده گرفته میشوند. اگر هیچ نشست جداشدهای وجود نداشته باشد، یک نشست جدید با استفاده از گزینههای مشخصشده ایجاد میکند، درست مانند زمانی که -R مشخص نشده باشد. این گزینه در صورتی که screen به عنوان شل ورود (login-shell) اجرا شود بهطور پیشفرض تنظیم است (در واقع در آن حالت screen از "-xRR" استفاده میکند). برای ترکیب با گزینه -d/-D توضیحات آن بخش را ببینید.
- -s program
- شل پیشفرض را به جای مقدار متغیر محیطی $SHELL (یا "/bin/sh" در صورت عدم تعریف)، به برنامه مشخصشده تنظیم میکند. این مقدار را میتوان از طریق دستور "shell" در .screenrc نیز تعریف کرد. آن بخش را نیز ببینید.
- -S sessionname
- هنگام ایجاد یک نشست جدید، این گزینه میتواند برای مشخص کردن یک نام معنادار برای نشست استفاده شود. این نام نشست را برای عملیاتهای "screen -list" و "screen -r" شناسایی میکند. این نام جایگزین پسوند پیشفرض [tty.host] میشود. این نام نباید طولانیتر از ۸۰ نویسه باشد.
- -t name
- عنوان (یا همان a.k.a.) را برای شل پیشفرض یا برنامه مشخصشده تنظیم میکند. دستور "shelltitle" در .screenrc را نیز ببینید.
- -T term
- متغیر محیطی $TERM را برای پنجرههای جدید روی term مشخصشده تنظیم میکند، که انتخاب خودکار نام ترمینال توسط Screen را لغو و بازنویسی میکند. بهطور پیشفرض، Screen ابتدا "screen.<term>" را امتحان میکند (که در آن <term> مقدار فعلی $TERM است)، سپس به "screen" (یا در ترمینالهای عریض به "screen-w") و در نهایت در صورت پیدا نشدن مدخل مناسب، به "vt100" بازمیگردد.
- -U
- اجرای screen در حالت UTF-8. این گزینه به screen اعلام میکند که ترمینال شما نویسههای کدگذاریشده با UTF-8 را ارسال کرده و میفهمد. همچنین کدگذاری پیشفرض پنجرههای جدید را روی `utf8' تنظیم میکند.
- -v
- چاپ شماره نسخه.
- -wipe [match]
- عملی مشابه با "screen -ls" انجام میدهد، اما نشستهای ازبینرفته را به جای علامتگذاری به عنوان `dead'، حذف میکند. یک نشست غیرقابلدسترس زمانی مرده تلقی میشود که نام آن یا با نام میزبان محلی یا با پارامتر مشخصشده صریح (در صورت وجود) تطابق داشته باشد. فلگ -r را برای توضیحات نحوه ساخت تطابقها ببینید.
- -x
- اتصال به یک نشست screen جدا نشده (حالت چند نمایشگره / Multi display mode). دستور Screen از متصل شدن از درون خود خودداری میکند. اما هنگام اجرای تو در توی چندین screen، حلقهها شناسایی نمیشوند؛ مراقب باشید.
- -X
- ارسال دستور مشخصشده به یک نشست در حال اجرای screen. در صورتی که چندین نشست screen در حال اجرا دارید، میتوانید از گزینه -S برای تعیین نشست موردنظر استفاده کنید. میتوانید از گزینه -d یا -r استفاده کنید تا به screen بگویید فقط دنبال نشستهای متصل یا جداشده بگردد. توجه داشته باشید اگر نشست با گذرواژه محافظت شده باشد، این دستور کار نمیکند.
- -4
- تبدیل نامهای میزبان فقط به آدرسهای IPv4.
- -6
- تبدیل نامهای میزبان فقط به آدرسهای IPv6.
کلیدهای میانبر پیشفرض (DEFAULT KEY BINDINGS)
همانطور که اشاره شد، هر دستور screen از یک "C-a" به همراه یک نویسه دیگر تشکیل شده است. برای راحتی شما، تمام دستوراتی که به حروف کوچک متصل شدهاند، به همتایان کلید کنترلی خود نیز متصل هستند (به استثنای "C-a a"؛ پایین را ببینید)، بنابراین هم "C-a c" و هم "C-a C-c" میتوانند برای ایجاد یک پنجره استفاده شوند. بخش "CUSTOMIZATION" را برای شرح دستور ببینید.
جدول زیر کلیدهای میانبر پیشفرض را نشان میدهد. ویرگولهای پایانی در خانههایی با چندین ورودی کلید، جداکننده هستند و بخشی از کلیدهای میانبر نیستند.
| C-a ' | (select) | درخواست نام یا شماره پنجره برای جابجایی به آن. |
| C-a " | (windowlist -b) | نمایش فهرستی از تمام پنجرهها برای انتخاب. |
| C-a digit | (select 0-9) | جابجایی به پنجره شماره 0 - 9 |
| C-a - | (select -) | جابجایی به پنجره شماره 0 - 9، یا به پنجره خالی. |
| C-a tab | (focus) | جابجایی فوکوس ورودی به ناحیه بعدی. دستورهای split, remove, only را نیز ببینید. |
| C-a C-a | (other) | تغییر وضعیت به پنجرهای که پیشتر نمایش داده شده بود. توجه داشته باشید که این میانبر بهطور پیشفرض نویسه فرمان را دو بار تایپ میکند، مگر اینکه بازنویسی شده باشد. برای مثال، اگر از گزینه "-e]x" استفاده کنید، این دستور به "]]" تبدیل میشود. |
| C-a a | (meta) | ارسال نویسه فرمان (C-a) به پنجره. دستور escape را ببینید. |
| C-a A | (title) | اجازه به کاربر برای وارد کردن نام برای پنجره جاری. |
| C-a b, C-a C-b | (break) | ارسال سیگنال break به پنجره. |
| C-a B | (pow_break) | باز کردن مجدد خط ترمینال و ارسال سیگنال break. |
| C-a c, C-a C-c | (screen) | ایجاد یک پنجره جدید با یک شل و جابجایی به آن پنجره. |
| C-a C | (clear) | پاک کردن صفحه نمایش. |
| C-a d, C-a C-d | (detach) | جدا کردن (Detach) screen از این ترمینال. |
| C-a D D | (pow_detach) | جدا کردن (Detach) و خروج از حساب (logout). |
| C-a f, C-a C-f | (flow) | تغییر وضعیت کنترل جریان (flow) به on، off یا auto. |
| C-a F | (fit) | تغییر اندازه پنجره به اندازه ناحیه جاری. |
| C-a C-g | (vbell) | تغییر حالت زنگ بصری در screen . |
| C-a h | (hardcopy) | نوشتن یک نسخه متنی (hardcopy) از پنجره جاری در فایل "hardcopy.n". |
| C-a H | (log) | شروع/پایان ثبت گزارش (logging) از پنجره جاری در فایل "screenlog.n". |
| C-a i, C-a C-i | (info) | نمایش اطلاعات درباره این پنجره. |
| C-a k, C-a C-k | (kill) | بستن و از بین بردن پنجره جاری. |
| C-a l, C-a C-l | (redisplay) | بازنشانی و بازطراحی کامل پنجره جاری. |
| C-a L | (login) | تغییر وضعیت اسلات ورود (login slot) این پنجره. فقط در صورتی در دسترس است که screen برای بهروزرسانی پایگاهداده utmp پیکربندی شده باشد. |
| C-a m, C-a C-m | (lastmsg) | تکرار آخرین پیام نمایش دادهشده در خط پیام. |
| C-a M | (monitor) | تغییر وضعیت پایش (monitoring) پنجره جاری. |
| C-a space, C-a n, C-a C-n | (next) | جابجایی به پنجره بعدی. |
| C-a N | (number) | نمایش شماره (و عنوان) پنجره جاری. |
| C-a backspace, C-a C-h, C-a p, C-a C-p | (prev) | جابجایی به پنجره قبلی (برعکس C-a n). |
| C-a q, C-a C-q | (xon) | ارسال یک control-q به پنجره جاری. |
| C-a Q | (only) | حذف تمام ناحیهها به جز ناحیه جاری. دستورهای split, remove, focus را نیز ببینید. |
| C-a r, C-a C-r | (wrap) | تغییر وضعیت شکستن خودکار خطوط پنجره جاری (روشن و خاموش کردن حاشیههای خودکار پنجره جاری). |
| C-a s, C-a C-s; | (xoff) | ارسال یک control-s به پنجره جاری. |
| C-a S | (split) | تقسیم ناحیه جاری بهصورت افقی به دو ناحیه جدید. دستورهای only, remove, focus را نیز ببینید. |
| C-a v | (version) | نمایش نسخه و تاریخ کامپایل. |
| C-a C-v | (digraph) | ورود به حالت دونگاره (digraph). |
| C-a w, C-a C-w | (windows) | نمایش فهرستی از پنجرهها. |
| C-a W | (width) | تغییر وضعیت عرض بین ۸۰/۱۳۲ ستون. |
| C-a x or C-a C-x | (lockscreen) | قفل کردن این ترمینال. |
| C-a X | (remove) | بستن و حذف ناحیه جاری. دستورهای split, only, focus را نیز ببینید. |
| C-a z, C-a C-z | (suspend) | تعلیق screen . سیستم شما باید از کنترل وظایف به سبک BSD پشتیبانی کند. |
| C-a Z | (reset) | بازنشانی ترمینال مجازی به مقادیر پیشفرض زمان روشن شدن ("power-on"). |
| C-a . | (dumptermcap) | نوشتن یک فایل ".termcap". |
| C-a ? | (help) | نمایش کلیدهای میانبر. |
| C-a \ | (quit) | بستن تمام پنجرهها و خاتمه دادن به screen . |
| C-a : | (colon) | ورود به حالت خط فرمان. |
| C-a [, C-a C-[, C-a esc | (copy) | ورود به حالت کپی/پیمایش به عقب (copy/scrollback). |
| C-a C-], C-a ] | (paste .) | نوشتن محتویات بافر چسباندن (paste buffer) در صف ورودی استاندارد (stdin) پنجره جاری. |
| C-a {, C-a } | (history) | کپی و چسباندن یک خط (دستور) قبلی. |
| C-a > | (writebuf) | نوشتن بافر چسباندن به یک فایل. |
| C-a < | (readbuf) | خواندن فایل تبادل screen به درون بافر چسباندن. |
| C-a = | (removebuf) | حذف فایل استفادهشده توسط C-a < و C-a >. |
| C-a , | (license) | نمایش اینکه screen از کجا آمده است، به کجا رفته است و چرا میتوانید از آن استفاده کنید. |
| C-a _ | (silence) | شروع/توقف پایش پنجره جاری برای عدم فعالیت. |
| C-a | | (split -v) | تقسیم ناحیه جاری بهصورت عمودی به دو ناحیه جدید. |
| C-a * | (displays) | نمایش فهرستی از تمام نمایشگرهای متصل در حال حاضر. |
شخصیسازی (CUSTOMIZATION)
"دایرکتوری سوکت" بهطور پیشفرض به $HOME/.screen یا صرفاً به /tmp/screens یا ترجیحاً به /usr/local/screens تعیینشده در زمان کامپایل اشاره دارد. اگر screen بهصورت setuid-root نصب شده باشد، مدیر سیستم باید screen را با یک دایرکتوری سوکت مناسب (که از طریق NFS مانت نشده باشد) کامپایل کند. اگر screen بهصورت setuid-root اجرا نمیشود، کاربر میتواند هر دایرکتوری با مجوز mode 700 را در متغیر محیطی $SCREENDIR مشخص کند.
هنگامی که screen فراخوانی میشود، دستورات راهاندازی اولیه را از فایلهای "/usr/local/etc/screenrc" و ".screenrc" در دایرکتوری خانگی کاربر اجرا میکند. اینها "پیشفرضهای برنامهنویس" هستند که میتوان آنها را به روشهای زیر بازنویسی کرد: برای فایل سراسری screenrc، screen متغیر محیطی $SYSSCREENRC را جستجو میکند (این ویژگی بازنویسی ممکن است در زمان کامپایل غیرفعال شده باشد). فایل screenrc مختص کاربر ابتدا در $SCREENRC و سپس در $HOME/.screenrc جستجو میشود. گزینه خط فرمان -c بر فایلهای screenrc کاربر که در بالا ذکر شدند، اولویت دارد.
دستورات موجود در این فایلها برای تنظیم گزینهها، انتساب توابع به کلیدها و ایجاد خودکار یک یا چند پنجره در ابتدای نشست screen شما استفاده میشوند. دستورات در هر خط یکی پس از دیگری فهرست میشوند و خطوط خالی نادیده گرفته میشوند. آرگومانهای یک دستور با تب یا فاصله از هم جدا میشوند و میتوانند درون نقلقول تکی یا دوتایی قرار گیرند. نویسه `#' ادامه خط را تبدیل به توضیح (کامنت) میکند، مگر اینکه داخل نقلقول باشد. درباره خطوط غیرقابل درک هشدار داده شده و نادیده گرفته میشوند. دستورات ممکن است حاوی ارجاع به متغیرهای محیطی باشند. نحو نگارش شبیه به شل بصورت "$VAR " یا "${VAR}" است. توجه داشته باشید که این امر باعث ناسازگاری با نسخههای پیشین screen میشود، زیرا اکنون در صورتی که قرار نیست جایگزینی متغیر انجام شود، نویسه '$' باید با '\' محافظت (escape) شود. یک رشته درون نقلقول تکی نیز از جایگزینی متغیر مصون است.
دو فایل پیکربندی بهصورت نمونه همراه با توزیع screen شما ارائه میشوند: "etc/screenrc" و "etc/etcscreenrc". آنها شامل چندین مثال کاربردی برای دستورات مختلف هستند.
شخصیسازی میتواند بهصورت «برخط» (on-line) نیز انجام شود. برای ورود به حالت دستور، `C-a :' را تایپ کنید. توجه داشته باشید دستوراتی که با "def" شروع میشوند مقادیر پیشفرض را تغییر میدهند، در حالی که سایر دستورات تنظیمات فعلی را تغییر میدهند.
دستورات زیر در دسترس هستند:
دسترسی کامل به این نشست screen را برای کاربران فعال میکند. Usernames میتواند یک کاربر یا فهرستی از کاربران جدا شده با کاما باشد. این دستور امکان اتصال به نشست screen را فعال کرده و معادل اجرای `aclchg usernames +rwx "#?"' عمل میکند. برای افزودن کاربری با دسترسی محدود، از دستور `aclchg' در زیر استفاده کنید. اگر پارامتر دوم اختیاری داده شود، باید یک گذرواژه رمزگذاریشده (crypted) برای کاربر(ان) نامبرده باشد. `Addacl' مترادفی برای `acladd' است. فقط در حالت چندکاربره (Multi user mode).
مجوزها را برای فهرستی از کاربران که با کاما جدا شدهاند تغییر میدهد. بیتهای دسترسی بهصورت `r'، `w' و `x' نمایش داده میشوند. پیشوند `+' مجوز را اعطا میکند و `-' آن را حذف میکند. پارامتر سوم فهرستی جدا شده با کاما از دستورات و/یا پنجرهها است (که با شماره یا عنوان مشخص میشوند). فهرست ویژه `#' به تمام پنجرهها و `?' به تمام دستورات اشاره دارد. اگر usernames شامل یک نویسه تکی `*' باشد، تمام کاربران شناختهشده تحت تأثیر قرار میگیرند.
یک دستور زمانی قابل اجرا است که کاربر بیت `x' را برای آن داشته باشد. کاربر میتواند ورودی را در یک پنجره تایپ کند در صورتی که بیت `w' آن تنظیم شده باشد و کاربر دیگری قفل نوشتن (writelock) را برای این پنجره در اختیار نداشته باشد. سایر بیتها در حال حاضر نادیده گرفته میشوند. برای لغو قفل نوشتن از کاربری دیگر در پنجره ۲: `aclchg username -w+w 2'. برای اعطای دسترسی فقطخواندنی به نشست: `aclchg username -w "#"'. به محض اینکه نام یک کاربر برای screen شناخته شود، او میتواند به نشست متصل شود و (بهطور پیشفرض) مجوزهای کامل برای همه دستورات و پنجرهها دارد. مجوز اجرای دستورات acl، دستور `at' و سایر دستورات نیز باید حذف شود، در غیر این صورت ممکن است کاربر بتواند مجدداً دسترسی نوشتن را به دست آورد. حقوق و دسترسیهای نام کاربری ویژه nobody قابل تغییر نیست (دستور "su" را ببینید). `Chacl' مترادفی برای `aclchg' است. فقط در حالت چندکاربره.
یک کاربر را از فهرست کنترل دسترسی (ACL) screen حذف میکند. اگر کاربر در حال حاضر متصل باشد، تمام نمایشگرهای او از نشست جدا میشوند (detach). او دیگر نمیتواند مجدداً متصل شود. فقط در حالت چندکاربره.
گروههایی از کاربران ایجاد میکند که حقوق دسترسی مشترک دارند. نام گروه، نام کاربری رهبر گروه است. هر عضو گروه مجوزهایی را که به رهبر گروه اعطا شده به ارث میبرد. این بدان معناست که اگر یک کاربر در بررسی دسترسی رد شود، بررسی دیگری برای رهبر گروه انجام میشود. اگر مقدار ویژه "none" برای groupname استفاده شود، کاربر از تمام گروهها حذف میشود. اگر پارامتر دوم حذف شود، تمام گروههایی که کاربر در آنها حضور دارد فهرست میشوند.
این دستور دسترسی سایر کاربران به پنجرههایی را مشخص میکند که توسط فراخواننده دستور ایجاد خواهند شد. Users میتواند هیچ، یک یا فهرستی جدا شده با کاما از نامهای کاربری شناختهشده باشد. اگر هیچ کاربری مشخص نشده باشد، فهرستی از تمام کاربران شناختهشده فعلی فرض میشود. Bits هر ترکیبی از بیتهای کنترل دسترسی مجاز تعریفشده با دستور "aclchg" است. نام کاربری ویژه "?" دسترسی اولیهای را که به کاربران هنوز شناختهنشده برای هر پنجره اعطا میشود، پیشتعریف میکند. نام کاربری ویژه "??" دسترسی اعطاشده به کاربران هنوز ناشناخته را برای هر دستور پیشتعریف میکند. حقوق و دسترسیهای نام کاربری ویژه nobody قابل تغییر نیست (دستور "su" را ببینید). `Umask' مترادفی برای `aclumask' است.
هنگامی که هرگونه فعالیتی در یک پنجره پسزمینه که تحت نظارت است رخ دهد، screen اعلامیهای را در خط پیام نمایش میدهد. پیام اعلان میتواند با استفاده از دستور "activity" مجدداً تعریف شود. هر بار تکرار `%' در message با شماره پنجرهای که فعالیت در آن رخ داده جایگزین میشود، و هر بار تکرار `^G' با تعریف زنگ (bell) در termcap شما (معمولاً یک زنگ صوتی) جایگزین میشود. پیام پیشفرض عبارت است از:
'Activity in window %n'
توجه داشته باشید که نظارت بهطور پیشفرض برای همه پنجرهها خاموش است، اما میتواند با استفاده از دستور "monitor" (کلید C-a M) تغییر کند.
اگر روی on تنظیم شود، هنگام تغییر پنجره تنها خط فعلی مکاننما تازهسازی میشود. این گزینه روی همه پنجرهها تأثیر میگذارد و برای خطوط ترمینال کند مفید است. تنظیم قبلی تازهسازی کامل/جزئی برای هر پنجره با دستور "allpartial off" بازیابی میشود. این یک پرچم سراسری است که بلافاصله روی همه پنجرهها اعمال شده و تنظیمات "partial" را بازنویسی میکند. این گزینه رفتار پیشفرض بازترسیم پنجرههای تازهساختهشده را تغییر نمیدهد.
اگر روی on تنظیم شود، پشتیبانی از «صفحه جایگزین» (alternate screen) در ترمینالهای مجازی، دقیقاً مانند xterm فعال میشود. مقدار اولیه `off' است.
دستوری را در سایر نمایشگرها یا پنجرهها طوری اجرا میکند که گویی در آنجا وارد شده است. "At" بافتار یا زمینه (تنظیم `پنجره فعلی' یا `نمایشگر فعلی') دستور را تغییر میدهد. اگر پارامتر اول یک بافتار غیریکتا را توصیف کند، دستور چندین بار اجرا خواهد شد. اگر پارامتر اول به شکل `identifier*' باشد، شناسه با نامهای کاربری مطابقت داده میشود. دستور یک بار برای هر نمایشگر کاربر(ان) انتخابشده اجرا میشود. اگر پارامتر اول به شکل `identifier%' باشد، شناسه با نمایشگرها تطبیق داده میشود. نمایشگرها بر اساس ttyهایی که به آنها متصل میشوند نامگذاری شدهاند. پیشوند `/dev/' یا `/dev/tty' میتواند از شناسه حذف شود. اگر به identifier نویسه `#' یا هیچ چیز دیگری ضمیمه نشده باشد، با شمارهها و عناوین پنجرهها تطبیق داده میشود. حذف شناسه پیش از نویسههای `#'، `*' یا `%' تمام کاربران، نمایشگرها یا پنجرهها را انتخاب میکند زیرا یک تطبیق پیشوندی انجام میشود. توجه داشته باشید که در نمایشگر(های) تحت تأثیر، پیام کوتاهی توضیح میدهد که چه اتفاقی افتاده است. مجوز برای شروعکننده دستور "at" بررسی میشود، نه برای صاحبان نمایشگر(های) تحت تأثیر. توجه داشته باشید نویسه '#' هنگامی که قبل از آن فاصله خالی باشد به عنوان آغازگر توضیح (کامنت) عمل میکند. این را میتوان با افزودن پیشوند '\' اسکیپ (escape) کرد.
نکته مهم: هنگام تطبیق با پنجرهها، دستور حداقل یک بار برای هر پنجره اجرا میشود. دستوراتی که چیدمان داخلی پنجرهها را تغییر میدهند (مانند "other") ممکن است دوباره فراخوانی شوند. در پنجرههای اشتراکی، دستور برای هر نمایشگر متصل تکرار خواهد شد. هنگام صدور دستورات تغییر وضعیت دوحالته (toggle) مانند "login" مراقب باشید! برخی از دستورات (مانند "process") نیازمند این هستند که یک نمایشگر به پنجرههای هدف مرتبط باشد. این دستورات ممکن است تحت دستور "at" در حال حلقه زدن روی پنجرهها، بهدرستی کار نکنند.
این دستور میتواند برای برجستهسازی ویژگیها (attributes) از طریق تغییر رنگ متن استفاده شود. اگر ویژگی attrib در حال استفاده باشد، اصلاحکننده ویژگی/رنگ مشخصشده نیز اعمال میشود. اگر اصلاحکنندهای ارائه نشود، مورد فعلی حذف میشود. برای نحو نگارش اصلاحکننده، فصل "STRING ESCAPES" را ببینید. برنامه Screen دو ویژگی کاذب (pseudo-attribute) را درک میکند: "i" نشاندهنده رنگ پیشزمینه با شدت بالا و "I" برای رنگ پسزمینه با شدت بالا است.
مثالها:
- attrcolor b "R"
اگر متن ضخیم (bold) چاپ شود، رنگ را به قرمز روشن تغییر میدهد.
- attrcolor u "-u b"
استفاده از متن آبی بهجای زیرخطدار (underline).
- attrcolor b ".I"
استفاده از رنگهای روشن برای متن ضخیم. اکثر شبیهسازهای ترمینال در حال حاضر این کار را انجام میدهند.
- attrcolor i "+b"
ضخیم کردن متنهای دارای رنگ روشن.
این دستور محافظت با گذرواژه را برای نشست screen فعال/غیرفعال میکند. این گزینه بهطور پیشفرض غیرفعال است (احراز هویت غیرفعال است).
تعیین میکند که آیا screen هنگام قطع ارتباط (hangup) بهطور خودکار جدا (detach) شود یا خیر؛ که این کار تمام برنامههای در حال اجرای شما را ذخیره میکند تا زمانی که با دستور screen -r مجدداً از سر گرفته شوند. هنگامی که خاموش باشد، سیگنال hangup به کار screen و تمام فرایندهای درون آن خاتمه میدهد. Autodetach بهطور پیشفرض روشن (on) است.
تعیین میکند که آیا یک توالی پاکسازی صفحه باید تمام خروجیهایی را که هنوز روی ترمینال نوشته نشدهاند به کلی حذف کند یا خیر. همچنین "obuflimit" را ببینید.
دستور backtick را با شناسه عددی id برنامهریزی میکند. خروجی چنین دستوری برای جایگزینی در کاراکتر اسکیپ رشتهای "%`" استفاده میشود. پارامتر lifespan مشخصشده، تعداد ثانیههایی است که خروجی معتبر در نظر گرفته میشود. پس از این مدت، در صورت مواجهه با اسکیپ رشتهای مربوطه، دستور دوباره اجرا میشود. پارامتر autorefresh یک تازهسازی خودکار را برای رشتههای caption و hardstatus پس از تعداد ثانیههای مشخصشده راهاندازی میکند. فقط آخرین خط خروجی برای جایگزینی استفاده میشود.
اگر هر دو پارامتر lifespan و autorefresh صفر باشند، انتظار میرود برنامه backtick در پسزمینه باقی بماند و هر از گاهی خروجی تولید کند. در این حالت، دستور بلافاصله اجرا میشود و screen آخرین خط خروجی را ذخیره میکند. اگر خط جدیدی چاپ شود، screen بهطور خودکار hardstatus یا captionها را تازهسازی خواهد کرد.
فرم دوم دستور، دستور backtick با شناسه عددی id را حذف میکند.
تنظیمات پاکسازی رنگ پسزمینه (background-color-erase) را تغییر میدهد. اگر "bce" روی on تنظیم شود، تمام کاراکترهایی که با عملیات پاک کردن/درج/پیمایش/پاکسازی (erase/insert/scroll/clear) پاک میشوند با رنگ پسزمینه فعلی نمایش داده خواهند شد. در غیر این صورت از رنگ پسزمینه پیشفرض استفاده میشود.
هنگامی که یک کاراکتر زنگ (bell) به پنجره پسزمینه ارسال میشود، screen اعلامیهای را در خط پیام نمایش میدهد. پیام اعلان میتواند توسط این دستور مجدداً تعریف شود. هر بار تکرار `%' در message با شماره پنجرهای که زنگ به آن ارسال شده جایگزین میشود، و هر بار تکرار `^G' با تعریف زنگ در termcap شما (معمولاً یک زنگ صوتی) جایگزین میشود. پیام پیشفرض عبارت است از:
'Bell in window %n'
میتوان یک پیام خالی به دستور "bell_msg" ارائه داد تا خروجی خط پیام متوقف شود (bell_msg ""). بدون پارامتر، پیام فعلی نمایش داده میشود.
یک دستور را به یک کلید متصل (bind) میکند. بهطور پیشفرض، اکثر دستورات ارائهشده توسط screen همانطور که در بخش "DEFAULT KEY BINDINGS" نشان داده شده است، به یک یا چند کلید متصل هستند؛ برای مثال دستور ایجاد یک پنجره جدید به "C-c" و "c" متصل است. دستور "bind" میتواند برای بازتعریف اتصالات کلیدها و تعریف اتصالات جدید استفاده شود. آرگومان key میتواند یک تکنویسه، یک توالی دو نویسهای به فرم "^x" (به معنی "C-x")، یک بکاسلش به همراه یک عدد اکتال (مشخصکننده کد اسکی نویسه)، یا یک بکاسلش به همراه نویسه دوم مانند "\^" یا "\\" باشد. در صورت تمایل، آرگومان میتواند درون نقلقول نیز قرار گیرد. اگر آرگومان دیگری داده نشود، هرگونه اتصال قبلی برقرارشده برای این کلید حذف میشود. آرگومان command میتواند هر دستوری باشد که در این بخش فهرست شده است.
اگر یک کلاس دستور از طریق گزینه -c مشخص شود، کلید برای کلاس مشخصشده مقید (bound) میشود. برای فعالسازی یک کلاس از دستور command استفاده کنید. کلاسهای دستور میتوانند برای ایجاد چندین کلید دستور یا اتصالهای چندنویسهای استفاده شوند.
چند مثال:
bind ' ' windows bind ^k bind k bind K kill bind ^f screen telnet foobar bind \033 screen -ln -t root -h 1000 9 su
کلید فاصله (space) را به دستوری که فهرستی از پنجرهها را نمایش میدهد مقید میکند (به طوری که دستوری که معمولاً با C-a C-w فراخوانی میشود، به عنوان C-a space نیز در دسترس باشد). سه خط بعدی اتصال پیشفرض kill را از C-a C-k و C-a k حذف میکنند. سپس C-a K به دستور kill مقید میشود. سپس C-f را به دستور «ایجاد یک پنجره با اتصال TELNET به foobar» متصل میکند، و escape را به دستوری که یک پنجره بدون ورود (non-login) با نام مستعار «root» در شیار شماره ۹، همراه با یک پوسته کاربر ارشد و بافر پیمایش به عقب ۱۰۰۰ خطی ایجاد میکند، مقید میسازد.
bind -c demo1 0 select 10 bind -c demo1 1 select 11 bind -c demo1 2 select 12 bindkey "^B" command -c demo1
باعث میشود C-b 0 پنجره ۱۰ را انتخاب کند، C-b 1 پنجره ۱۱ را انتخاب کند، و غیره.
bind -c demo2 0 select 10 bind -c demo2 1 select 11 bind -c demo2 2 select 12 bind - command -c demo2
باعث میشود C-a - 0 پنجره ۱۰ را انتخاب کند، C-a - 1 پنجره ۱۱ را انتخاب کند، و غیره.
این دستور جدولهای ترجمه ورودی screen را مدیریت میکند. هر ورودی در یکی از جدولها به screen میگوید در صورت مواجهه با یک توالی خاص از نویسهها چگونه واکنش نشان دهد. سه جدول وجود دارد: یکی که باید شامل اقدامات برنامهریزیشده توسط کاربر باشد، یکی برای اقدامات پیشفرض مورد استفاده در شبیهسازی ترمینال، و یکی برای حالت کپی screen جهت حرکت مکاننما. برای مشاهده فهرستی از کلیدهای پیشفرض به بخش "INPUT TRANSLATION" مراجعه کنید.
اگر گزینه -d داده شود، bindkey جدول پیشفرض را تغییر میدهد، -m جدول حالت کپی را تغییر میدهد و در صورت مشخص نشدن هیچیک از این دو گزینه، جدول کاربر انتخاب میشود. آرگومان string توالی نویسههایی است که یک اقدام به آن مقید میشود. این مقدار میتواند یک رشته ثابت یا نام یک قابلیت صفحهکلید termcap باشد (قابل انتخاب با گزینه -k).
برخی از کلیدها در ترمینال VT100 در صورت فعال بودن حالت برنامه (application mode) میتوانند رشته متفاوتی ارسال کنند (مانند کلیدهای مکاننما). چنین کلیدهایی دو ورودی در جدول ترجمه دارند. میتوانید با مشخص کردن گزینه -a ورودی حالت برنامه را انتخاب کنید.
گزینه -t به screen میگوید زمانبندی بین نویسهها (inter-character timing) را انجام ندهد. در صورت استفاده از قابلیت termcap نمیتوان زمانبندی را خاموش کرد.
Cmd میتواند هر یک از دستورات screen همراه با تعداد دلخواهی از args باشد. اگر cmd حذف شود، اتصال کلید از جدول برداشته میشود.
چند مثال از اتصالهای صفحهکلید:
bindkey -d
نمایش تمام اتصالهای کلید پیشفرض. ورودیهای حالت برنامه با [A] مشخص شدهاند.
bindkey -k k1 select 1
تنظیم کلید "F1" برای رفتن به پنجره شماره یک.
bindkey -t foo stuff barfoo
تنظیم "foo" به عنوان مخفف عبارت "barfoo". مهلت زمانی (timeout) غیرفعال میشود تا کاربران بتوانند به آرامی تایپ کنند.
bindkey "\024" mapdefault
این اتصال کلید، "^T" را به یک نویسه گریز (escape) برای اتصالهای کلید تبدیل میکند. اگر اتصال فوق "stuff barfoo" را انجام داده باشید، میتوانید با تایپ "^Tfoo" کلمه "foo" را وارد کنید. اگر میخواهید یک "^T" درج کنید، باید کلید را دو بار فشار دهید (یعنی از اتصال گریز، گریز کنید).
bindkey -k F1 command
تنظیم کلید F11 (نه F1!) به عنوان یک کلید گریز جایگزین برای screen (علاوه بر ^A).
ارسال یک سیگنال شکست (break signal) به مدت duration*0.25 ثانیه به این پنجره. برای سیستمهای غیر پازیکس ممکن است بازه زمانی به ثانیههای کامل گرد شود. بیشترین کاربرد زمانی است که یک دستگاه نویسهای به جای فرایند پوسته به پنجره متصل باشد (همچنین به فصل "WINDOW TYPES" مراجعه کنید). حداکثر مدتزمان سیگنال شکست به ۱۵ ثانیه محدود است.
محافظ صفحه (blanker) را فعال میکند. ابتدا صفحه پاک میشود. اگر برنامهای برای محافظ صفحه تعریف نشده باشد، مکاننما خاموش میشود، در غیر این صورت برنامه اجرا شده و خروجی آن روی صفحه نوشته میشود. محافظ صفحه با اولین فشردن کلید متوقف شده و کلید خواندهشده نادیده گرفته میشود.
این دستور معمولاً همراه با دستور "idle" استفاده میشود.
یک برنامه محافظ صفحه را تعریف میکند. اگر آرگومان خالی داده شود، برنامه محافظ صفحه را غیرفعال میکند. در صورت عدم ارائه آرگومان، برنامه محافظ صفحه فعلی را نمایش میدهد.
یکی از روشهای موجود برای تولید سیگنال شکست را برای دستگاههای ترمینال انتخاب میکند. این دستور باید فقط پنجره فعلی را تحت تأثیر قرار دهد؛ اما همچنان رفتاری مشابه "defbreaktype" دارد. این مورد در آینده تغییر خواهد کرد. فراخوانی "breaktype" بدون پارامتر، روش شکست را برای پنجره فعلی نمایش میدهد.
نام فایل مورد استفاده برای خواندن و نوشتن با بافر چسباندن (paste buffer) را تغییر میدهد. اگر آرگومان اختیاری برای دستور "bufferfile" حذف شود، تنظیم پیشفرض ("/tmp/screen-exchange") مجدداً فعال میشود. مثال زیر فایل گذرواژه سیستم را در پنجره screen میچسباند (با استفاده از بافر چسباندن، جایی که یک نسخه کپی باقی میماند):
C-a : bufferfile /etc/passwd C-a < C-a ] C-a : bufferfile
bumpleft
پنجره را با پنجره قبلی در فهرست پنجرهها جابهجا میکند.
پنجره را با پنجره بعدی در فهرست پنجرهها جابهجا میکند.
پردازش کدهای c1 را تغییر میدهد. C1 on به screen میگوید با نویسههای ورودی بین ۱۲۸ و ۱۵۹ به عنوان توابع کنترلی رفتار کند. چنین کد ۸ بیتی معمولاً مشابه ESC به همراه کد ۷ بیتی مربوطه است. تنظیم پیشفرض پردازش کدهای c1 است و میتواند با دستور "defc1" تغییر کند. کاربرانی که فونت آنها دارای نویسههای قابل استفاده در موقعیتهای c1 است ممکن است بخواهند این گزینه را خاموش کنند.
این دستور نمایش عنوانهای پنجره (caption) را کنترل میکند. معمولاً عنوان فقط زمانی استفاده میشود که بیش از یک پنجره روی صفحه نمایش داده شود (حالت صفحه تقسیمشده). اما اگر نوع روی always تنظیم شود، screen حتی اگر فقط یک پنجره نمایش داده شود نیز عنوان را نشان میدهد. مقدار پیشفرض splitonly است.
فرم دوم، متن استفادهشده برای عنوان را تغییر میدهد. میتوانید از تمام دنبالههای گریز فصل "STRING ESCAPES" استفاده کنید. Screen از مقدار پیشفرض `%3n %t' استفاده میکند.
میتوانید با ارائه یک رشته به عنوان آرگومان اضافی، هر دو فرم را ترکیب کنید.
میتوانید تعیین کنید که عنوان در بالا یا پایین پنجره نمایش داده شود. مقدار پیشفرض bottom است.
تخصیص
شیار
مجموعه
نویسه فعلی
و نگاشت charset را
تغییر
میدهد.
چهار نویسه
اول set به
عنوان
تعیینکنندههای
charset در نظر
گرفته
میشوند در
حالی که
نویسه پنجم
و ششم باید
در محدوده '0'
تا '3' باشند و
نگاشت charset
مربوط به GL/GR
را تنظیم
کنند. در هر
موقعیت
میتوان از
یک '.'
استفاده
کرد تا نشان
دهد charset/نگاشت
مربوطه
نباید
تغییر کند
(set در داخل
با افزودن
نویسههای '.'
به شش نویسه
گسترش
مییابد).
پنجرههای
جدید دارای
"BBBB02" به عنوان
charset پیشفرض
هستند، مگر
اینکه
دستور "encoding"
فعال باشد.
تنظیم فعلی
را میتوان
با دستور "info"
مشاهده
کرد.
دایرکتوری فعلی screen را به دایرکتوری مشخصشده یا در صورت فراخوانی بدون آرگومان، به دایرکتوری خانگی شما (مقدار متغیر محیطی $HOME) تغییر میدهد. تمام پنجرههایی که با استفاده از دستور "screen" از داخل ".screenrc" یا با استفاده از "C-a : screen ..." یا "C-a c" ایجاد میشوند، از این دایرکتوری به عنوان دایرکتوری پیشفرض خود استفاده میکنند. بدون دستور chdir، این مقدار همان دایرکتوری خواهد بود که screen از آن فراخوانی شده است.
فایلهای hardcopy و گزارش (log) همیشه در دایرکتوری پیشفرض پنجره نوشته میشوند، نه دایرکتوری فعلی فرایند در حال اجرا در پنجره. میتوانید از این دستور چندین بار در .screenrc خود برای راهاندازی پنجرههای مختلف در دایرکتوریهای پیشفرض مختلف استفاده کنید، اما آخرین مقدار chdir بر تمام پنجرههایی که به صورت تعاملی ایجاد میکنید تأثیر خواهد گذاشت.
با نویسههای دارای عرض مبهم به عنوان عرض کامل/نیمه رفتار میکند.
پنجره فعلی را پاک کرده و تصویر آن را در بافر پیمایش به عقب (scrollback buffer) ذخیره میکند.
پنجرهها را در فهرست پنجرهها دوباره مرتب کرده و شکافهای عددی میان آنها را حذف میکند.
امکان وارد کردن خطوط دستور ".screenrc" را فراهم میکند. برای تغییر لحظهای اتصالهای کلید، ایجاد پنجرههای خاص و تغییر تنظیمات مفید است. توجه داشته باشید که کلمه کلیدی "set" دیگر وجود ندارد! معمولاً دستورات به جای تنظیمات پیشفرض برای پنجرههای بعدی، پنجره فعلی را تحت تأثیر قرار میدهند. مقادیر پیشفرض را با دستوراتی که با '...def' شروع میشوند تغییر دهید.
اگر این حالت را به عنوان `حالت دستور Ex' برای screen در نظر بگیرید، میتوانید "C-a esc" (حالت کپی) را به عنوان `حالت دستور Vi' آن در نظر بگیرید.
این دستور اثری مشابه تایپ نویسه گریز screen (^A) دارد. احتمالاً فقط برای اتصالهای کلید مفید است. اگر گزینه "-c" داده شود، کلاس دستور مشخصشده را انتخاب میکند. همچنین به "bind" و "bindkey" مراجعه کنید.
به screen میگوید که آیا هنگام پیمایش متن به بالا در بافر تاریخچه، خطوط خالی انتهایی را نادیده بگیرد یا خیر.
خروجی کنسول دستگاه را به یک پنجره متصل (grab) یا جدا میکند. نکته: فقط مالک dev/console/ میتواند خروجی کنسول را دریافت کند. این دستور فقط در صورتی در دسترس است که دستگاه از TIOCCONS ioctl پشتیبانی کند.
ورود به
حالت
کپی/پیمایش
به عقب. این
امکان را
میدهد تا
متن را از
پنجره فعلی
و تاریخچه
آن در بافر
چسباندن (paste buffer)
کپی کنید. در
این حالت یک
`ویرایشگر
تمامصفحه'
شبیه به vi
فعال
میشود:
کلیدهای
حرکتی
ویرایشگر
عبارتند
از:
| h, C-h, left arrow | مکاننما را به چپ حرکت میدهد. |
| j, C-n, down arrow | مکاننما را به پایین حرکت میدهد. |
| k, C-p, up arrow | مکاننما را به بالا حرکت میدهد. |
| l ('el'), right arrow | مکاننما را به راست حرکت میدهد. |
| 0 (zero) C-a | به چپترین ستون حرکت میکند. |
| + and - | یک خط به بالا و پایین میرود. |
| H, M and L | مکاننما را به چپترین ستون خط بالا، وسط یا پایین پنجره منتقل میکند. |
| | | به ستون مطلق مشخصشده حرکت میکند. |
| g or home | به ابتدای بافر میرود. |
| G or end | به خط مطلق مشخصشده حرکت میکند (پیشفرض: انتهای بافر). |
| % | به درصد مشخصشدهای از بافر میپرد. |
| ^ or $ | به چپترین ستون، به اولین یا آخرین نویسه غیرفاصله در خط حرکت میکند. |
| w, b, and e | مکاننما را کلمه به کلمه حرکت میدهد. |
| B, E | مکاننما را «کلمه به کلمه» (مانند vi) حرکت میدهد. |
| f/F, t/T | مکاننما را به جلو/عقب به رخداد بعدی هدف حرکت میدهد. (مثلاً '3fy' مکاننما را به سومین 'y' در سمت راست میبرد.) |
| ; and , | آخرین دستور f/F/t/T را در همان جهت/جهت مخالف تکرار میکند. |
| C-e and C-y | صفحه نمایش را یک خط به بالا/پایین پیمایش میکند در حالی که موقعیت مکاننما حفظ میشود. |
| C-u and C-d | صفحه نمایش را به تعداد خطوط مشخصشده به بالا/پایین پیمایش میکند در حالی که موقعیت مکاننما حفظ میشود. (پیشفرض: نصف صفحه). |
| C-b and C-f | صفحه نمایش را به اندازه یک صفحه کامل به بالا/پایین پیمایش میکند. |
نکته: کلیدهای حرکتی به سبک Emacs را میتوان با یک دستور در سفارشیسازی کرد. (برای مثال markkeys "h=^B:l=^F:$=^E") روش سادهای برای نگاشت کامل کلیدها به سبک emacs وجود ندارد، زیرا این کار شامل کدهای چندکاراکتری میشود.
برخی کلیدها برای انجام عملیات علامتگذاری و جایگزینی تعریف شدهاند.
محدوده رونوشت با تعیین دو علامت مشخص میشود. متن بین این علامتها برجسته خواهد شد. فشار دهید:
- space یا enter برای تنظیم علامت اول یا دوم به ترتیب. اگر mousetrack روی `on` تنظیم شده باشد، علامتها را میتوان با left mouse click نیز تنظیم کرد.
- Y و y برای علامتگذاری یک خط کامل یا علامتگذاری از ابتدای خط استفاده میشوند.
- W دقیقاً یک کلمه را علامتگذاری میکند.
هر یک از این دستورات میتواند با فشردن ارقام
- 0..9 به عنوان تعداد تکرار، یک پیشوند تعداد تکرار دریافت کند.
مثال: "C-a C-[ H 10 j 5 Y" خطوط ۱۱ تا ۱۵ را در بافر چسباندن کپی میکند.
کلیدهای جستجوی زیر تعریف شدهاند:
- / جستجو رو به جلو مشابه Vi.
- ? جستجو رو به عقب مشابه Vi.
- C-a s جستجوی افزایشی رو به جلو به سبک Emacs.
- C-r جستجوی افزایشی معکوس به سبک Emacs.
- n یافتن الگوی جستجوی بعدی.
- N یافتن الگوی جستجوی قبلی.
با این حال برخی کلیدها وجود دارند که متفاوت از vi عمل میکنند. Vi اجازه کپی کردن بلوکهای مستطیلی متن را نمیدهد، اما screen این کار را میکند. فشار دهید: c یا C برای تنظیم حاشیه چپ یا راست به ترتیب. اگر تعداد تکرار مشخص نشده باشد، هر دو به موقعیت فعلی مکاننما پیشفرض میشوند.
مثال: این مورد را روی صفحهای نسبتاً پر از متن امتحان کنید:
این دستور شما را به خط میانی صفحه میبرد، ۲۰ ستون به چپ حرکت میکند، ابتدای بافر چسباندن را علامتگذاری میکند، ستون چپ را تنظیم میکند، ۵ ستون به پایین میرود، ستون راست را تنظیم میکند، و سپس انتهای بافر چسباندن را علامت میزند. اکنون امتحان کنید:
و تفاوت در مقدار متن کپیشده را مشاهده کنید.
J خطوط را به هم متصل میکند. این کلید بین ۴ حالت جابهجا میشود: خطوط جداشده با نویسه خط جدید (012)، خطوط به هم چسبیده و بدون درز، خطوط جداشده با یک فاصله تکی، و خطوط جداشده با ویرگول. توجه داشته باشید که میتوانید با اجرای دستور "crlf on" نویسه خط جدید را با یک نویسه بازگشت به ابتدای سطر (carriage return) همراه کنید.
v یا V برای تمام کاربران vi با تنظیم ":set numbers" است - حاشیه سمت چپ را بین ستون ۹ و ۱ تغییر میدهد. فشار دهید
a قبل از کلید نهایی space برای جابهجایی به حالت افزودن (append). بدین ترتیب محتویات بافر چسباندن رونویسی نمیشود، بلکه به آن اضافه میگردد.
A به حالت افزودن جابهجا میشود و علامت (دوم) را تنظیم میکند.
> علامت (دوم) را تنظیم کرده و پس از پایان حالت رونوشت (copy-mode)، محتویات بافر چسباندن را در فایل تبادل screen (بهطور پیشفرض /tmp/screen-exchange) مینویسد.
این مثال نحوه تخلیه کل بافر پیمایش به عقب (scrollback) در آن فایل را نشان میدهد: "C-A [ g SPACE G $ >".
C-g اطلاعات مربوط به خط و ستون فعلی را نمایش میدهد.
x یا o جای علامت اول و موقعیت فعلی مکاننما را با هم عوض میکند. میتوانید از این برای تنظیم علامتی که قبلاً قرار دادهاید استفاده کنید.
C-l (حرف 'el') صفحه را بازترسیم میکند.
@ کاری انجام نمیدهد؛ حتی از حالت رونوشت نیز خارج نمیشود.
تمام کلیدهایی که در اینجا توضیح داده نشدهاند، از حالت رونوشت خارج میشوند.
دیگر وجود ندارد، به جای آن از "readreg" استفاده کنید.
بر رونوشت نواحی متنی با دستور `C-a [' تأثیر میگذارد. اگر روی `on` تنظیم شود، خطوط با دنباله دوکاراکتری `CR` - `LF` از هم جدا میشوند. در غیر این صورت (پیشفرض) فقط `LF` استفاده میشود. هنگامی که پارامتری داده نشود، وضعیت تغییر میکند.
مشابه دستور c1 است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. تنظیم اولیه `on` است.
مشابه دستور autonuke است با این تفاوت که تنظیم پیشفرض برای نمایشگرهای جدید تغییر میکند. تنظیم اولیه `off` است. توجه داشته باشید که اگر میخواهید وابستگی به نوع ترمینال داشته باشید، میتوانید از قابلیت ترمینال ویژه `AN` استفاده کنید.
مشابه دستور bce است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. تنظیم اولیه `off` است.
یکی از روشهای موجود برای تولید سیگنال break برای دستگاههای ترمینال را انتخاب میکند. روشهای ترجیحی tcsendbreak و TIOCSBRK هستند. روش سوم، TCSBRK, کل نشست screen را برای مدت زمان وقفه مسدود میکند، اما ممکن است تنها راه برای تولید وقفههای طولانی باشد. Tcsendbreak و TIOCSBRK ممکن است وقفههای طولانی همراه با جهش (مثلاً ۴ در ثانیه) ایجاد کنند یا نکنند. این مورد نه تنها به سیستم وابسته است، بلکه بین درایورهای برد سریال نیز تفاوت دارد. فراخوانی "defbreaktype" بدون پارامتر، تنظیم فعلی را نمایش میدهد.
مانند دستور charset است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. در صورت فراخوانی بدون آرگومان، پیشفرض فعلی را نشان میدهد.
رفتار پیشفرض برای پنجرههای جدید را در مورد اینکه آیا screen باید با مشاهده توالی گریز مناسب عنوان پنجره را تغییر دهد یا خیر تنظیم میکند. همچنین به بخش "TITLES (naming windows)" مراجعه کنید.
کاراکترهای دستوری پیشفرض را تنظیم میکند. این معادل "escape" است با این تفاوت که فقط در نشستهای چندکاربره کاربرد دارد. در یک نشست چندکاربره، "escape" کاراکتر دستوری کاربر فراخواننده را تغییر میدهد، در حالی که "defescape" کاراکترهای دستوری پیشفرض را برای کاربرانی که بعداً اضافه خواهند شد تغییر میدهد.
مشابه دستور flow است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. تنظیم اولیه `auto` است. مشخص کردن defflow auto interrupt معادل گزینههای خط فرمان -fa و -i است.
مشابه دستور gr است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. تنظیم اولیه `off` است.
خط وضعیت سختافزاری (hardstatus) را که تمام پنجرههای جدید دریافت میکنند روی status تنظیم میکند. این دستور برای نمایش شماره یا عنوان پنجره یا موارد مشابه در hardstatus هر پنجره مفید است. Status میتواند شامل همان دستورالعملهای موجود در پیامهای پنجره باشد، اما نویسه گریز دستورالعمل به جای '%'، مقدار '^E' (اکتال 005) است. این کار برای جلوگیری از تفسیر نادرست خطوط hardstatus تولید شده توسط برنامه انجام شده است. اگر پارامتر status حذف شود، رشته پیشفرض فعلی نمایش داده میشود. بهطور پیشفرض خط hardstatus پنجرههای جدید خالی است.
مشابه دستور encoding است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. تنظیم اولیه همان کدگذاری برگرفته از ترمینال است.
مشابه دستور log است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. تنظیم اولیه `off` است.
مشابه دستور login است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. این مقدار طبق توزیع بهصورت `on` مقداردهی اولیه شده است (config.h.in را ببینید).
حالت هر pseudo-tty جدیداً تخصیصیافته روی mode تنظیم میشود. Mode یک عدد در مبنای هشت (اکتال) است. هنگامی که هیچ دستور "defmode" داده نشود، از حالت 0622 استفاده میشود.
مشابه دستور monitor است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. تنظیم اولیه `off` است.
مشابه دستور mousetrack است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. تنظیم اولیه `off` است.
مشابه دستور nonblock است با این تفاوت که تنظیم پیشفرض برای نمایشگرها تغییر میکند. تنظیم اولیه `off` است.
مشابه دستور obuflimit است با این تفاوت که تنظیم پیشفرض برای نمایشگرهای جدید تغییر میکند. تنظیم اولیه ۲۵۶ بایت است. توجه داشته باشید که اگر میخواهید وابستگی به نوع ترمینال داشته باشید، میتوانید از قابلیت ویژه ترمینال 'OL' استفاده کنید.
مشابه دستور scrollback است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. تنظیم اولیه ۱۰۰ است.
مترادف با دستور shell در .screenrc است. به آن بخش مراجعه کنید.
مشابه دستور silence است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. تنظیم اولیه `off` است.
مشابه دستور slowpaste است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. تنظیم اولیه ۰ میلیثانیه به معنای `off` است.
مشابه دستور utf8 است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. اگر screen با "-U" راهاندازی شده باشد مقدار اولیه `on`، و در غیر این صورت `off` است.
مشابه دستور wrap است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. در ابتدا شکستن خودکار خطوط (line-wrap) روشن است و با دستور "wrap" ("C-a r") یا از طریق "C-a : wrap on|off" قابل تغییر وضعیت است.
مشابه دستور writelock است با این تفاوت که تنظیم پیشفرض برای پنجرههای جدید تغییر میکند. در ابتدا قفلهای نوشتن غیرفعال (off) خواهند بود.
نشست screen را جدا میکند (آن را از ترمینال قطع کرده و در پسزمینه قرار میدهد). این کار شما را به پوستهای که screen را از آن فراخوانی کرده بودید بازمیگرداند. یک نشست screen جداشده را میتوان با فراخوانی screen با گزینه -r از سر گرفت (همچنین به بخش "COMMAND-LINE OPTIONS" مراجعه کنید). گزینه -h به screen اعلام میکند که بلافاصله اتصال به ترمینال را قطع کند ("hangup").
نمایش اطلاعات و برداشتی که screen از ترمینال شما دارد. این دستور زمانی مفید است که بخواهید بدانید چرا ویژگیهایی مانند رنگ یا مجموعه نویسههای جایگزین (alternate charset) کار نمیکنند.
نمایش فهرستی جدولبندیشده از تمام رابطهای کاربری (نمایشگرهای) متصلشده کنونی. این دستور بیش از همه برای نشستهای چندکاربره کاربرد دارد. کلیدهای زیر در فهرست نمایشگرها قابل استفاده هستند:
| k، C-p یا up | انتقال یک خط به بالا. |
| j، C-n یا down | انتقال یک خط به پایین. |
| C-a یا home | رفتن به خط اول. |
| C-e یا end | رفتن به خط آخر. |
| C-u یا C-d | پیمایش نیمصفحه به بالا یا پایین. |
| C-b یا C-f | پیمایش یک صفحه کامل به بالا یا پایین. |
| mouseclick | انتقال به خط انتخابشده. زمانی که "mousetrack" روی on تنظیم شده باشد در دسترس است. |
| space | نوسازی فهرست |
| d | جدا کردن (detach) آن نمایشگر |
| D | جدا کردن اجباری (power detach) آن نمایشگر |
| C-g، enter یا escape | خروج از فهرست |
در ادامه نمونهای از ظاهر خروجی دستور "displays" آورده شده است:
xterm 80x42 jnweiger@/dev/ttyp4 0(m11) &rWx facit 80x24 mlschroe@/dev/ttyhf nb 11(tcsh) rwx xterm 80x42 jnhollma@/dev/ttyp5 0(m11) &R.x (A) (B) (C) (D) (E) (F)(G) (H)(I)
راهنمای بخشها به شرح زیر است:
- (A) نوع ترمینال شناختهشده توسط screen برای این نمایشگر.
- (B) ابعاد هندسی نمایشگر بهصورت عرض در ارتفاع.
- (C) نام کاربری کاربری که در این نمایشگر وارد شده است.
- (D) نام دستگاه نمایشگر یا دستگاه متصلشده
- (E) قرار داشتن نمایشگر در حالت مسدودکننده (blocking) یا غیرمسدودکننده (nonblocking). حالتهای موجود عبارتند از "nb"، "NB"، "Z<"، "Z>" و "BL".
- (F) شماره پنجره
- (G) نام/عنوان پنجره
- (H) اشتراکی بودن یا نبودن پنجره
- (I) مجوزهای
پنجره.
متشکل از سه
کاراکتر.
نشانگرهای مجوزهای پنجره کاراکتر ۱ کاراکتر ۲ کاراکتر ۳ - بدون خواندن - بدون نوشتن - بدون اجرا r خواندن w نوشتن x اجرا W قفل نوشتن خودی نشانگرهای مجوزهای مهارشده توسط قفل نوشتن خارجی R فقطخواندنی . بدون نوشتن
این دستور از کاربر برای یک توالی دونویسهای (digraph) ورودی میخواهد. دو کاراکتر بعدی که تایپ شوند در یک جدول داخلی جستجو میشوند و کاراکتر حاصل در جریان ورودی درج میشود. برای مثال، اگر کاربر 'a"' را وارد کند، یک a-umlaut درج خواهد شد. اگر اولین کاراکتر واردشده 0 (صفر) باشد، screen با کاراکترهای بعدی (حداکثر تا سه کاراکتر) مانند یک عدد در مبنای هشت رفتار خواهد کرد. آرگومان اختیاری preset بهعنوان ورودی کاربر در نظر گرفته میشود، بنابراین میتوان یک کلید "umlaut" ایجاد کرد. بهعنوان مثال دستور "bindkey ^K digraph '"'" به کاربر امکان میدهد با تایپ CTRL-K a یک a-umlaut تولید کند. زمانی که یک unicode-value غیرصفر مشخص شود، یک digraph جدید با پیشتنظیم مشخصشده ایجاد میشود. اگر مقدار صفر برای unicode-value تعیین گردد، آن digraph حذف میشود.
نوشتن مدخل termcap برای ترمینال مجازی بهینهسازیشده برای پنجره فعال کنونی در فایل ".termcap" در دایرکتوری "$HOME/.screen" کاربر (یا هر جا که screen سوکتهای خود را ذخیره میکند؛ بخش "FILES" را در ادامه ببینید). این مدخل termcap دقیقاً برابر با مقدار متغیر محیطی $TERMCAP است که توسط screen برای هر پنجره مقداردهی میشود. برای سیستمهای مبتنی بر terminfo، باید یک مبدل مانند captoinfo را اجرا کرده و سپس مدخل حاصل را با tic کامپایل کنید.
تغییر رفتار پنجرهها در رابطه با اینکه آیا screen هنگام مشاهده توالی اسکیپ مناسب باید عنوان پنجره را تغییر دهد یا خیر. همچنین بخش "TITLES (naming windows)" را ببینید.
از دستور echo میتوان برای نمایش پیام روز (message of the day) به کاربران screen استفاده کرد. این دستور معمولاً در فایل سراسری /local/etc/screenrc قرار داده میشود. گزینه "-n" برای جلوگیری از درج خط جدید (line feed) کاربرد دارد. همچنین "sleep" را ببینید. دستور echo برای بررسی آنلاین متغیرهای محیطی نیز مفید است.
مشخص کردن شیوه تفسیر ورودی/خروجی برای screen. آرگومان اول، کدگذاری پنجره کنونی را تعیین میکند. هر پنجره میتواند یک کدگذاری متفاوت را شبیهسازی کند. پارامتر اختیاری دوم، کدگذاری ترمینال متصلشده را بازنویسی (override) میکند. این پارامتر اصولاً نباید لازم باشد، چرا که screen از تنظیمات لوکال (locale) برای تشخیص کدگذاری استفاده میکند. همچنین روشی برای انتخاب کدگذاری ترمینال بر اساس نوع ترمینال با استفاده از مدخل termcap مربوط به "KJ" وجود دارد.
کدگذاریهای پشتیبانیشده عبارتند از eucJP، SJIS، eucKR، eucCN، Big5، GBK، KOI8-R، KOI8-U، CP1251، UTF-8، ISO8859-2، ISO8859-3، ISO8859-4، ISO8859-5، ISO8859-6، ISO8859-7، ISO8859-8، ISO8859-9، ISO8859-10، ISO8859-15، jis.
همچنین دستور "defencoding" را ببینید که تنظیمات پیشفرض یک پنجره جدید را تغییر میدهد.
تنظیم کاراکتر فرمان به x و کاراکتری که کاراکتر فرمان تحتاللفظی را (از طریق اجرای دستور "meta") تولید میکند به y (مشابه گزینه -e). هر آرگومان یا یک کاراکتر منفرد است، یا یک توالی دوکاراکتری به فرم "^x" (به معنی "C-x")، یا یک بکاسلش به همراه یک عدد در مبنای هشت (مشخصکننده کد ASCII کاراکتر)، یا یک بکاسلش به همراه کاراکتر دوم مانند "\^" یا "\\". مقدار پیشفرض "^Aa" است.
- eval command1[command2 ...]
تجزیه و اجرای هر آرگومان بهعنوان یک دستور مجزا.
اجرای یک زیرپردازش یونیکس (مشخصشده با مسیر فایل اجرایی newcommand و آرگومانهای اختیاری آن) در پنجره کنونی. جریان داده میان ورودی/خروجی/خطای استاندارد (stdin/stdout/stderr) دستور جدید، پردازشی که در ابتدا در پنجره شروع شده بود (که آن را "application-process" مینامیم) و خود screen (پنجره) توسط الگوی توصیفکننده فایل fdpat کنترل میشود. این الگو اساساً یک توالی سهکاراکتری است که نمایانگر stdin، stdout و stderr دستور جدید است. یک نقطه (.) توصیفکننده فایل را به screen وصل میکند. علامت تعجب (!) باعث اتصال توصیفکننده فایل به application-process میشود. دونقطه (:) هر دو را با هم ترکیب میکند. ورودی کاربر به newcommand ارسال خواهد شد مگر آنکه newcommand خروجی application-process را دریافت کند (اولین کاراکتر fdpat برابر `!` یا `:` باشد) یا یک نماد پایپ (|) (بهعنوان کاراکتر چهارم) به انتهای fdpat اضافه شود.
فراخوانی `exec` بدون آرگومان، نام و آرگومانهای زیرپردازشِ در حال اجرای کنونی در این پنجره را نشان میدهد. در هر پنجره در هر لحظه تنها یک زیرپردازش میتواند اجرا شود.
هنگامی که یک زیرپردازش در حال اجرا است، دستور `kill` بهجای پردازش اصلی پنجره بر آن اثر خواهد گذاشت.
برای مشاهده تصویری تمام ۲۱ حالت ممکن به فایل پستاسکریپت `doc/fdpat.ps` مراجعه کنید. هر طرح ارقام 2,1,0 را نشان میدهد که نمایانگر سه توصیفکننده فایل newcommand هستند. جعبه علامتگذاریشده با `W` همان pty معمول است که application-process را در سمت اسلیو (slave) خود دارد. جعبه علامتگذاریشده با `P` ترمینال مجازی فرعی (pty ثانویه) است که اکنون screen را در سمت مستر (master) خود دارد.
کوتاهنویسیها: فاصله بین کلمه `exec` و fdpat و دستور را میتوان حذف کرد. نقطههای انتهایی و یک fdpat که فقط از نقطه تشکیل شده است را میتوان حذف کرد. یک `|` ساده معادل الگوی `!..|` است؛ کلمه exec را میتوان در اینجا حذف کرد و همیشه میتوان آن را با `!` جایگزین نمود.
مثالها:
- exec ... /bin/sh
- exec /bin/sh
- !/bin/sh
-
یک شل دیگر را در همان پنجره ایجاد میکند، در حالی که شل اصلی همچنان در حال اجرا است. خروجی هر دو شل نمایش داده میشود و ورودی کاربر به /bin/sh جدید ارسال میگردد.
- exec !.. stty 19200
- exec ! stty 19200
- !!stty 19200
-
سرعت tty پنجره را تنظیم میکند. اگر دستور stty شما روی خروجی استاندارد عمل میکند، یک `!` دیگر اضافه کنید.
- exec !..| less
- |less
-
این دستور یک صفحهبند (pager) به خروجی پنجره اضافه میکند. کاراکتر ویژه `|` لازم است تا به کاربر امکان کنترل صفحهبند را بدهد، هرچند که ورودی خود را از پردازش پنجره دریافت میکند. این کار به این دلیل عمل میکند که less روی خروجی خطا (stderr) گوش میدهد (رفتاری که screen بدون وجود `|` انتظار آن را ندارد) زمانی که ورودی استاندارد آن یک tty نباشد. نسخههای Less جدیدتر از 177 در اینجا کاملاً با خطا مواجه میشوند؛ اما pg قدیمی و خوب همچنان کار میکند.
- !:sed -n s/.*Error.*/\007/p
-
خروجی پنجره را هم برای کاربر و هم برای دستور sed میفرستد. دستور sed یک کاراکتر بوق (bell) اضافی (oct. 007) را در خروجی پنجره که توسط screen دیده میشود درج میکند. این کار هر زمان که رشته "Error" در پنجره ظاهر شود، پیامهای "Bell in window x" ایجاد خواهد کرد.
تغییر اندازه پنجره به اندازه ناحیه (region) کنونی. این دستور به این دلیل نیاز است که screen در صورتی که پنجره بیش از یک بار نمایش داده شود، اندازه پنجره را بهصورت خودکار تطبیق نمیدهد.
تنظیم حالت کنترل جریان (flow-control) برای این پنجره. بدون پارامتر، تنظیمات کنترل جریان پنجره کنونی را بهصورت چرخشی از "automatic" به "on" و سپس به "off" تغییر میدهد. برای جزئیات کامل، به مبحث "FLOW-CONTROL" در ادامه این سند مراجعه کنید و توجه داشته باشید که این موضوع در نسخههای آینده ممکن است تغییر کند. مقدار پیشفرض توسط `defflow` تنظیم میشود.
انتقال تمرکز ورودی (focus) به ناحیه بعدی. این کار بهصورت چرخشی انجام میشود تا پس از ناحیه پایین-راست، ناحیه بالا-چپ انتخاب شود. اگر هیچ گزینهای داده نشود، پیشفرض روی `next` قرار میگیرد. ناحیه بعدی که باید انتخاب شود بر اساس نحوه لایهبندی نواحی تعیین میگردد. معمولاً ناحیه بعدی در همان لایه انتخاب میشود. با این حال، اگر آن ناحیه بعدی شامل یک یا چند لایه باشد، ابتدا اولین ناحیه در بالاترین لایه انتخاب خواهد شد. اگر در آخرین ناحیه از لایه کنونی باشید، `next` تمرکز را به ناحیه بعدی در لایه پایینتر (در صورت وجود لایه پایینتر) منتقل میکند. دستور `prev` در جهت معکوس عمل چرخش را انجام میدهد. برای اطلاعات بیشتر در مورد لایهها به "split" مراجعه کنید.
سایر گزینهها (`up`، `down`، `left`، `right`، `top` و `bottom`) مستقلتر از لایهها عمل میکنند. گزینه `up` تمرکز را به سمت بالا به ناحیهای که با گوشه بالا-چپ ناحیه کنونی در تماس است منتقل میکند. گزینه `down` به سمت پایین به ناحیهای که با گوشه پایین-چپ ناحیه کنونی در تماس است منتقل میشود. گزینه `left` تمرکز را به سمت چپ به ناحیهای که با گوشه بالا-چپ ناحیه کنونی در تماس است هدایت میکند، در حالی که `right` به سمت راست به ناحیهای که با گوشه بالا-راست ناحیه کنونی در تماس است حرکت میکند. حرکت به چپ از چپترین ناحیه یا حرکت به راست از راستترین ناحیه هیچ عملی را در پی نخواهد داشت.
گزینه `top` تمرکز را به اولین ناحیه در گوشه بالا-چپ صفحه منتقل میکند و `bottom` به ناحیه در گوشه پایین-راست صفحه میرود. حرکت به بالا از بالاترین ناحیه یا حرکت به پایین از پایینترین ناحیه هیچ عملی انجام نمیدهد.
کلیدهای میانبر کاربردی عبارتند از (h، j، k و l مانند vi)
bind h focus left bind j focus down bind k focus up bind l focus right bind t focus top bind b focus bottomتوجه داشته باشید که k بهطور سنتی به دستور kill متصل است.
این دستور باعث میشود هر ناحیهٔ انتخابی فعلی بهطور خودکار حداقل به یک width (عرض) و height (ارتفاع) مشخص تغییر اندازه دهد. تمام نواحی اطراف برای جا دادن آن تغییر اندازه خواهند داد. این محدودیت با هر بار استفاده از دستور "focus" اعمال میشود. از دستور "resize" میتوان برای افزایش هر یک از ابعاد ناحیه استفاده کرد، اما مقدار آن هرگز کمتر از آنچه با "focusminsize" تعیین شده نخواهد بود. نویسهٔ زیرخط `_' مترادفی برای max است. تنظیم width و height روی `0 0' (صفر صفر) تمام محدودیتها را لغو کرده و اجازه تغییر اندازهٔ دستی را میدهد. بدون هیچ پارامتری، حداقل عرض و ارتفاع فعلی نمایش داده میشود.
روشن یا خاموش کردن تغییر مجموعه نویسه GR. هر زمان که screen نویسهٔ ورودی با بیت هشتم ستشده را ببیند، از مجموعه نویسه ذخیرهشده در شکاف GR استفاده کرده و نویسه را پس از حذف بیت هشتم چاپ میکند. مقدار پیشفرض (همچنین دستور "defgr" را ببینید) عدم پردازش تغییر GR است؛ زیرا در غیر این صورت مجموعه نویسه ISO88591 کار نخواهد کرد.
تغییر یا نمایش گروهی که پنجرهٔ فعلی به آن تعلق دارد. پنجرهها را میتوان با مشخص کردن نام گروه مقصد بین گروههای مختلف جابهجا کرد. بدون مشخص کردن گروه، عنوان گروه فعلی نمایش داده میشود.
تصویر در حال نمایش فعلی را در فایل file یا در صورت عدم تعیین نام فایل، در فایل hardcopy.n در دایرکتوری پیشفرض مینویسد، که در آن n شمارهٔ پنجرهٔ فعلی است. در صورت وجود فایل، محتوا به آن الحاق شده یا روی آن بازنویسی میشود. به توضیحات زیر مراجعه کنید. اگر گزینهٔ -h مشخص شده باشد، محتوای بافر پیمایش به عقب (scrollback buffer) نیز تخلیه و ذخیره میشود.
اگر روی "on" تنظیم شود، screen دادهها را به فایلهای "hardcopy.n" ایجادشده توسط دستور "C-a h" الحاق میکند، در غیر این صورت این فایلها هر بار بازنویسی میشوند. مقدار پیشفرض `off' است.
دایرکتوری محل قرارگیری فایلهای hardcopy را مشخص میکند. در صورت عدم تنظیم، نسخههای hardcopy در دایرکتوری کاری جاری screen's ذخیره میشوند.
- hardstatus [ on | off ]
- hardstatus [ always ] firstline | lastline | message | ignore [ string ]
- hardstatus string [ string ]
این دستور استفاده و شبیهسازی خط hardstatus ترمینال را پیکربندی میکند. شکل اول مشخص میکند که آیا screen از خط وضعیت سختافزاری برای نمایش پیامها استفاده کند یا خیر. اگر این فلگ روی `off' تنظیم شود، این پیامها به صورت حالت ویدیوی معکوس (reverse video) روی خط نمایش قرار میگیرند. مقدار پیشفرض `on' است.
شکل دوم به screen میگوید اگر ترمینال خط hardstatus نداشته باشد (یعنی قابلیتهای termcap/terminfo شامل "hs"، "ts"، "fs" و "ds" تنظیم نشده باشند) چه کاری انجام دهد. هنگامی که از "firstline/lastline" استفاده میشود، screen خط اول/آخر صفحه نمایش را برای hardstatus رزرو میکند. مقدار "message" از سازوکار پیامرسانی screen استفاده میکند و "ignore" به screen میگوید که هرگز hardstatus را نمایش ندهد. اگر کلمهٔ "always" را به ابتدای نوع اضافه کنید (مانند "alwayslastline")، screen حتی اگر ترمینال از hardstatus پشتیبانی کند، از این نوع استفاده خواهد کرد.
شکل سوم محتوای خط hardstatus را تعیین میکند. مقدار '%h' به عنوان رشتهٔ پیشفرض استفاده میشود، یعنی hardstatus ذخیرهشدهٔ پنجرهٔ فعلی (قابل تنظیم از طریق "ESC]0;<string>^G" یا "ESC_<string>ESC\") نمایش داده میشود. میتوانید این مقدار را با هر رشتهٔ دلخواهی شامل کدهای گریز فصل "STRING ESCAPES" سفارشیسازی کنید. اگر آرگومان string را حذف کنید، رشتهٔ فعلی نمایش داده میشود.
میتوانید با ارائهٔ رشته به عنوان آرگومان اضافی، شکل دوم و سوم را با هم ترکیب کنید.
ارتفاع صفحه نمایش را روی تعداد خطوط مشخصشده تنظیم میکند. اگر هیچ آرگومانی داده نشود، بین نمایش ۲۴ و ۴۲ خط جابهجا میشود. همچنین اگر میخواهید هر دو مقدار را تغییر دهید، میتوانید عرض را نیز مشخص کنید. گزینهٔ -w به screen میگوید که اندازهٔ صفحه نمایش را بدون تغییر بگذارد و فقط اندازهٔ پنجره را تنظیم کند، و -d برعکس این عمل میکند.
در واقع یک راهنمای آنلاین کامل نیست، بلکه یک صفحهٔ راهنما در screen نمایش میدهد که تمام کلیدهای مقیدشده (key bindings) را نشان میدهد. صفحات نخست تمام دستورات داخلی را به همراه کلیدهای مقید فعلی آنها فهرست میکنند. صفحات بعدی دستورات سفارشی را نمایش میدهند، یک دستور به ازای هر کلید. پس از اتمام خواندن هر صفحه، کلید space را فشار دهید یا برای خروج زودهنگام return را بزنید. تمام نویسههای دیگر نادیده گرفته میشوند. اگر گزینهٔ "-c" داده شود، تمام دستورات مقیدشده برای کلاس دستور مشخصشده را نمایش میدهد. همچنین بخش "DEFAULT KEY BINDINGS" را ببینید.
معمولاً کاربران با پوستهای کار میکنند که امکان دسترسی آسان به دستورات قبلی را فراهم میکند. برای مثال، csh دارای دستور "!!" برای تکرار آخرین دستور اجراشده است. Screen به شما اجازه میدهد روشی ابتدایی برای فراخوانی مجدد «دستوری که با ... شروع شده» داشته باشید: کافی است حرف اول آن دستور را تایپ کرده و سپس کلیدهای `C-a {' را بزنید؛ در این هنگام screen تلاش میکند خط قبلی مطابق با «نویسهٔ اعلان» (prompt character) در سمت چپ مکاننما را پیدا کند. این خط در صف ورودی پنجرهٔ فعلی چسبانده (paste) میشود. بدین ترتیب یک تاریخچه دستورات ابتدایی (متشکل از پنجرهٔ مرئی و بافر پیمایش به عقب آن) در اختیار خواهید داشت.
تغییر خط hardstatus پنجره به رشتهٔ status.
دستوری را تنظیم میکند که پس از گذشت تعداد ثانیههای مشخصشده از عدم فعالیت (inactivity) اجرا شود. این دستور معمولاً دستور "blanker" برای ایجاد خاموشکننده/محافظ صفحه است، اما میتواند هر دستور دیگر screen باشد. اگر دستوری مشخص نشود، فقط زمان انقضا (timeout) تنظیم میشود. زمان انقضای صفر (یا مقدار ویژهٔ off) تایمر را غیرفعال میکند. اگر هیچ آرگومانی داده نشود، تنظیمات فعلی نمایش داده میشوند.
به screen میگوید که در جستجوها بزرگی و کوچکی حروف را نادیده بگیرد. مقدار پیشفرض `off' است. بدون هیچ گزینهای، وضعیت ignorecase تغییر میکند.
از خط پیام برای نمایش اطلاعاتی دربارهٔ پنجرهٔ فعلی استفاده میکند: موقعیت مکاننما به شکل "(column,row)" شروع از "(1,1)"، عرض و ارتفاع ترمینال به علاوه اندازهٔ بافر پیمایش به عقب بر حسب خط، مانند "(80,24)+50". وضعیت فعلی کنترل جریان XON/XOFF پنجره به این شکل نشان داده میشود (همچنین بخش FLOW CONTROL را ببینید):
| +flow | کنترل جریان خودکار، در حال حاضر فعال. |
| -flow | کنترل جریان خودکار، در حال حاضر غیرفعال. |
| +(+)flow | کنترل جریان فعال است. با کنترل خودکار مطابقت دارد. |
| -(+)flow | کنترل جریان غیرفعال است. با کنترل خودکار مغایرت دارد. |
| +(-)flow | کنترل جریان فعال است. با کنترل خودکار مغایرت دارد. |
| -(-)flow | کنترل جریان غیرفعال است. با کنترل خودکار مطابقت دارد. |
تنظیم فعلی پیچش خط (`+wrap' نشاندهندهٔ فعال بودن، و `-wrap' غیرفعال بودن است) نیز نمایش داده میشود. فلگهای `ins'، `org'، `app'، `log'، `mon' یا `nored' در صورتی نمایش داده میشوند که پنجره در حالت درج (insert)، حالت مبدأ (origin)، حالت صفحهکلید عددی برنامهای (application-keypad)، یا دارای ثبت لاگ خروجی، پایش فعالیت یا بازترسیم جزئی فعال باشد.
مجموعه نویسهٔ فعال فعلی (G0، G1، G2 یا G3) و درون براکتها، مجموعههای نویسهٔ ترمینال که در حال حاضر به عنوان G0 تا G3 تعیین شدهاند نمایش داده میشود. اگر پنجره در حالت UTF-8 باشد، رشتهٔ "UTF-8" به جای آن نشان داده میشود.
حالتهای اضافی وابسته به نوع پنجره در انتهای خط وضعیت نمایش داده میشوند (همچنین فصل "WINDOW TYPES" را ببینید).
اگر ماشین وضعیت شبیهساز ترمینال در وضعیتی غیر از پیشفرض باشد، خط اطلاعات با رشتهای که وضعیت فعلی را مشخص میکند شروع میشود.
برای اطلاعات سیستم از دستور "time" استفاده کنید.
دیگر وجود ندارد، به جای آن از "paste" استفاده کنید.
کشتن و بستن پنجرهٔ فعلی.
اگر دستور `exec' در حال اجرا باشد متوقف میشود. در غیر این صورت، فرآیند (پوسته) در حال اجرا در پنجره سیگنال قطع ارتباط (HANGUP) دریافت میکند، ساختار پنجره حذف میشود و screen (نمایشگر شما) به پنجرهٔ دیگری تغییر وضعیت میدهد. با نابود شدن آخرین پنجره، screen خارج میشود. پس از اجرای kill، screen به پنجرهای که پیشتر نمایش داده میشد جابهجا میشود.
نکته: کاربران Emacs هنگام حذف یک خط (killing a line) باید این دستور را به خاطر داشته باشند. توصیه میشود از "C-a" به عنوان کلید گریز (escape key) در screen استفاده نکنید یا دستور kill را به "C-a K" مقید نمایید.
نمایش مجدد آخرین محتوای خط پیام/وضعیت. این دستور زمانی مفید است که هنگام ظاهر شدن یک پیام مشغول تایپ کردن باشید، چرا که با فشردن یک کلید پیام ناپدید میشود (مگر اینکه ترمینال شما خط وضعیت سختافزاری داشته باشد). برای تنظیم دقیقتر به دستورات "msgwait" و "msgminwait" مراجعه کنید.
ایجاد یک چیدمان (layout) جدید. صفحه به یک ناحیهٔ کامل تغییر کرده و به یک پنجرهٔ خالی سوئیچ میشود. از اینجا میتوانید نواحی و پنجرههایی را که نمایش میدهند بر اساس نیاز خود بسازید. به چیدمان جدید کوچکترین عدد صحیح در دسترس، با شروع از صفر، اختصاص مییابد. میتوانید اختیاری عنوانی برای چیدمان جدید خود تعیین کنید. در غیر این صورت، عنوان پیشفرض "layout" را خواهد داشت. بعداً همیشه میتوانید با استفاده از دستور layout title عنوان را تغییر دهید.
حذف یا به عبارت دیگر پاک کردن چیدمان مشخصشده. میتوان شماره یا عنوان را مشخص کرد. بدون تعیین هیچکدام، screen چیدمان فعلی را حذف میکند.
حذف یک چیدمان تأثیری بر پنجرهها یا نواحی تنظیمشدهٔ شما نمیگذارد.
جابهجایی به چیدمان در دسترس بعدی.
جابهجایی به چیدمان در دسترس قبلی.
انتخاب چیدمان مورد نظر. میتوان شماره یا عنوان را مشخص کرد. بدون تعیین هیچکدام، screen پیامی نمایش داده و میپرسد کدام صفحه مورد نظر است. برای مشاهدهٔ چیدمانهای در دسترس، از دستور layout show استفاده کنید.
فهرست کردن شماره(ها) و عنوان(های) چیدمان(های) در دسترس روی خط پیام. چیدمان فعلی علامتگذاری میشود.
تغییر یا نمایش عنوان چیدمان فعلی. رشتهٔ ارائهشده برای نامگذاری چیدمان استفاده خواهد شد. بدون هیچ گزینهای، عنوان و شمارهٔ فعلی روی خط پیام نمایش داده میشود.
تغییر یا نمایش شمارهٔ چیدمان فعلی. عدد صحیح ارائهشده برای شمارهگذاری چیدمان استفاده خواهد شد. بدون هیچ گزینهای، شماره و عنوان فعلی روی خط پیام نمایش داده میشود.
تغییر یا نمایش چیدمانی که هنگام اتصال مجدد (reattach) باید به آن بازگشت. مقدار پیشفرض :last است که به screen میگوید به آخرین چیدمان استفادهشده درست قبل از قطع اتصال (detach) متصل شود. با مشخص کردن یک عنوان، میتوانید به screen دستور دهید بدون در نظر گرفتن اینکه در زمان قطع اتصال کدام چیدمان فعال بوده، به یک چیدمان خاص متصل شود. بدون هیچ گزینهای، چیدمان هدف برای اتصال مجدد در خط پیام نمایش داده خواهد شد.
به خاطر سپردن چیدمان فعلی نواحی. هنگام استفاده، screen چینش نواحی تقسیمشدهٔ عمودی و افقی را به خاطر میسپارد. این چینش زمانی که نشست screen مجدداً متصل شود یا از یک چیدمان دیگر به آن بازگردید، بازیابی میشود. در صورت پایان نشست یا بسته شدن فرآیند screen، چینشهای چیدمان از بین میروند. دستور layout dump میتواند در این موقعیت کمک کند. اگر شماره یا عنوانی ارائه شود، screen چینش آن چیدمان خاص را به خاطر خواهد سپرد. بدون هیچ گزینهای، screen چیدمان فعلی را به خاطر میسپارد.
ذخیرهسازی خودکار نواحی را میتوان با استفاده از دستور layout autosave انجام داد.
تغییر یا نمایش وضعیت ذخیرهسازی خودکار چیدمانها. مقدار پیشفرض on است؛ به این معنی که با جدا شدن (detach) screen یا تغییر آن به چیدمانی دیگر، آرایش ناحیهها و پنجرهها در زمان تغییر به خاطر سپرده شده و در بازگشت مجدد بازیابی میشود. اگر autosave روی off تنظیم شده باشد، آن آرایش تنها به آخرین ذخیرهسازی دستی (با استفاده از layout save) یا زمان ساخت اولیه چیدمان (یک ناحیه منفرد با یک پنجره) بازیابی خواهد شد. بدون مشخص کردن on یا off، وضعیت فعلی در خط پیام نمایش داده میشود.
نوشتن ترتیب تقسیمبندیهای (splits) انجامشده در چیدمان فعلی در یک فایل. این قابلیت برای بازآفرینی ترتیب ناحیههای استفادهشده در چیدمان فعلی کاربرد دارد. تنها چیدمان فعلی ثبت میشود. با وجود ثبت ترتیب ناحیهها، اندازه آن ناحیهها و اینکه کدام پنجرهها با کدام ناحیهها مطابقت دارند ثبت نمیشود. اگر هیچ نام فایلی مشخص نشود، نام پیشفرض layout-dump است که در همان دایرکتوری محل اجرای فرایند screen ذخیره میگردد. اگر فایل از قبل موجود باشد، layout dump اطلاعات را به انتهای آن فایل اضافه میکند (append). به عنوان مثال:
C-a : layout dump /home/user/.screenrc
چیدمان را در فایل .screenrc کاربر ذخیره کرده یا به انتهای آن میافزاید.
نمایش صفحه سلب مسئولیت و مجوز. این کار هر زمان که screen بدون هیچ گزینهای اجرا شود انجام میگیرد که معمولاً به اندازه کافی رخ میدهد. همچنین دستور startup_message را ببینید.
قفل کردن این نمایشگر. اجرای یک برنامه قفل صفحه (screenlock). برنامه Screen تا زمان پایان یافتن این برنامه هیچ کلید دستوری را نمیپذیرد. در این حین، فرایندهای درون پنجرهها ممکن است به کار خود ادامه دهند؛ زیرا پنجرهها در وضعیت «جداشده» (detached) قرار دارند. برنامه قفل صفحه را میتوان از طریق متغیر محیطی $LOCKPRG (که باید در شلی که screen از آن اجرا شده مقداردهی شده باشد) تغییر داد و این برنامه با uid و gid کاربر اجرا میشود.
هشدار: اگر شلهای دیگر را بدون قفل رها کنید و گذرواژهای روی screen تنظیم نکرده باشید، این قفل بیاثر خواهد بود: هر کسی میتواند به سادگی از طریق یک شل قفلنشده دوباره متصل شود (re-attach). این ویژگی را در واقع باید «lockterminal» نامید.
شروع/توقف نوشتن خروجی پنجره فعلی در فایلی به نام "screenlog.n" در دایرکتوری پیشفرض پنجره، که در آن n شماره پنجره فعلی است. این نام فایل را میتوان با دستور `logfile' تغییر داد. اگر هیچ پارامتری داده نشود، وضعیت لاگگیری جابهجا (toggle) میشود. اگر فایل از قبل وجود داشته باشد، لاگ نشست به محتوای قبلی فایل ضمیمه میشود. محتوای فعلی صفحه و محتوای تاریخچه اسکرول به عقب (scrollback) در لاگ نشست گنجانده نمیشوند. مقدار پیشفرض `off' است.
نامی را که فایلهای گزارش (log) دریافت میکنند تعیین میکند. مقدار پیشفرض "screenlog.%n" است. شکل دوم دستور، تعداد ثانیههایی را که screen پیش از تخلیه (flush) بافر فایل لاگ به سیستمفایل منتظر میماند، تغییر میدهد. مقدار پیشفرض ۱۰ ثانیه است.
افزودن یا حذف مدخل مربوط به پنجره فعلی در فایل پایگاه داده utmp. این کار وضعیت «ورود به سیستم» (logged in) پنجره را کنترل میکند. هنگامی که هیچ پارامتری داده نشود، وضعیت لاگین پنجره جابهجا (toggle) میشود. علاوه بر این تغییر وضعیت، داشتن کلیدهای مجزا برای «ورود» و «خروج» نیز بسیار راحت است؛ به عنوان مثال `bind I login on' و `bind O login off' این کلیدها را به C-a I و C-a O نگاشت میکنند. تنظیم پیشفرض (در config.h.in) برای screen که تحت suid-root اجرا میشود باید "on" باشد. از دستور "deflogin" برای تغییر وضعیت لاگین پیشفرض برای پنجرههای جدید استفاده کنید. هر دو دستور تنها زمانی موجود هستند که screen با پشتیبانی از utmp کامپایل شده باشد.
این دستور سازوکار برچسب زمان (time-stamp) فایل لاگ در screen را کنترل میکند. اگر برچسبهای زمانی "on" باشند، screen پس از دو دقیقه عدم فعالیت، رشتهای حاوی زمان فعلی را به فایل لاگ اضافه میکند. هنگامی که خروجی ادامه یابد و بیش از دو دقیقه دیگر گذشته باشد، برچسب زمانی دومی برای ثبت شروع مجدد خروجی اضافه میشود. میتوانید این مدت زمان انتظار (timeout) را با شکل دوم دستور تغییر دهید. شکل سوم برای سفارشیسازی رشته برچسب زمان استفاده میشود (به طور پیشفرض `-- %n:%t -- time-stamp -- %M/%d/%y %c:%s --\n').
به screen اعلام میکند که کاراکتر ورودی بعدی تنها باید در جدول کلیدهای مقید (bindkey) پیشفرض جستجو شود. همچنین "bindkey" را ببینید.
مشابه mapdefault، اما حتی در جدول پیشفرض bindkey نیز جستجو نمیکند.
تنظیم تایمر بینکاراکتری برای تشخیص توالی ورودی روی مهلت زمانی timeout میلیثانیه. مهلت زمانی پیشفرض ۳۰۰ میلیثانیه (300ms) است. اجرای maptimeout بدون هیچ آرگومانی تنظیمات فعلی را نمایش میدهد. همچنین "bindkey" را ببینید.
روشی برای تغییر نگاشت کلیدهای (keymap) مورد استفاده در حالت کپی/تاریخچه (copy/history). این رشته از جفتهای oldchar=newchar تشکیل شده که با `:' از یکدیگر جدا میشوند. مثال: رشته "B=^B:F=^F" کلیدهای `C-b' و `C-f' را به نگاشت سبک vi (اسکرول به بالا/پایین یک صفحه کامل) تغییر میدهد. اتفاقاً این نگاشت پیشفرض برای `B' و `F' است. دستور "markkeys h=^B:l=^F:$=^E" حالت را برای نگاشت به سبک emacs تنظیم میکند. اگر ترمینال شما کاراکترهایی ارسال میکند که باعث خروج ناخواسته از حالت کپی میشوند، این دستور میتواند با مقید کردن آن کاراکترها به عدم انجام هیچ عملیاتی (no-op) کمک کند. کاراکتر no-op علامت `@' است و به این صورت استفاده میشود: "markkeys @=L=H" در صورتی که دیگر نخواهید از دستورات `H' یا `L' استفاده کنید. همانطور که در این مثال نشان داده شده است، میتوان چندین کلید را در یک دستور واحد به یک عملکرد اختصاص داد.
درج کاراکتر دستوری (C-a) در جریان ورودی پنجره فعلی.
تغییر وضعیت پایش فعالیت (activity monitoring) پنجرهها. هنگامی که پایش روشن باشد و پنجره مربوطه به پسزمینه برود، با اولین نشانه از خروجی، پیام اعلان فعالیت را در خط وضعیت دریافت خواهید کرد و پنجره نیز در نمایش وضعیت پنجرهها با علامت `@' مشخص میشود. پایش در ابتدا برای تمام پنجرهها غیرفعال (off) است.
این دستور تعیین میکند که آیا screen کلیکهای ماوس را پایش کند یا خیر. هنگامی که این دستور فعال باشد، ناحیههایی که به روشهای مختلف تقسیم شدهاند را میتوان با اشاره ماوس و کلیک چپ روی آنها انتخاب کرد. بدون مشخص کردن on یا off، وضعیت فعلی نمایش داده میشود. وضعیت پیشفرض توسط دستور defmousetrack تعیین میشود.
مدت زمانی را تعیین میکند که screen هنگام نمایش یک پیام، نمایش پیام جدید را به تاخیر میاندازد. مقدار پیشفرض ۱ ثانیه است.
مدت زمانی را تعیین میکند که یک پیام نمایش داده میشود، در صورتی که screen با فعالیت دیگری دچار وقفه نشود. مقدار پیشفرض ۵ ثانیه است.
جابهجایی میان حالت تککاربره (singleuser) و چندکاربره (multiuser). عملکرد استاندارد screen به صورت تککاربره است. در حالت چندکاربره، از دستورات `acladd'، `aclchg'، `aclgrp' و `acldel' میتوان برای فعال کردن (و غیرفعال کردن) دسترسی سایر کاربران به این نشست screen استفاده کرد.
جابهجایی به پنجره بعدی. از این دستور میتوان به طور مکرر برای چرخش در فهرست پنجرهها استفاده کرد.
nonblock [ on | off | numsecs ]
به screen اعلام میکند که چگونه با رابطهای کاربری (نمایشگرها) که پذیرش خروجی را متوقف میکنند رفتار کند. این اتفاق زمانی رخ میدهد که کاربر ^S را فشار دهد یا اتصال TCP/مودم قطع شود اما سیگنال قطع (hangup) دریافت نشود. اگر nonblock روی off باشد (این مقدار پیشفرض است)، screen تا زمانی که نمایشگر مجدداً پذیرش خروجی را آغاز کند منتظر میماند. اگر nonblock روی on باشد، screen تا زمان سررسید مهلت زمانی صبر میکند (on معادل ۱ ثانیه در نظر گرفته میشود). اگر نمایشگر همچنان کاراکترها را دریافت نکند، screen آن را "blocked" (مسدودشده) تلقی کرده و ارسال کاراکتر به آن را متوقف میسازد. اگر در زمانی دیگر پذیرش کاراکترها از سر گرفته شود، screen قفل نمایشگر را باز کرده و محتوای بهروزرسانیشده پنجره را مجدداً نمایش میدهد.
تغییر شماره پنجره فعلی. اگر شماره دادهشده n از قبل توسط پنجره دیگری استفاده شده باشد، هر دو پنجره شمارههای خود را با یکدیگر معاوضه میکنند. اگر هیچ آرگومانی مشخص نشود، شماره پنجره فعلی (و عنوان آن) نمایش داده میشود. استفاده از `+' یا `-' شماره پنجره را به اندازه مقدار نسبی مشخصشده تغییر میدهد.
اگر بافر خروجی حاوی بایتهای بیشتری نسبت به حد مشخصشده باشد، دادههای بیشتری از پنجرهها خوانده نخواهد شد. مقدار پیشفرض ۲۵۶ است. اگر نمایشگر سریعی دارید (مانند xterm)، میتوانید آن را روی مقدار بالاتری تنظیم کنید. اگر هیچ آرگومانی مشخص نشود، تنظیمات فعلی نمایش داده میشود.
بستن و حذف تمام ناحیهها به جز ناحیه فعلی.
جابهجایی به پنجرهای که پیشتر نمایش داده شده بود. اگر این پنجره دیگر وجود نداشته باشد، other تأثیری مشابه next خواهد داشت.
تعیین میکند که آیا نمایشگر باید پس از جابهجایی به پنجره فعلی نوسازی (refresh) شود (مانند redisplay) یا خیر. این دستور تنها بر پنجره فعلی تأثیر میگذارد. برای اعمال فوری روی تمام پنجرهها، از دستور allpartial استفاده کنید. مقدار پیشفرض البته `off' است. این مقدار پیشفرض ثابت است، زیرا در حال حاضر هیچ دستوری تحت عنوان defpartial وجود ندارد.
یک گذرواژه رمزگذاریشده (crypted) را در فایل ".screenrc" خود قرار دهید تا screen هر زمان که فردی تلاش کرد نشست جداشده را از سر بگیرد، آن را درخواست کند. این قابلیت زمانی مفید است که برنامههای دارای دسترسی ویژه تحت screen در حال اجرا هستند و میخواهید از نشست خود در برابر تلاشهای اتصال مجدد توسط کاربر دیگری که خود را با uid شما جا میزند (مانند هر کاربر ارشد / superuser) محافظت کنید. اگر هیچ گذرواژه رمزگذاریشدهای مشخص نشود، screen دو بار درخواست تایپ گذرواژه میکند و فرم رمزگذاریشده آن را در بافر چسباندن (paste buffer) قرار میدهد. مقدار پیشفرض `none' است که بررسی گذرواژه را غیرفعال میکند.
نوشتن محتویات (الحاقشده) ثباتهای (registers) مشخصشده در صف ورودی استاندارد (stdin) پنجره فعلی. ثبات '.' به عنوان بافر چسباندن (paste buffer) تلقی میشود. اگر هیچ پارامتری داده نشود، از کاربر خواسته میشود یک ثبات تکی را برای چسباندن انتخاب کند. بافر چسباندن را میتوان با دستورات copy، history و readbuf پر کرد. سایر ثباتها را میتوان با دستورات register، readreg و paste پر کرد. اگر paste با آرگومان دوم فراخوانی شود، محتوای ثباتهای مشخصشده به جای پنجره، در ثبات مقصد نامبرده چسبانده میشود. اگر از '.' به عنوان آرگومان دوم استفاده شود، بافر چسباندن نمایشگر مقصد خواهد بود. توجه داشته باشید که paste از طیف گستردهای از منابع استفاده میکند: هر زمان که آرگومان دوم مشخص شود، نیازی به پنجره فعلی نیست. هنگامی که مشخصات منبع تنها شامل ثباتها باشد (نه بافر چسباندن)، نیازی به وجود نمایشگر فعلی (ترمینال متصل) نیست، زیرا ثباتها یک منبع سراسری هستند. بافر چسباندن برای هر کاربر یک بار وجود دارد.
به screen دستور میدهد تا اطلاعات قلم (font) را در بافر چسباندن بگنجاند. حالت پیشفرض این است که این کار انجام نشود. این دستور به ویژه برای فونتهای چندکاراکتری مانند کانجی (kanji) مفید است.
بازگشایی مجدد خط ترمینال پنجره و ارسال شرایط شکست (break condition). دستور `break' را ببینید.
جدا شدن اجباری (Power detach). اساساً مشابه detach است، اما یک سیگنال HANGUP نیز به فرایند والد screen ارسال میکند. احتیاط: اگر screen از پوسته ورود به سیستم (login-shell) شما اجرا شده باشد، این کار منجر به خروج از سیستم (logout) خواهد شد.
message تعیینشده در اینجا، هر زمان که یک «Power detach» انجام شود نمایش داده میشود. این پیام میتواند به عنوان جایگزینی برای پیام خروج از سیستم یا برای بازنشانی باود ریت (baud rate) و غیره استفاده شود. بدون پارامتر، پیام فعلی نمایش داده میشود.
جابهجایی به پنجره با شماره کوچکتر بعدی. این دستور را میتوان به طور مکرر برای چرخش در فهرست پنجرهها استفاده کرد.
اگر cmd یک رشته خالی نباشد، در صورت تشخیص توالی چاپ ansi یعنی ESC [ 5 i, برنامه screen از قابلیتهای ترمینال "po/pf" استفاده نخواهد کرد، بلکه خروجی را از طریق لوله (pipe) به cmd میفرستد. این دستور معمولاً باید دستوری مانند "lpr" یا "'cat > /tmp/scrprint'" باشد. دستور printcmd بدون دستور، تنظیمات فعلی را نمایش میدهد. توالی ansi ESC [ 4 i چاپ را پایان داده و لوله را میبندد.
هشدار: در استفاده از این دستور دقت کنید! اگر کاربران دیگر به ترمینال شما دسترسی نوشتن داشته باشند، میتوانند دستورات چاپ را اجرا کنند.
محتوای ثبات (register) مشخصشده را به صف ورودی screen تزریق میکند. اگر هیچ آرگومانی داده نشود، نام ثبات از شما پرسیده میشود. متن به گونهای تجزیه میشود که گویی از صفحهکلید کاربر تایپ شده است. این دستور میتواند برای اتصال چند عمل به یک کلید واحد استفاده شود.
تمام پنجرهها را میبندد و به اجرای screen پایان میدهد. توجه داشته باشید که در ترمینالهای سبک VT100 کلیدهای C-4 و C-\ یکسان هستند. این امر کلیدهای میانبر پیشفرض را خطرناک میکند: هنگام انتخاب پنجره شماره ۴ دقت کنید که C-a C-4 را تایپ نکنید. برای حذف یک کلید میانبر از دستور bind خالی (مانند "bind '^\'") استفاده کنید.
محتوای فایل مشخصشده را در بافر چسباندن (paste buffer) میخواند. میتوانید از طریق گزینه -e کدگذاری (encoding) فایل را به screen اعلام کنید. اگر فایلی مشخص نشود، از نام فایل screen-exchange استفاده میشود. همچنین دستور bufferfile را ببینید.
بسته به تعداد آرگومانها، یکی از دو کار زیر را انجام میدهد: با صفر یا یک آرگومان، محتوای بافر چسباندن را در ثبات مشخصشده یا وارد شده در اعلان تکرار میکند. با دو آرگومان، محتوای فایل نامبرده را درون ثبات میخواند، درست همانطور که readbuf فایل screen-exchange را در بافر چسباندن میخواند. میتوانید با گزینه -e کدگذاری فایل را به screen اعلام کنید. مثال زیر فایل گذرواژه سیستم را در پنجره screen میچسباند (با استفاده از ثبات p، که یک نسخه در آن باقی میماند):
C-a : readreg p /etc/passwd C-a : paste p
نمایش مجدد پنجره فعلی. این کار برای دریافت بازترسیم کامل در حالت بازترسیم جزئی لازم است.
- register [-eencoding]key-string
ذخیره string مشخصشده در ثبات key. کدگذاری رشته را میتوان از طریق گزینه -e مشخص کرد. همچنین دستور "paste" را ببینید.
حذف و بستن ناحیه (region) فعلی. اگر فقط یک ناحیه وجود داشته باشد، این دستور هیچ کاری انجام نمیدهد (no-op).
فایل screen-exchange استفادهشده توسط دستورات writebuf و readbuf را حذف (unlink) میکند.
نحوه نمایش عنوان پنجرههایی که پرچمهای monitor یا bell در caption، hardstatus یا windowlist آنها تنظیم شده است را در screen تغییر میدهد. برای ساختار تغییردهندهها (modifiers) به فصل "STRING ESCAPES" مراجعه کنید. مقدار پیشفرض برای monitor در حال حاضر "=b " (توپر، رنگهای فعال)، برای bell مقدار "=ub " (زیرخط، توپر و رنگهای فعال) و برای silence مقدار "=u " است.
بازنشانی ترمینال مجازی به مقادیر اولیه هنگام روشن شدن ("power-on"). زمانی مفید است که تنظیمات نامتعارف (مانند نواحی اسکرول یا مجموعهنویسههای گرافیکی) از یک برنامه به جا مانده باشد.
- resize
- [-h|-v|-b|-l|-p] [[+|-] n[%] |=|max|min|_|0]
تغییر اندازه ناحیه فعلی. بسته به ترتیب تقسیمبندیها (splits)، فضا از نواحی اطراف کسر شده یا به آنها اضافه میشود. گزینههای موجود برای تغییر اندازه عبارتند از: `-h' (افقی)، `-v' (عمودی)، `-b' (هر دو)، `-l' (محلی برای لایه) و `-p' (عمود بر جهت). تغییر اندازه افقی، عرض ناحیه را کم یا زیاد میکند، عمودی ارتفاع را کم یا زیاد میکند و هر دو از هر دو بعد اندازه را تغییر میدهد. محلی و عمود بر جهت شبیه به افقی و عمودی هستند، اما نحوه تقسیم ناحیه را در نظر میگیرند. اگر آخرین تقسیم یک ناحیه افقی بوده باشد، تغییر اندازه محلی مانند تغییر اندازه عمودی عمل خواهد کرد. اگر آخرین تقسیم یک ناحیه عمودی بوده باشد، تغییر اندازه محلی مانند تغییر اندازه افقی عمل میکند. تغییر اندازه عمود بر جهت، برعکس تغییر اندازه محلی عمل میکند. اگر گزینهای مشخص نشود، محلی (local) پیشفرض است.
تعداد خطوط برای افزودن یا کاستن را میتوان به چند روش مختلف بیان کرد. با مشخص کردن یک عدد n به تنهایی، اندازه ناحیه به همان مقدار مطلق تغییر میکند. میتوانید با افزودن یک مثبت «+» یا منفی «-» به مقدار، یک مقدار نسبی را تعیین کنید، مانند افزودن +n خط یا حذف -n خط. تغییر اندازه را میتوان با افزودن علامت درصد «%» در انتها به صورت درصد مطلق یا نسبی نیز بیان کرد. استفاده از صفر «0» مترادف `min' و استفاده از زیرخط «_» مترادف `max' است.
چند مثال:
- resize +N
- افزایش اندازه ناحیه فعلی به مقدار N
- resize -N
- کاهش اندازه ناحیه فعلی به مقدار N
- resize N
- تنظیم اندازه ناحیه فعلی روی N
- resize 20%
- تنظیم اندازه ناحیه فعلی روی ۲۰٪ از اندازه اصلی
- resize +20%
- افزایش اندازه ناحیه فعلی به میزان ۲۰٪
- resize -b =
- برابر کردن اندازه تمام پنجرهها
- resize max
- بزرگنمایی کامل (بیشینه کردن) ناحیه فعلی
- resize min
- کمینه کردن ناحیه فعلی
بدون هرگونه آرگومان، screen نحوه تغییر اندازه ناحیه فعلی را از شما میپرسد.
اگر میخواهید حداقل اندازهای را که یک ناحیه میتواند داشته باشد محدود کنید، به "focusminsize" مراجعه نمایید.
ایجاد یک پنجره جدید. گزینههای کنترل جریان (-f، -fn و -fa)، گزینه عنوان (نام مستعار) (-t)، گزینههای ورود (-l و -ln)، گزینه نوع ترمینال (-T <term>)، فلگ تمام قابلیتها (-a) و گزینه بافر اسکرولبک (-h <num>) را میتوان با هر دستور مشخص کرد. گزینه (-M) نظارت (monitoring) را برای این پنجره فعال میکند. گزینه (-L) ثبت لاگ خروجی (logging) را برای این پنجره فعال میکند. اگر یک عدد اختیاری n در محدوده 0..MAXWIN-1 داده شود، شماره پنجره n به پنجره تازه ایجادشده اختصاص مییابد (یا اگر این شماره قبلاً استفاده شده باشد، اولین شماره در دسترس بعدی). اگر دستوری بعد از "screen" مشخص شده باشد، این دستور (با آرگومانهای ارائهشده) در پنجره اجرا میشود؛ در غیر این صورت، یک پوسته ایجاد میگردد. اگر //group مشخص شود، یک پنجره از نوع ظرف (container) ایجاد میشود که پنجرههای دیگر میتوانند درون آن ایجاد شوند.
بنابراین، اگر فایل ".screenrc" شما شامل خطوط زیر باشد:
# example for .screenrc: screen 1 screen -fn -t foobar -L 2 telnet foobar
برنامه screen یک پنجره پوسته (در پنجره شماره ۱) و یک پنجره با اتصال TELNET به دستگاه foobar (بدون کنترل جریان با عنوان "foobar" در پنجره شماره ۲) ایجاد کرده و یک فایل لاگ ("screenlog.2") از نشست telnet مینویسد. توجه داشته باشید که برخلاف نسخههای قبلی screen، هنگامی که دستورات "screen" در فایل ".screenrc" شما گنجانده شده باشند، هیچ پنجره پیشفرض اضافی ایجاد نمیشود. هنگامی که مقداردهی اولیه کامل شد، screen به آخرین پنجره مشخصشده در فایل .screenrc شما میرود، یا در صورت عدم وجود، پنجره پیشفرض شماره ۰ را باز میکند.
برنامه Screen برخی از قابلیتهای "cu" و "telnet" را در خود به صورت توکار دارد. همچنین فصل "WINDOW TYPES" را ببینید.
تنظیم اندازه بافر اسکرولبک (scrollback buffer) برای پنجرههای فعلی به num خط. مقدار پیشفرض اسکرولبک ۱۰۰ خط است. همچنین دستور "defscrollback" را ببینید و از "info" برای مشاهده تنظیمات فعلی استفاده کنید. برای دسترسی و استفاده از محتویات بافر اسکرولبک، از دستور "copy" استفاده کنید.
جابهجایی به پنجره مشخصشده توسط WindowID. این شناسه میتواند پیشوندی از عنوان پنجره (نام الفبایی-عددی پنجره) یا شماره پنجره باشد. پارامتر اختیاری است و در صورت حذف، شناسه از شما پرسیده میشود. هنگامی که پنجره جدیدی ایجاد میشود، اولین شماره در دسترس به این پنجره اختصاص مییابد. بنابراین، اولین پنجره را میتوان با "select 0" فعال کرد. تعداد پنجرهها توسط پارامتر پیکربندی MAXWIN (که به طور پیشفرض ۱۰۰ است) تعیین میشود. دو WindowID ویژه وجود دارد: "-" پنجره خالی داخلی را انتخاب میکند و "." پنجره فعلی را انتخاب میکند. مورد دوم در صورت استفاده به همراه گزینه "-X" در screen کاربردی است.
تغییر نام نشست (session) فعلی. توجه داشته باشید که در "screen -list"، نام همراه با شناسه فرایند (process-id) در ابتدای آن نمایش داده میشود. اگر آرگومان "name" حذف شود، نام این نشست نمایش داده میشود. احتیاط: متغیر محیطی $STY در پوستههای از قبل موجود همچنان نام قدیمی را نشان میدهد. این ممکن است باعث سردرگمی شود. استفاده از این دستور عموماً توصیه نمیشود. اگر میخواهید نام یک نشست جدید را تعیین کنید، از گزینه خط فرمان "-S" استفاده نمایید. مقدار پیشفرض از نامهای tty و میزبان ساخته میشود.
تنظیم متغیر محیطی var روی مقدار string. اگر تنها var مشخص شده باشد، از کاربر خواسته میشود تا مقداری را وارد کند. اگر هیچ پارامتری مشخص نشده باشد، از کاربر هم برای متغیر و هم برای مقدار درخواست میشود. این محیط توسط تمام پوستههایی که پس از آن فورک (fork) میشوند به ارث برده میشود.
معمولاً screen از نشستها و گروههای فرایندی متفاوتی برای پنجرهها استفاده میکند. اگر setsid روی off تنظیم شود، این کار دیگر انجام نمیشود و تمام پنجرهها در همان گروه فرایندی فرایند پسزمینه screen قرار خواهند گرفت. این کار همچنین کنترل شغل (job-control) را مختل میکند، بنابراین مراقب باشید. البته حالت پیشفرض on است. این دستور احتمالاً فقط در شرایط نادر مفید است.
تنظیم دستوری که برای ایجاد یک پوسته جدید استفاده میشود. این مقدار، متغیر محیطی $SHELL را بازنویسی (override) میکند. این مورد زمانی مفید است که بخواهید یک بهبوددهنده tty اجرا کنید که انتظار دارد برنامه مشخصشده در $SHELL را اجرا کند. اگر دستور با یک کاراکتر '-' شروع شود، پوسته به عنوان یک پوسته ورود به سیستم (login-shell) راهاندازی میشود. پوستههای معمولی وقتی به عنوان login-shell راهاندازی نشوند، فقط حداقل مقداردهی اولیه را انجام میدهند. برای مثال، Bash فایل "~/.bash_profile" شما را نمیخواند مگر اینکه یک login-shell باشد.
تنظیم عنوان برای تمام پوستههای ایجادشده در هنگام راهاندازی یا توسط دستور C-A C-c. برای جزئیات بیشتر درباره اینکه عنوان چیست، به بحث با عنوان "TITLES (naming windows)" مراجعه کنید.
نظارت بر سکوت (silence monitoring) پنجرهها را تغییر وضعیت میدهد (فعال/غیرفعال). هنگامی که سکوت روشن است و پنجره مربوطه به پسزمینه منتقل میشود، پس از یک دوره مشخص عدم فعالیت (سکوت)، پیام اعلان سکوت را در خط وضعیت دریافت خواهید کرد. مهلت پیشفرض را میتوان با دستور `silencewait' یا با تعیین تعداد ثانیهها به جای `on' یا `off' تغییر داد. سکوت در ابتدا برای تمام پنجرهها خاموش است.
تعیین مدت زمانی که تمام پنجرههای تحت نظارت برای سکوت باید پیش از نمایش پیام منتظر بمانند. مقدار پیشفرض ۳۰ ثانیه است.
sleep num
این دستور اجرای یک فایل .screenrc را به مدت num ثانیه متوقف میکند. فعالیت صفحهکلید به این توقف پایان میدهد. میتوان از آن برای دادن فرصت به کاربران جهت خواندن پیامهای خروجی دستور "echo" استفاده کرد.
تعیین سرعتی که متن توسط دستور چسباندن ("C-a ]") در پنجره جاری درج میشود. اگر مقدار slowpaste غیرصفر باشد، متن نویسهبهنویسه نوشته میشود. screen پس از نوشتن هر نویسه تکی، مکثی به اندازه msec میلیثانیه ایجاد میکند تا به برنامه اجازه پردازش ورودی داده شود. فقط زمانی از slowpaste استفاده کنید که سیستم زیربنایی شما هنگام چسباندن حجم بالایی از متن، مشکلات کنترل جریان (flow control) را نشان دهد.
مرتبسازی پنجرهها به ترتیب الفبایی عناوین پنجرهها.
خواندن و اجرای دستورات از پرونده file. دستورات source میتوانند تا حداکثر ۱۰ سطح بازگشت به صورت تودرتو اجرا شوند. اگر file یک مسیر مطلق نباشد و screen هماکنون در حال پردازش یک دستور source دیگر باشد، پیش از دایرکتوری جاری screen، از دایرکتوری والد پرونده دستوری در حال اجرا برای یافتن پرونده جدید استفاده میشود.
توجه داشته باشید که دستورات termcap/terminfo/termcapinfo فقط هنگام راهاندازی و اتصال مجدد (reattach) کار میکنند، بنابراین باید از طریق فایلهای پیشفرض screenrc به آنها دسترسی پیدا کرد تا مؤثر باشند.
این دستور منسوخ شده است. به جای آن به "rendition so" مراجعه کنید.
تقسیم ناحیه جاری به دو ناحیه جدید. تمام نواحی روی صفحه نمایش برای باز کردن جا برای ناحیه جدید تغییر اندازه میدهند. پنجره خالی در ناحیه جدید نمایش داده میشود. حالت پیشفرض، ایجاد یک تقسیم افقی است که نواحی جدید را در بالا و پایین یکدیگر قرار میدهد. استفاده از '-v' یک تقسیم عمودی ایجاد میکند و باعث میشود نواحی جدید در کنار یکدیگر ظاهر شوند. برای حذف نواحی از دستور "remove" یا "only" استفاده کنید. برای جابجایی میان نواحی از "focus" استفاده کنید.
هنگامی که یک ناحیه برعکس نحوه تقسیم قبلی خود تقسیم میشود (یعنی ابتدا عمودی و سپس افقی یا ابتدا افقی و سپس عمودی)، یک لایه جدید ایجاد میشود. این لایه برای گروهبندی نواحی که به شکل یکسان تقسیم شدهاند استفاده میشود. به طور معمول، به عنوان یک کاربر، نیازی به دیدن یا نگرانی در مورد لایهها ندارید، اما آنها بر رفتار برخی دستورات ("focus" و "resize") تأثیر میگذارند.
در پیادهسازی فعلی screen، پیمایش دادهها در یک ناحیه تقسیمشده عمودی بسیار کندتر از ناحیه تقسیمنشده به نظر میرسد. اگر نیاز به استفاده از دستورات سیستمی مانند cat یا tail -f دارید، این موضوع باید مد نظر قرار گیرد.
انتخاب اینکه آیا میخواهید اعلان حق نشر را هنگام راهاندازی ببینید یا خیر. همانطور که احتمالاً متوجه شدهاید، حالت پیشفرض 'on' است.
status [ top | up | down | bottom ] [ left | right ]
پنجره وضعیت به طور پیشفرض در گوشه پایین سمت چپ قرار دارد. این دستور میتواند پیامهای وضعیت را به هر گوشهای از صفحه منتقل کند. top مشابه up و down مشابه bottom است.
قراردادن رشته string در بافر ورودی پنجره جاری. این کار مشابه دستور "paste" است اما سربار بسیار کمتری دارد. بدون پارامتر، screen برای وارد کردن یک رشته اعلان میدهد. نمیتوانید بافرهای بزرگ را با دستور "stuff" بچسبانید. این دستور بیش از همه برای نگاشت کلیدها (key bindings) مفید است. همچنین به "bindkey" مراجعه کنید.
تغییر کاربر یک صفحه نمایش. این دستور تمام پارامترهای حذفشده را درخواست میکند. اگر گذرواژهها به عنوان پارامتر مشخص شوند، باید به صورت رمزگذارینشده (un-crypted) تعیین گردند. اولین گذرواژه با پایگاهداده passwd سیستم مطابقت داده میشود و دومین گذرواژه با گذرواژه screen که توسط دستورات "acladd" یا "password" تنظیم شده مقایسه میشود. دستور "Su" ممکن است برای مدیر screen جهت آزمایش پیکربندیهای چندکاربره مفید باشد. هنگامی که احراز هویت شکست بخورد، کاربر تنها به دستورات در دسترس برای کاربر nobody. دسترسی خواهد داشت. این دستورات عبارتند از: "detach"، "license"، "version"، "help" و "displays".
تعلیق screen. در حالی که screen معلق است، پنجرهها در حالت 'detached' قرار میگیرند. این ویژگی متکی به توانایی شل در کنترل وظایف (job control) است.
در محیط هر پنجرهای که screen باز میکند، متغیر TERM$ به طور پیشفرض روی "screen" تنظیم میشود. اما هنگامی که هیچ توصیفی برای "screen" در پایگاهداده termcap یا terminfo محلی نصب نشده باشد، میتوانید TERM$ را برای مثال روی "vt100" تنظیم کنید. این کار آسیب چندانی وارد نمیکند، چرا که screen با VT100/ANSI سازگار است. استفاده از دستور "term" برای اهداف غیرپیشفرض توصیه نمیشود. به این معنی که ممکن است فردی بخواهد تنظیمات خاص TERM$ (مانند vt100) را برای دستور بعدی "screen rlogin othermachine" مشخص کند. به جای تنظیم و بازنشانی مقدار پیشفرض، از دستور "screen -T vt100 rlogin othermachine" استفاده کنید.
- termcap term terminal-tweaks[window-tweaks]
- terminfo term terminal-tweaks[window-tweaks]
- termcapinfo term terminal-tweaks[window-tweaks]
از این دستور برای تغییر ورودی termcap ترمینال خود بدون نیاز به دردسرهای مربوط به ساخت یک ورودی termcap سفارشی استفاده کنید. علاوه بر این، میتوانید به صورت اختیاری termcap تولیدشده برای پنجرهها را سفارشیسازی کنید. باید این دستورات را در یکی از فایلهای راهاندازی screenrc قرار دهید، زیرا پس از بوت شدن شبیهساز ترمینال، دیگر بیمعنی خواهند بود.
اگر سیستم شما به جای termcap از پایگاهداده terminfo استفاده میکند، screen دستور 'terminfo' را که اثراتی مشابه دستور 'termcap' دارد تشخیص میدهد. دو دستور جداگانه ارائه شده است، زیرا تفاوتهای نحوی ظریفی وجود دارد؛ به عنوان مثال هنگامی که درونیابی پارامترها (با استفاده از '%') لازم است. توجه داشته باشید که نامهای termcap قابلیتها باید همراه با دستور 'terminfo' استفاده شوند.
در بسیاری از موارد که آرگومانها در هر دو ساختار نحوی terminfo و termcap معتبر هستند، میتوانید از دستور 'termcapinfo' استفاده کنید که تنها یک میانبر برای یک جفت دستور 'termcap' و 'terminfo' با آرگومانهای یکسان است.
آرگومان اول مشخص میکند که کدام ترمینال(ها) باید تحت تأثیر این تعریف قرار گیرند. میتوانید نامهای چند ترمینال را با جدا کردن آنها توسط '|' مشخص کنید. از '*' برای مطابقت با همه ترمینالها و از 'vt*' برای مطابقت با تمام ترمینالهایی که با "vt" شروع میشوند استفاده کنید.
هر آرگومان tweak شامل یک یا چند تعریف termcap (جدا شده با ':') است که باید در ابتدای ورودی مناسب termcap درج شود تا آن را بهبود بخشد یا مقادیر موجود را بازنویسی کند. اولین tweak ترمکپ ترمینال شما را تغییر میدهد و شامل تعاریفی است که ترمینال شما برای انجام برخی عملکردها استفاده میکند. برای دستنخورده ماندن آن، یک رشته تهی مشخص کنید (مانند ''). دومین tweak (اختیاری) termcap تمام پنجرهها را تغییر میدهد و باید شامل تعاریفی باشد که screen درک میکند (به بخش "VIRTUAL TERMINAL" مراجعه کنید).
چند مثال:
- termcap xterm* LP:hs@
به screen اطلاع میدهد که تمام ترمینالهایی که با 'xterm' شروع میشوند دارای حاشیههای خودکار محکم (firm auto-margins) هستند که اجازه میدهند آخرین موقعیت روی صفحه بهروزرسانی شود (LP)، اما واقعاً خط وضعیت ندارند (بدون 'hs' - افزودن '@' برای غیرفعال کردن ورودیها). توجه داشته باشید که ما قابلیت 'LP' را برای تمام نامهای ترمینالی که با "vt" شروع میشوند فرض میکنیم، اما فقط در صورتی که دستور termcap را برای آن ترمینال مشخص نکنید.
termcap vt* LP
termcap vt102|vt220 Z0=\E[?3h:Z1=\E[?3l
قابلیت 'LP' را برای تمام ترمینالهایی که با 'vt' شروع میشوند مشخص میکند، و خط دوم نیز در صورتی که ترمینال VT102 یا VT220 باشد توالیهای فرار را برای جابجایی به (Z0) و خروج از (Z1) حالت ۱۳۲ نویسه در هر خط اضافه میکند. (برای استفاده از دستورات تغییر عرض باید Z0 و Z1 را در termcap خود مشخص کنید.)
- termcap vt100 "" l0=PF1:l1=PF2:l2=PF3:l3=PF4
این دستور termcap ترمینال vt100 شما را دستنخورده باقی میگذارد و برچسبهای کلیدهای تابعی را به ورودی termcap هر پنجره اضافه میکند.
- termcap h19|z19 am@:im=\E@:ei=\EO dc=\E[P
یک termcap برای h19 یا z19 میگیرد و حاشیههای خودکار (am@) را خاموش میکند و قابلیتهای حالت درج (im) و پایان درج (ei) را فعال میکند (نویسه '@' در رشته 'im' پس از '=' قرار دارد، بنابراین بخشی از رشته است). قرار دادن تعاریف 'im' و 'ei' در termcap ترمینال شما باعث میشود screen به طور خودکار قابلیت درج نویسه را در termcap هر پنجره اعلام کند. هر پنجره همچنین قابلیت حذف نویسه (dc) را به termcap خود اضافه میکند، که screen آن را به یک بهروزرسانی خطی برای ترمینال ترجمه خواهد کرد (ما وانمود میکنیم که از حذف نویسه پشتیبانی نمیکند).
اگر مایلید ورودی termcap هر پنجره را به طور کامل مشخص کنید، باید متغیر SCREENCAP$ را قبل از اجرای screen تنظیم کنید. برای اطلاعات بیشتر درباره تعاریف termcap، به بخش "VIRTUAL TERMINAL" در این راهنما و صفحه راهنمای termcap(5) مراجعه کنید.
تنظیم نام پنجره جاری به windowtitle. اگر نامی مشخص نشود، screen برای وارد کردن آن اعلان میدهد. این دستور در نسخههای قبلی با عنوان 'aka' شناخته میشد.
فعالسازی پشتیبانی از رنگ واقعی (truecolor). در حال حاضر تشخیص خودکار پشتیبانی از truecolor به صورت مطمئن امکانپذیر نیست، بنابراین فعال کردن آن به عهده کاربر گذاشته شده است. مقدار پیشفرض off است. ترمینالهای شناختهشدهای که ممکن است از آن پشتیبانی کنند عبارتند از: iTerm2، Konsole و st. ترمینال Xterm شامل پشتیبانی از توالیهای فرار truecolor است اما آنها را دوباره به فضای رنگی نمایهشده ۲۵۶ رنگ تبدیل میکند.
لغو تمام نگاشتهای کلید. این کار میتواند زمانی مفید باشد که screen صرفاً به خاطر قابلیتهای جدا شدن (detach) استفاده میشود، مانند زمانی که اجازه داده میشود یک برنامه کنسول به عنوان یک دیمن (daemon) اجرا شود. اگر به هر دلیلی پس از این نیاز به نگاشت دستورات باشد، از 'screen -X' استفاده کنید.
حذف مقدار یک متغیر محیطی.
تغییر کدگذاری مورد استفاده در پنجره جاری. اگر utf8 فعال باشد، رشتههای ارسالی به پنجره با کدگذاری UTF-8 خواهند بود و بالعکس. حذف پارامتر، این تنظیم را تغییر وضعیت (toggle) میدهد. اگر پارامتر دوم داده شود، کدگذاری صفحه نمایش نیز تغییر میکند (این کار ترجیحاً باید با گزینه "-U" در screen انجام شود). همچنین به "defutf8" که تنظیم پیشفرض پنجره جدید را تغییر میدهد، مراجعه کنید.
تنظیم زنگ بصری (visual bell) برای این پنجره. حذف پارامتر، وضعیت تنظیم را تغییر میدهد. اگر vbell فعال باشد اما ترمینال شما از زنگ بصری پشتیبانی نکند، هنگام دریافت نویسه زنگ (G^)، یک 'vbell-message' در خط وضعیت نمایش داده میشود. پشتیبانی ترمینال از زنگ بصری توسط متغیر termcap به نام 'vb' تعریف میشود (در terminfo: به نام 'flash').
به طور پیشفرض، vbell خاموش است و بنابراین زنگ صوتی استفاده میشود. همچنین به 'bell_msg' مراجعه کنید.
تنظیم پیام زنگ بصری. اگر پنجره یک نویسه زنگ (G^) دریافت کند، vbell روی "on" تنظیم شده باشد، اما ترمینال از زنگ بصری پشتیبانی نکند، message در خط وضعیت چاپ میشود. پیام پیشفرض "Wuff, Wuff!!" است. بدون پارامتر، پیام فعلی نمایش داده میشود.
تعیین تاخیر بر حسب ثانیه پس از هر بار نمایش پیام زنگ بصری screen. مقدار پیشفرض ۱ ثانیه است.
اگر verbose فعال باشد، هر زمان که پنجرهای ایجاد شود (یا از حالت زامبی احیا گردد)، نام دستور نمایش داده میشود. مقدار پیشفرض off است. بدون پارامتر، تنظیم فعلی نمایش داده میشود.
چاپ نسخه فعلی و تاریخ کامپایل در خط وضعیت.
نوشتن یک پیام برای تمام صفحههای نمایش. این پیام در خط وضعیت ترمینال ظاهر خواهد شد.
تغییر عرض پنجره بین ۸۰ و ۱۳۲ ستون یا تنظیم آن روی cols ستون در صورت مشخص شدن آرگومان. این ویژگی نیازمند یک پایانه با قابلیت پشتیبانی و ورودیهای termcap با عنوان "Z0" و "Z1" است. برای اطلاعات بیشتر به دستور "termcap" مراجعه کنید. همچنین در صورت تمایل به تغییر هر دو مقدار، میتوانید ارتفاع جدیدی را نیز مشخص کنید. گزینه -w به screen اعلام میکند اندازه نمایشگر را بدون تغییر باقی بگذارد و فقط اندازه پنجره را تنظیم کند؛ -d برعکس این عمل میکند.
نمایش تمام پنجرهها در یک جدول جهت انتخاب بصری پنجره. اگر screen درون یک گروه پنجره باشد، screen از گروه خارج شده و سپس پنجرههای موجود در آن گروه را نمایش میدهد. در صورت ارائه گزینه -b، برنامه screen قبل از نمایش فهرست به یک پنجره خالی تغییر وضعیت میدهد تا پنجره فعلی نیز قابل انتخاب باشد. گزینه -m ترتیب پنجرهها را تغییر میدهد؛ به جای مرتبسازی بر اساس شماره پنجرهها، screen از فهرست داخلی پنجرههای اخیراً استفادهشده (MRU) استفاده میکند. گزینه -g پنجرههای درون هر گروه در آن سطح و سطوح پایینتر را نمایش میدهد.
کلیدهای زیر برای پیمایش در "windowlist" استفاده میشوند:
| k، C-p یا up | یک خط به بالا رفتن. |
| j، C-n یا down | یک خط به پایین رفتن. |
| C-g یا escape | خروج از windowlist. |
| C-a یا home | رفتن به خط اول. |
| C-e یا end | رفتن به خط آخر. |
| C-u یا C-d | نیم صفحه به بالا یا پایین رفتن. |
| C-b یا C-f | یک صفحه کامل به بالا یا پایین رفتن. |
| 0..9 | رفتن به خط انتخابشده با کلیدهای عددی. |
| mouseclick | رفتن به خط انتخابشده. زمانی در دسترس است که "mousetrack" روی "on" تنظیم شده باشد |
| / | جستجو. |
| n | تکرار جستجو در جهت رو به جلو. |
| N | تکرار جستجو در جهت رو به عقب. |
| m | تغییر وضعیت MRU. |
| g | تغییر وضعیت تودرتویی گروه. |
| a | نمای همه پنجرهها. |
| C-h یا backspace | خروج از گروه. |
| , | جابهجایی شماره با پنجره قبلی. |
| . | جابهجایی شماره با پنجره بعدی. |
| K | بستن (Kill) آن پنجره. |
| space یا enter | انتخاب آن پنجره. |
قالب جدول را میتوان با گزینههای string و title تغییر داد؛ عنوان به عنوان سربرگ جدول نمایش داده میشود، در حالی که خطوط با استفاده از تنظیمات string ساخته میشوند. مقدار پیشفرض برای عنوان "Num Name%=Flags" و برای خطوط "%3n %t%=%f" است. برای کدهای بیشتر (مانند تنظیمات رنگ) به فصل "STRING ESCAPES" مراجعه کنید.
"Windowlist" برای نمایش به ناحیهای با حداقل اندازه ۱۰ کاراکتر عرض و ۶ کاراکتر ارتفاع نیاز دارد.
از خط پیام برای نمایش فهرستی از تمام پنجرهها استفاده میکند. هر پنجره با شماره و نام فرایندی که در آن پنجره آغاز شده است (یا عنوان آن) فهرست میشود؛ پنجره فعلی با «*» مشخص میشود؛ پنجره قبلی با «-» مشخص میشود؛ تمام پنجرههایی که در حالت "logged in" هستند با «$» مشخص میشوند؛ پنجره پسزمینهای که زنگ هشدار (bell) دریافت کرده با «!» مشخص میشود؛ پنجره پسزمینهای که تحت نظارت است و فعالیتی در آن رخ داده با «@» مشخص میشود؛ پنجرهای که ثبت لاگ خروجی آن روشن است با «(L)» مشخص میشود؛ پنجرههای اشغالشده توسط سایر کاربران با «&» مشخص میشوند؛ پنجرههای در وضعیت زامبی (zombie) با «Z» مشخص میشوند. اگر این فهرست برای جا گرفتن در خط وضعیت پایانه بیش از حد طولانی باشد، فقط بخش اطراف پنجره فعلی نمایش داده میشود. پارامتر اختیاری string از قالب "STRING ESCAPES" پیروی میکند. در صورت ارسال پارامتر string، اندازه خروجی نامحدود است. دستور پیشفرض بدون هیچ پارامتری به اندازه ۱۰۲۴ بایت محدود است.
تنظیمات شکستن خودکار خط (line-wrap) را برای پنجره فعلی مشخص میکند. هنگامی که line-wrap روشن باشد، دومین کاراکتر قابل چاپ متوالی که در آخرین ستون یک خط چاپ میشود به ابتدای خط بعدی خواهد شکست. به عنوان یک ویژگی افزوده، کلید backspace (^H) نیز از حاشیه سمت چپ به خط قبلی برمیگردد. پیشفرض `on` است. بدون هیچ گزینهای، وضعیت wrap تغییر میکند (toggle).
محتویات بافر جایگذاری (paste buffer) را در فایل مشخصشده، یا در صورت تعیین نشدن نام فایل، در فایل عمومی با دسترسی همگانی screen-exchange مینویسد. این سازوکار به عنوان روشی ابتدایی برای ارتباط میان کاربران screen روی همان میزبان در نظر گرفته شده است. در صورت تعیین کدگذاری (encoding)، بافر جایگذاری به صورت بلادرنگ برای تطابق با کدگذاری بازرمزگذاری میشود. نام فایل را میتوان با دستور bufferfile تنظیم کرد و پیشفرض آن "/tmp/screen-exchange" است.
علاوه بر فهرستهای کنترل دسترسی (ACL)، ممکن است همه کاربران نتوانند همزمان در یک پنجره بنویسند. به طور پیشفرض، writelock در حالت `auto` است و مجوز ورودی انحصاری را به کاربری اعطا میکند که نخستین بار به آن پنجره خاص جابهجا شده است. هنگامی که او پنجره را ترک کند، سایر کاربران میتوانند قفل نوشتن (writelock) را (به صورت خودکار) به دست آورند. قفل نوشتن پنجره فعلی با دستور "writelock off" غیرفعال میشود. اگر کاربر دستور "writelock on" را اجرا کند، مجوز نوشتن انحصاری را هنگام جابهجایی به سایر پنجرهها نیز برای خود حفظ میکند.
درج یک کاراکتر CTRL-s / CTRL-q در صف stdin پنجره فعلی.
تعریف پشتیبانی از zmodem برای screen. برنامه Screen هنگام شناسایی یک درخواست zmodem دو حالت مختلف را درک میکند: "pass" و "catch". اگر حالت روی "pass" تنظیم شده باشد، screen تمام دادهها را تا رسیدن به پایان انتقال به برنامه متصلشده (attacher) بازپخش میکند. در حالت "catch" برنامه screen به عنوان یک نقطه پایانی zmodem عمل کرده و دستورات متناظر rz/sz را آغاز میکند. اگر حالت روی "auto" تنظیم شده باشد، screen در صورتی که پنجره یک tty باشد (مانند یک خط سریال) از "catch" استفاده میکند، در غیر این صورت از "pass" استفاده خواهد کرد.
میتوانید الگوهایی را که screen در حالت "catch" استفاده میکند از طریق شکل دوم و سوم تعریف کنید.
همچنین توجه داشته باشید که این یک قابلیت آزمایشی است.
به طور پیشفرض، پنجرههای screen به محض خروج فرایند پنجره (مانند پوسته)، از فهرست پنجرهها حذف میشوند. هنگامی که رشتهای از دو کلید برای دستور zombie مشخص شود، پنجرههای «مرده» در فهرست باقی خواهند ماند. برای حذف چنین پنجرهای میتوان از دستور kill استفاده کرد. فشردن کلید نخست در پنجره مرده نیز اثر یکسانی دارد. هنگام فشردن کلید دوم، screen تلاش خواهد کرد پنجره را احیا کند (resurrect). فرایندی که در ابتدا در پنجره در حال اجرا بود دوباره راهاندازی خواهد شد. فراخوانی zombie بدون پارامتر، تنظیمات zombie را پاک میکند و در نتیجه باعث ناپدید شدن پنجرهها هنگام خروج فرایند آنها میشود.
از آنجا که تنظیمات zombie به طور سراسری برای تمام پنجرهها تغییر مییابد، این دستور احتمالاً باید defzombie نامیده میشد، اما چنین نیست.
به صورت اختیاری میتوانید واژه "onerror" را پس از کلیدها قرار دهید. این کار باعث میشود screen وضعیت خروج فرایند در حال اجرا در پنجره را پایش کند. اگر به صورت عادی ('0') خارج شود، پنجره ناپدید میشود. هر مقدار خروج دیگری باعث میشود پنجره به یک زامبی (zombie) تبدیل گردد.
به طور پیشفرض، پنجرههای screen به محض خروج فرایند پنجره (مانند پوسته)، از فهرست پنجرهها حذف میشوند. در صورت تعریف کلیدهای zombie (با دستور zombie در بالا مقایسه شود)، همچنین امکان تنظیم یک زمان انقضا (timeout) وجود دارد تا screen تلاش کند به طور خودکار به پنجره مرده screen متصل شود.
خط پیام (THE MESSAGE LINE)
Screen پیامهای اطلاعاتی و سایر موارد تشخیصی را در یک خط پیام (message line) نمایش میدهد. اگرچه این خط طوری توزیع شده است که در پایین صفحه نمایش داده شود، اما هنگام کامپایل میتوان آن را طوری تعریف کرد که در بالای صفحه ظاهر گردد. اگر پایانه شما دارای یک خط وضعیت تعریفشده در termcap خود باشد، screen از آن برای نمایش پیامهای خود استفاده میکند؛ در غیر این صورت، یک خط از صفحه فعلی به طور موقت بازنویسی شده و خروجی برای لحظهای متوقف خواهد شد. خط پیام پس از چند ثانیه تاخیر به طور خودکار حذف میشود، اما همچنین میتوان آن را زودتر (در پایانههای بدون خط وضعیت) با شروع به تایپ کردن حذف نمود.
قابلیت خط پیام میتواند توسط برنامهای که در پنجره فعلی در حال اجراست، با استفاده از دنباله کنترلی Privacy message در ANSI به کار گرفته شود. برای نمونه، از درون پوسته موردی مانند زیر را امتحان کنید:
- echo '<esc>^Hello world from window '$WINDOW'<esc>\\'
که در آن '<esc>' یک کاراکتر escape است، '^' به معنی یک علامت پیکان رو به بالا (up-arrow) به صورت لغوی است، و '\\' به یک تک بکاسلش تبدیل میشود.
انواع پنجره (WINDOW TYPES)
برنامه Screen سه نوع پنجره مختلف را فراهم میکند. پنجرههای جدید با دستور screen برنامه screen ایجاد میشوند (همچنین به مدخل موجود در فصل "CUSTOMIZATION" مراجعه کنید). نخستین پارامتر به دستور screen مشخص میکند چه نوع پنجرهای ایجاد شود. انواع مختلف پنجره همگی حالتهای خاصی از نوع معمولی هستند. آنها افزوده شدهاند تا به screen امکان دهند به طور کارآمد به عنوان یک مالتیپلکسر کنسول با ۱۰۰ پنجره یا بیشتر استفاده شود.
- پنجره معمولی شامل یک پوسته (پیشفرض، در صورت عدم ارائه پارامتر) یا هر دستور سیستمی دیگری است که بتواند از یک پوسته اجرا شود (مانند slogin، و غیره...)
- اگر نام یک tty (دستگاه کاراکتری ویژه) (مانند "/dev/ttya") به عنوان نخستین پارامتر مشخص شود، پنجره مستقیماً به این دستگاه متصل میشود. این نوع پنجره مشابه "screen cu -l /dev/ttya" است. دسترسی خواندن و نوشتن روی گره دستگاه الزامی است، و یک بازگشایی انحصاری روی گره انجام میشود تا خط اتصال به عنوان اشغالشده (busy) علامتگذاری شود. یک پارامتر اختیاری مجاز است که شامل فهرستی از فلگهای جداشده با کاما در قالب استفادهشده توسط stty(1) است:
- <baud_rate>
- معمولاً ۳۰۰، ۱۲۰۰، ۹۶۰۰ یا ۱۹۲۰۰. این مورد بر سرعت ارسال و همچنین دریافت تأثیر میگذارد.
- cs8 or cs7
- تعیین ارسال هشت (یا هفت) بیت در هر بایت.
- cstopb or -cstopb
- تعیین دو بیت توقف در هر کاراکتر (یک بیت با '-')
- parenb or -parenb
- تولید بیت توازن در خروجی و انتظار بیت توازن در ورودی
- parodd or -parodd
- تنظیم توازن فرد (یا توازن زوج با '-')
- ixon or -ixon
- فعالسازی (یا غیرفعالسازی) کنترل جریان نرمافزاری (CTRL-S/CTRL-Q) برای ارسال دادهها.
- ixoff or -ixoff
- فعالسازی (یا غیرفعالسازی) کنترل جریان نرمافزاری برای دریافت دادهها.
- istrip or -istrip
- پاک کردن (یا نگهداشتن) بیت هشتم در هر بایت دریافتشده.
ممکن است بخواهید هر تعداد از این گزینهها را که کاربرد دارد مشخص کنید. گزینههای مشخصنشده باعث میشوند درایور پایانه مقادیر پارامترهای اتصال را بسازد. این مقادیر وابسته به سیستم هستند و ممکن است مقادیر پیشفرض یا مقادیر ذخیرهشده از یک اتصال قبلی باشند.
برای پنجرههای tty، دستور info برخی از خطوط کنترل مودم را در خط وضعیت نشان میدهد. این موارد ممکن است شامل `RTS`، `CTS`، `DTR`، `DSR`، `CD` و موارد دیگر باشند. این امر به ioctl()های موجود و فایلهای هدر سیستم و همچنین قابلیتهای فیزیکی برد سریال بستگی دارد. سیگنالهایی که در سطح منطقی پایین (غیرفعال) هستند، نام آنها با یک علامت تعجب (!) شروع میشود؛ در غیر این صورت، سیگنال در سطح منطقی بالا (فعال) است. سیگنالهایی که توسط سختافزار پشتیبانی نمیشوند اما در رابط ioctl() موجود هستند معمولاً در سطح پایین نشان داده میشوند.
هنگامی که بیت وضعیت CLOCAL فعال (true) باشد، کل مجموعه سیگنالهای مودم درون آکولاد ({ و }) قرار میگیرند. هنگامی که بیت CRTSCTS یا TIOCSOFTCAR تنظیم شده باشد، سیگنالهای `CTS` یا `CD` به ترتیب در پرانتز نشان داده میشوند.
برای پنجرههای tty، دستور break باعث میشود خط ارسال داده (TxD) برای یک بازه زمانی مشخص به سطح پایین برود. انتظار میرود این عمل در سمت دیگر به عنوان سیگنال break تفسیر شود. هنگام صدور دستور break هیچ دادهای ارسال نمیشود و هیچ خط کنترل مودمی تغییر نمیکند.
- •
- اگر نخستین پارامتر "//telnet" باشد، انتظار میرود پارامتر دوم یک نام میزبان باشد، و یک پارامتر اختیاری سوم میتواند یک شماره پورت TCP را مشخص کند (پیشفرض دهدهی ۲۳). برنامه Screen به سروری که روی میزبان راه دور گوش میدهد متصل خواهد شد و از پروتکل telnet برای برقراری ارتباط با آن سرور استفاده میکند.
برای پنجرههای telnet، دستور info جزئیات مربوط به اتصال را در قلابها ([ و ]) در انتهای خط وضعیت نشان میدهد.
- b
- BINARY. اتصال در حالت دودویی (binary) است.
- e
- ECHO. اکوی محلی غیرفعال است.
- c
- SGA. اتصال در «حالت کاراکتری» (character mode) است (پیشفرض: «حالت خطی»).
- t
- TTYPE. نوع پایانه توسط میزبان راه دور درخواست شده است. برنامه Screen نام "screen" را ارسال میکند مگر اینکه دستور دیگری داده شود (همچنین به دستور `term` مراجعه کنید).
- w
- NAWS. تغییرات اندازه پنجره به اطلاع سایت راه دور میرسد.
- f
- LFLOW. میزبان راه دور اطلاعات کنترل جریان را ارسال خواهد کرد. (در حال حاضر نادیده گرفته میشود.)
فلگهای اضافی برای اشکالزدایی عبارتند از x، t و n (یعنی XDISPLOC، TSPEED و NEWENV).
برای پنجرههای telnet، دستور break کد تلنت IAC BREAK (مقدار دهدهی ۲۴۳) را به میزبان راه دور ارسال میکند.
این نوع پنجره فقط زمانی در دسترس است که screen با تعریف گزینه ENABLE_TELNET کامپایل شده باشد.
توالیهای گریز رشتهای (STRING ESCAPES)
نرمافزار Screen سازوکاری برای کاراکترهای گریز جهت درج اطلاعاتی نظیر زمان فعلی در پیامها یا نام فایلها فراهم میکند. کاراکتر گریز استفاده میشود.
در اینجا فهرست کامل توالیهای گریز پشتیبانیشده آمده است:
- %
- خود کاراکتر گریز
- A
- AM یا PM. کلمه 'AM' مخفف عبارت لاتین 'ante meridiem' به معنای "قبل از ظهر" است (زمان قبل از نیمروز). 'PM' مخفف post meridiem یا 'بعد از ظهر' است – یعنی زمان بعد از نیمروز.
- a
- مشابه 'A'، اما با حروف کوچک نوشته میشود: 'am' یا 'pm'.
- C
- قالب زمانی ۱۲ ساعته مانند 1:48
- c
- مشابه 'C'، اما از قالب زمانی ۲۴ ساعته استفاده میکند (برای مثال، 13:48)
- D
- روز هفته (برای مثال، Mon, Wed, Fri)
- d
- روز ماه (عدد).
- E
- در صورتی که کاراکتر گریز فشرده شده باشد، %? را روی true تنظیم میکند.
- e
- کدگذاری (encoding)
- f
- فلگهای پنجره، برای معنی فلگهای مختلف به "windows" مراجعه کنید
- F
- در صورتی که پنجره فوکوس داشته باشد، %? را روی true تنظیم میکند
- h
- مقدار hardstatus پنجره
- H
- نام میزبان (hostname) سیستم
- O
- تعداد پنجرههای screen. افزودن پیشوند '-' آن را به گروه پنجره فعلی محدود میکند.
- M
- نام ماه (برای مثال، Aug, Dec)
- m
- ماه سال (عدد)
- n
- شماره پنجره
- P
- در صورتی که ناحیه فعلی در حالت کپی/پیست باشد، %? را روی true تنظیم میکند
- S
- نام نشست (session name)
- s
- اندازه پنجره
- t
- عنوان پنجره
- u
- تمام کاربران دیگر روی این پنجره
- w
- تمام شمارهها و نامهای پنجرهها. با مشخصکننده '-': تا پنجره فعلی؛ با مشخصکننده '+': شروع از پنجره بعد از پنجره فعلی.
- W
- تمام شمارهها و نامهای پنجرهها به جز پنجره فعلی
- x
- دستور اجراشده به همراه آرگومانهای در حال اجرا در این پنجره
- X
- دستور اجراشده بدون آرگومانهای در حال اجرا در این پنجره
- Y
- سال (چهار رقمی مانند '2024')
- y
- دو رقم آخر سال (برای مثال، '24')
- ?
- بخش تا '%?' بعدی فقط زمانی نمایش داده میشود که یک توالی گریز '%' درون این بخش به یک رشته غیرخالی بسط داده شود
- :
- بخش else مربوط به '%?'
- =
- پر کردن (pad) رشته تا عرض نمایشگر (مانند hfill در TeX). اگر یک عدد مشخص شده باشد، تا درصد مشخصی از عرض پنجره پر میشود. مشخصکننده '0' به screen میگوید عدد را به عنوان موقعیت مطلق در نظر بگیرد. میتوانید با افزودن مشخصکننده '+' تعیین کنید که پر کردن نسبت به آخرین موقعیت پر کردن مطلق انجام شود، یا با استفاده از '-' نسبت به حاشیه راست پر شود. اگر موقعیت مشخصشده قبل از موقعیت فعلی باشد، پر کردن رشته را کوتاه (truncate) میکند. مشخصکننده 'L' را برای تغییر این رفتار اضافه کنید.
- <
- مشابه '%=' اما فقط برش و کوتاهسازی را انجام میدهد و با فاصله پر نمیکند
- >
- علامتگذاری موقعیت متنی فعلی برای کوتاهسازی بعدی. هنگامی که screen نیاز به کوتاهسازی پیدا کند، تلاش میکند آن را به گونهای انجام دهد که موقعیت علامتگذاریشده به درصد مشخصشده از ناحیه خروجی منتقل شود. (این ناحیه از آخرین موقعیت پر کردن مطلق شروع شده و به موقعیت مشخصشده توسط عملگر کوتاهسازی ختم میشود.) مشخصکننده 'L' به screen میگوید بخشهای کوتاهشده را با '...' علامتگذاری کند.
- {
- رشته اصلاحکننده مشخصه/رنگ که با "}" بعدی پایان مییابد
- `
- جایگزینی با خروجی یک دستور 'backtick'. از مشخصکننده طول (length qualifier) برای شناسایی یکی از دستورها استفاده مجدد شده است.
توالیهای گریز 'c' و 'C' میتوانند با یک '0' همراه شوند تا screen به جای فاصله از صفر به عنوان نویسه پرکننده استفاده کند. مشخصکننده '0' همچنین باعث میشود توالی گریز '=' از موقعیتهای مطلق استفاده کند. توالیهای گریز 'n' و '=' مشخصکننده طول را میفهمند (برای مثال '%3n')، 'D' و 'M' میتوانند با پیشوند 'L' برای تولید نامهای طولانی همراه شوند، و 'w' و 'W' نیز در صورت داده شدن 'L' فلگهای پنجره را نشان میدهند.
یک اصلاحکننده مشخصه/رنگ برای تغییر مشخصهها یا تنظیمات رنگ استفاده میشود. قالب آن به صورت "[اصلاحکننده مشخصه] [توصیف رنگ]" است. اصلاحکننده مشخصه در صورتی که ممکن باشد با توصیف رنگ اشتباه گرفته شود، باید با یک نشانگر نوع تغییر پیشوندگذاری شود. انواع تغییرات شناختهشده به شرح زیر هستند:
- +
- افزودن مجموعه مشخصشده به مشخصههای فعلی
- -
- حذف مجموعه از مشخصههای فعلی
- !
- معکوس کردن مجموعه در مشخصههای فعلی
- =
- تغییر مشخصههای فعلی به مجموعه مشخصشده
مجموعه مشخصهها میتواند به صورت یک عدد هگزادسیمال یا ترکیبی از حروف زیر مشخص شود:
- d
- کمنور (dim)
- u
- زیرخطدار (underline)
- b
- توپر / بولد (bold)
- r
- معکوس (reverse)
- s
- برجسته (standout)
- B
- چشمکزن (blinking)
قالب قدیمی مشخص کردن رنگها با حروف (k,r,g,y,b,m,c,w) اکنون منسوخ شده است. رنگها به صورت 0-7 برای ANSI پایه، 0-255 برای حالت 256 رنگی، یا برای رنگ واقعی (truecolor)، به صورت یک کد هگزادسیمال که با x شروع میشود یا نشانهگذاری HTML به صورت ۳ یا ۶ رقم هگزادسیمال کدگذاری میشوند. رنگ پیشزمینه و پسزمینه با قرار دادن نقطه-ویرگول (semicolon) بین آنها مشخص میشوند. مثال: "#FFF;#000" یا "i7;0" سفید روی پسزمینه سیاه است.
اعداد زیر برای ANSI پایه هستند:
- 0
- سیاه (black)
- 1
- قرمز (red)
- 2
- سبز (green)
- 3
- زرد (yellow)
- 4
- آبی (blue)
- 5
- ارغوانی (magenta)
- 6
- cyan (فیروزهای)
- 7
- سفید (white)
همچنین
میتوانید
از شبهرنگ
'i' برای
تنظیم
روشنایی و
دستنخورده
گذاشتن رنگ
استفاده
کنید.
به عنوان یک
مورد خاص،
"%{-}"
مشخصهها و
رنگهایی
را که قبل از
آخرین
تغییر
تنظیم شده
بودند
بازیابی
میکند
(یعنی یک سطح
از پشته
تغییر رنگ
را به بالا
برمیگرداند
/ pop میکند).
مثالها:
- "i2"
- تنظیم رنگ به سبز روشن
- "+b r"
- استفاده از قرمز بولد
- "#F00;FFA"
- نوشتن با رنگ قرمز روشن روی پسزمینه زرد کمرنگ.
- %-Lw%{#AAA;#006}%50>%n%f* %t%{-}%+Lw%<
- پنجرههای موجود متمرکز بر پنجره فعلی و کوتاهشده به عرض موجود. پنجره فعلی به صورت سفید روی آبی نمایش داده میشود. این مورد میتواند با "hardstatus alwayslastline" استفاده شود.
- %?%F%{;2}%?%3n %t%? [%h]%?
- شماره و عنوان پنجره و hardstatus پنجره، در صورت تنظیم بودن. همچنین در صورتی که پنجره فوکوس فعال داشته باشد از پسزمینه قرمز استفاده میکند. برای "caption string" کاربرد دارد.
کنترل جریان (FLOW-CONTROL)
هر پنجره دارای یک تنظیم کنترل جریان (flow-control) است که مشخص میکند چگونه screen با نویسههای XON و XOFF (و احتمالاً نویسه وقفه / interrupt) رفتار کند. هنگامی که کنترل جریان خاموش باشد، screen نویسههای XON و XOFF را نادیده میگیرد، که به کاربر اجازه میدهد آنها را صرفاً با تایپ کردن به برنامه فعلی ارسال کند (برای مثال برای ویرایشگر emacs مفید است). بهای این کار این است که توقف خروجی یک برنامه "عادی" در پاسخ به یک XOFF زمان بیشتری خواهد برد. هنگامی که کنترل جریان روشن باشد، نویسههای XON و XOFF برای توقف فوری خروجی پنجره فعلی استفاده میشوند. شما همچنان میتوانید این نویسهها را به برنامه فعلی ارسال کنید، اما باید از دستورات دو نویسهای مناسب screen استفاده کنید (معمولاً "C-a q" (برای xon) و "C-a s" (برای xoff)). دستورات xon/xoff همچنین برای تایپ C-s و C-q در ترمینالی که این نویسهها را رهگیری و مسدود میکند مفید هستند.
هر پنجره دارای یک مقدار اولیه کنترل جریان است که یا با گزینه -f یا دستور "defflow" در .screenrc تنظیم میشود. به طور پیشفرض پنجرهها روی تعویض خودکار جریان (automatic flow-switching) تنظیم شدهاند. سپس میتوان آن را بین سه حالت 'fixed on' (روشن ثابت)، 'fixed off' (خاموش ثابت) و 'automatic' (خودکار) به صورت تعاملی با دستور "flow" متصل به "C-a f" جابجا کرد.
حالت تعویض خودکار جریان، کنترل جریان را با استفاده از حالت TIOCPKT مدیریت میکند (مشابه کاری که "rlogin" انجام میدهد). اگر درایور tty از TIOCPKT پشتیبانی نکند، screen تلاش میکند بر اساس تنظیم فعلی application keypad حالت مناسب را بیابد - هنگامی که فعال باشد، کنترل جریان خاموش میشود و برعکس. البته همچنان میتوانید در صورت نیاز کنترل جریان را به صورت دستی مدیریت کنید.
اگر با کنترل جریان فعال کار میکنید و متوجه شدید که فشردن کلید وقفه (معمولاً C-c) تا زمان اسکرول شدن ۶ تا ۸ خط دیگر نمایشگر را متوقف نمیکند، اجرای screen با گزینه "interrupt" را امتحان کنید (فلگ "interrupt" را به دستور "flow" در فایل .screenrc خود اضافه کنید، یا از گزینه خط فرمان -i استفاده کنید). این کار باعث میشود خروجی که screen از برنامه متوقفشده جمعآوری کرده است، تخلیه (flush) شود. یک عیب این است که حافظه ترمینال مجازی حاوی نسخه تخلیهنشده خروجی باقی میماند، که در موارد نادر میتواند باعث ناپیوستگیها یا نادقیق بودن جزئی در خروجی شود. برای مثال، اگر بین صفحهها جابجا شوید و بازگردید، یا صفحه را با "C-a l" بهروزرسانی کنید، نسخهای از خروجی را مشاهده خواهید کرد که بدون روشن بودن "interrupt" دریافت میکردید. همچنین ممکن است لازم باشد کنترل جریان را خاموش کنید (یا از حالت auto-flow برای خاموش کردن خودکار آن استفاده کنید) هنگامی که برنامهای را اجرا میکنید که انتظار دارد نویسه وقفه را به عنوان ورودی تایپ کنید، زیرا وقتی کنترل جریان فعال باشد ممکن است خروجی ترمینال مجازی به ترمینال فیزیکی شما متوقف شود. اگر این اتفاق افتاد، یک نوسازی ساده صفحه با "C-a l" آن را بازیابی خواهد کرد. هر حالت را امتحان کنید و از هر حالتی که با آن راحتتر هستید استفاده کنید.
عناوین (نامگذاری پنجرهها) (TITLES)
میتوانید نام هر پنجره را در نمایش پنجرهها (که با دستور "windows" (با کلید C-a w) مشاهده میشود) با تنظیم آن از طریق یکی از دستورات عنوان سفارشی کنید. معمولاً نام نمایش دادهشده نام واقعی دستور برنامهای است که در پنجره ایجاد شده است. با این حال، گاهی اوقات تشخیص برنامههای مختلف با نام یکسان یا تغییر نام در لحظه برای بازتاب وضعیت فعلی پنجره مفید است.
نام پیشفرض برای تمام پنجرههای شل میتواند با دستور "shelltitle" در فایل .screenrc تنظیم شود، در حالی که تمام پنجرههای دیگر با یک دستور "screen" ایجاد میشوند و بنابراین میتوانند نام خود را با گزینه -t تنظیم کنند. به صورت تعاملی، توالی گریز رشته-عنوان (<esc>kname<esc>\) و دستور "title" (با کلید C-a A) وجود دارد. مورد اول میتواند از یک برنامه برای کنترل نام پنجره تحت کنترل نرمافزاری خروجی داده شود، و مورد دوم هنگام تایپ شدن برای دریافت نام اعلان میدهد. همچنین میتوانید نامهای از پیش تعریفشده را با دستور "title" به کلیدها متصل کنید تا موارد را به سرعت و بدون اعلان تنظیم نمایید. تغییر عنوان با این توالی گریز میتواند توسط دستورات defdynamictitle و dynamictitle کنترل شود.
در نهایت، screen دارای یک روش ابتکاری مخصوص شل است که با تنظیم نام پنجره روی "search|name" و ترتیب دادن خروجی یک توالی گریز عنوان خالی (null) به عنوان بخشی از اعلان (prompt) شما فعال میشود. بخش search رشته جستجوی انتهای اعلان را مشخص میکند، در حالی که بخش name نام شل پیشفرض را برای پنجره تعیین میکند. اگر name به یک `:' ختم شود، screen آنچه را که فکر میکند دستور در حال اجرا در پنجره است به انتهای نام شل پنجره اضافه میکند (مانند "name:cmd"). در غیر این صورت، نام دستور فعلی در حین اجرا جایگزین نام شل میشود.
نحوه کارکرد آن به این صورت است: شما باید اعلان شل خود را تغییر دهید تا یک توالی گریز عنوان خالی (<esc>k<esc>\) را به عنوان بخشی از اعلان شما خروجی دهد. آخرین بخش اعلان شما باید همان رشتهای باشد که برای بخش search عنوان مشخص کردهاید. پس از راهاندازی این مورد، screen از توالی گریز عنوان برای پاک کردن نام دستور قبلی و آماده شدن برای دستور بعدی استفاده میکند. سپس، هنگامی که یک خط جدید از شل دریافت میشود، جستجویی برای انتهای اعلان انجام میشود. در صورت یافتن، اولین کلمه بعد از رشته منطبق را برمیدارد و از آن به عنوان نام دستور استفاده میکند. اگر نام دستور با یکی از نویسههای '!'، '%' یا '^' شروع شود، screen از اولین کلمه در خط بعدی (در صورت وجود) به جای نام تازه یافتشده استفاده خواهد کرد. این به کاربران csh کمک میکند تا هنگام استفاده از کنترل شغل (job control) یا دستورات فراخوانی تاریخچه، نامهای دستوری بهتری به دست آورند.
در اینجا چند مثال از .screenrc آورده شده است:
screen -t top 2 nice top
افزودن این خط به .screenrc شما یک نسخه nice-شده از دستور "top" را در پنجره ۲ به نام "top" به جای "nice" شروع میکند.
shelltitle '> |csh' screen 1
این دستورات یک شل با shelltitle دادهشده را شروع میکنند. عنوان مشخصشده یک عنوان خودکار است که انتظار دارد اعلان و دستور تایپشده شبیه به مورد زیر باشند:
/usr/joe/src/dir> trn
(دستور بعد از '> ' را به دنبال نام دستور میگردد). وضعیت پنجره در حین اجرای دستور نام "trn" را نشان میدهد و پس از اتمام به "csh" بازمیگردد.
bind R screen -t '% |root:' su
داشتن این دستور در .screenrc شما توالی کلید "C-a R" را به دستور "su" متصل میکند و یک نام عنوان خودکار "root:" به آن میدهد. برای اینکه این عنوان خودکار کار کند، صفحه میتواند چیزی شبیه به این باشد:
% !em emacs file.c
در اینجا کاربر دستور تاریخچه csh یعنی "!em" را تایپ کرده که دستور از پیش واردشده "emacs" را اجرا کرده است. وضعیت پنجره در طول اجرای دستور "root:emacs" را نشان میدهد، و در پایان کار به سادگی به "root:" بازمیگردد.
bind o title bind E title "" bind u title (unknown)
نخستین مقیدسازی (binding) هیچ آرگومانی ندارد، بنابراین هنگامی که "C-a o" را تایپ میکنید از شما عنوان درخواست میکند. دومین مقیدسازی، تنظیم فعلی عنوان خودکار (auto-title) را پاک میکند (C-a E). سومین مقیدسازی، عنوان پنجره فعلی را روی "(unknown)" تنظیم میکند (C-a u).
نکتهای که هنگام افزودن یک توالی گریز عنوان خالی (null title-escape-sequence) به اعلان (prompt) خود باید به خاطر داشته باشید این است که برخی پوستهها (مانند csh) تمام نویسههای غیرکنترلی را به عنوان بخشی از طول اعلان به شمار میآورند. اگر این نویسههای نامرئی مضربی از ۸ نباشند، پسبری (backspacing) روی یک تب (tab) منجر به نمایش نادرست خواهد شد. یک راه برای دور زدن این مشکل استفاده از اعلانی شبیه این است:
set prompt='^[[0000m^[k^[\% '
توالی گریز "<esc>[0000m" نه تنها مشخصههای نویسه را عادیسازی میکند، بلکه تمام صفرها طول نویسههای نامرئی را تا ۸ گرد میکنند. کاربران Bash احتمالاً مایلند این توالی گریز را در PROMPT_COMMAND پژواک (echo) کنند:
PROMPT_COMMAND='printf "\033k\033\134"'
(به دلیل وجود اشکالی در bash نسخه 1.04، از "\134" برای خروجی دادن یک `\' استفاده شد).
پایانه مجازی (THE VIRTUAL TERMINAL)
هر پنجره
در یک نشست
screen یک
پایانه VT100 را
با افزودن
برخی توابع
اضافه
شبیهسازی
میکند.
شبیهساز VT100
به صورت
سختکد (hard-coded)
است و هیچ
نوع پایانه
دیگری قابل
شبیهسازی
نیست.
معمولاً screen
تلاش
میکند تا
جای ممکن
استاندارد
VT100/ANSI را
شبیهسازی
کند. اما اگر
پایانه شما
فاقد
قابلیتهای
خاصی باشد،
ممکن است
شبیهسازی
کامل نباشد.
در این
موارد screen
باید به
برنامهها
اعلام کند
که برخی از
ویژگیها
وجود
ندارند. این
امر در
ماشینهایی
که از termcap
استفاده
میکنند
مشکلی
ایجاد
نمیکند،
زیرا screen
میتواند
از متغیر $TERMCAP
برای
سفارشیسازی
termcap
استاندارد
screen استفاده
کند.
اما اگر به ماشین دیگری rlogin بزنید یا ماشین شما فقط از terminfo پشتیبانی کند، این روش با شکست مواجه میشود. به همین دلیل، screen راهکاری برای رسیدگی به این موارد ارائه میدهد. نحوه کارکرد آن به این صورت است:
هنگامی که screen تلاش میکند نام پایانهای برای خود بیابد، ابتدا به دنبال مدخلی با نام "screen.<term>" میگردد که در آن <term> محتوای متغیر $TERM شما است. اگر چنین مدخلی وجود نداشته باشد، screen گزینه "screen" (یا "screen-w" اگر پایانه عریض باشد (۱۳۲ ستون یا بیشتر)) را امتحان میکند. اگر حتی این مدخل نیز یافت نشود، "vt100" به عنوان جایگزین استفاده میشود.
ایده این است که اگر پایانهای دارید که از ویژگی مهمی پشتیبانی نمیکند (مثلاً delete char یا clear to EOS)، میتوانید یک مدخل termcap/terminfo جدید برای screen (به نام "screen.<dumbterm>") بسازید که در آن این قابلیت غیرفعال شده باشد. اگر این مدخل روی ماشینهای شما نصب شده باشد، میتوانید rlogin انجام دهید و همچنان مدخل termcap/terminfo درست را حفظ کنید. نام پایانه در متغیر $TERM تمام پنجرههای جدید قرار میگیرد. Screen همچنین متغیر $TERMCAP را مطابق با قابلیتهای پایانه مجازی شبیهسازیشده مقداردهی میکند. با این حال توجه داشته باشید که در ماشینهایی که از پایگاه داده terminfo استفاده میکنند، این متغیر هیچ تاثیری ندارد. افزون بر این، متغیر $WINDOW روی شماره پنجره مربوط به هر پنجره تنظیم میشود.
مجموعه واقعی قابلیتهای پشتیبانیشده توسط پایانه مجازی به قابلیتهای پشتیبانیشده توسط پایانه فیزیکی بستگی دارد. برای نمونه، اگر پایانه فیزیکی از حالت زیرخط (underscore) پشتیبانی نکند، screen قابلیتهای `us' و `ue' را متناسب با آن در متغیر $TERMCAP پنجره قرار نمیدهد. با این وجود، برای اجرای screen، باید حداقل تعداد مشخصی از قابلیتها توسط یک پایانه پشتیبانی شود؛ یعنی پیمایش (scrolling)، پاک کردن صفحه (clear screen)، و آدرسدهی مستقیم مکاننما (direct cursor addressing) (علاوه بر این، screen روی پایانههای چاپی سختافزاری (hardcopy) یا پایانههایی که روی کاراکتر قبلی چاپ میکنند (over-strike) اجرا نمیشود).
همچنین میتوانید مقدار $TERMCAP مورد استفاده screen را با استفاده از دستور "termcap" در .screenrc، یا با تعریف متغیر $SCREENCAP پیش از راهاندازی سفارشی کنید. هنگامی که متغیر دومی تعریف شود، مقدار آن به صورت عین به عین در متغیر $TERMCAP هر پنجره کپی خواهد شد. این مقدار میتواند تعریف کامل پایانه یا نام فایلی باشد که در آن پایانه "screen" (و/یا "screen-w") تعریف شده است.
توجه داشته باشید که اگر سیستم به جای termcap از پایگاه داده terminfo استفاده کند، screen دستور "terminfo" در .screenrc را مورد توجه قرار میدهد.
هنگامی که قابلیت بولی `G0' در مدخل termcap برای پایانهای که screen روی آن فراخوانی شده موجود باشد، شبیهسازی پایانه screen از چندین مجموعه کاراکتر پشتیبانی میکند. این به یک برنامه اجازه میدهد برای نمونه از مجموعه کاراکترهای گرافیکی VT100 یا مجموعههای کاراکتر ملی استفاده کند. توابع کنترلی زیر از ISO 2022 پشتیبانی میشوند: lock shift G0 (SI)، lock shift G1 (SO)، lock shift G2، lock shift G3، single shift G2، و single shift G3. هنگامی که یک پایانه مجازی ایجاد یا بازنشانی میشود، مجموعه کاراکتر ASCII به عنوان G0 تا G3 تعیین میگردد. هنگامی که قابلیت `G0' موجود باشد، screen قابلیتهای `S0'، `E0' و `C0' را در صورت وجود ارزیابی میکند. `S0' توالیای است که پایانه برای فعال کردن و شروع مجموعه کاراکترهای گرافیکی به جای SI به کار میبرد. `E0' جایگزین متناظر برای SO است. `C0' یک رشته ترجمه کاراکتر به کاراکتر ارائه میدهد که در طول حالت نیمهگرافیکی استفاده میشود. این رشته مشابه قابلیت `acsc' در terminfo ساخته شده است.
هنگامی که قابلیتهای `po' و `pf' در مدخل termcap پایانه موجود باشند، برنامههای در حال اجرا در یک پنجره screen میتوانند خروجی را به پورت چاپگر پایانه ارسال کنند. این امکان به کاربر اجازه میدهد تا برنامهای در یک پنجره داشته باشد که خروجی را به چاپگر متصل به پایانه ارسال میکند، در حالی که تمام پنجرههای دیگر همچنان فعال هستند (پورت چاپگر برای هر بخش از خروجی فعال و سپس دوباره غیرفعال میشود). به عنوان یک اثر جانبی، برنامههای در حال اجرا در پنجرههای گوناگون میتوانند خروجی را به طور همزمان به چاپگر ارسال نمایند. دادههای ارسالشده به چاپگر در پنجره نمایش داده نمیشوند. دستور info هنگام فعال بودن چاپگر، خطی را که با `PRIN' آغاز میشود نمایش میدهد.
Screen یک خط وضعیت سختافزاری (hardstatus) برای هر پنجره نگهداری میکند. اگر پنجرهای انتخاب شود، hardstatus نمایشگر بهروزرسانی میشود تا با خط hardstatus پنجره مطابقت داشته باشد. اگر نمایشگر فاقد hardstatus باشد، این خط به عنوان یک پیام استاندارد screen نمایش داده خواهد شد. خط hardstatus را میتوان با دستور برنامه کاربردی ANSI (موسوم به APC): "ESC_<string>ESC\" تغییر داد. برای راحتی کاربران xterm توالی "ESC]0..2;<string>^G" نیز پذیرفته میشود.
برخی قابلیتها تنها در صورتی در متغیر $TERMCAP پایانه مجازی قرار میگیرند که بتوانند به طور کارآمد توسط پایانه فیزیکی پیادهسازی شوند. برای نمونه، `dl' (حذف خط) تنها زمانی در متغیر $TERMCAP قرار میگیرد که پایانه خود از حذف خط یا نواحی پیمایش پشتیبانی کند. توجه داشته باشید که این ممکن است هنگام اتصال مجدد نشست روی یک پایانه دیگر سبب سردرگمی شود، زیرا مقدار $TERMCAP توسط فرایندهای والد قابل تغییر نیست.
قابلیت "صفحه جایگزین" (alternate screen) به طور پیشفرض فعال نیست. دستور altscreen در .screenrc را برای فعالسازی آن تنظیم کنید.
در ادامه فهرستی از توالیهای کنترلی شناساییشده توسط screen آمده است. "(V)" و "(A)" به ترتیب نشاندهنده عملکردهای ویژه VT100 و ANSI یا ISO هستند.
- ESC E
- خط بعدی
- ESC D
- نمایه (Index)
- ESC M
- نمایه معکوس (Reverse Index)
- ESC H
- تنظیم تب افقی
- ESC Z
- ارسال رشته شناسایی VT100
- ESC 7 (V)
- ذخیره مکاننما و مشخصهها
- ESC 8 (V)
- بازیابی مکاننما و مشخصهها
- ESC [s (A)
- ذخیره مکاننما و مشخصهها
- ESC [u (A)
- بازیابی مکاننما و مشخصهها
- ESC c
- بازنشانی به حالت اولیه
- ESC g
- زنگ بصری (Visual Bell)
- ESC Pn p
- نمایانی مکاننما (97801)
- ESC = (V)
- حالت صفحهکلید عددی برنامهای (Application Keypad)
- ESC > (V)
- حالت صفحهکلید عددی (Numeric Keypad)
- ESC # 8 (V)
- پر کردن صفحه با نویسه E
- ESC \ (A)
- پایاندهنده رشته (String Terminator)
- ESC ^ (A)
- رشته پیام خصوصی (خط پیام)
- ESC !
- رشته پیام سراسری (خط پیام)
- ESC k
- رشته تعریف نام مستعار (A.k.a.)
- ESC P (A)
- رشته کنترل دستگاه. یک رشته را مستقیماً و بدون تفسیر به پایانه میزبان ارسال میکند.
- ESC _ (A)
- دستور برنامه کاربردی (Hardstatus)
- ESC ] 0 ; string ^G (A)
- دستور سیستمعامل (Hardstatus، ترفند عنوان xterm)
- ESC ] 83 ; cmd ^G (A)
- اجرای دستور screen. این قابلیت تنها زمانی کار میکند که پشتیبانی از چندکاربره در screen کامپایل شده باشد. کاربر کاذب ":window:" برای بررسی فهرست کنترل دسترسی (ACL) به کار میرود. از "addacl :window: -rwx #?" برای ایجاد کاربری بدون دسترسی و مجاز کردن فقط دستورات مورد نیاز استفاده کنید.
- Control-N (A)
- قفل تبدیل G1 (SO)
- Control-O (A)
- قفل تبدیل G0 (SI)
- ESC n (A)
- قفل تبدیل G2
- ESC o (A)
- قفل تبدیل G3
- ESC N (A)
- تبدیل تکی G2
- ESC O (A)
- تبدیل تکی G3
- ESC ( Pcs (A)
- تعیین مجموعه کاراکتر به عنوان G0
- ESC ) Pcs (A)
- تعیین مجموعه کاراکتر به عنوان G1
- ESC * Pcs (A)
- تعیین مجموعه کاراکتر به عنوان G2
- ESC + Pcs (A)
- تعیین مجموعه کاراکتر به عنوان G3
- ESC [ Pn ; Pn H
- آدرسدهی مستقیم مکاننما
- ESC [ Pn ; Pn f
- مشابه بالا
- ESC [ Pn J
- پاک کردن در نمایشگر
- Pn = None or 0
- از مکاننما تا انتهای صفحه
- Pn = 1
- از ابتدای صفحه تا مکاننما
- Pn = 2
- کل صفحه
- ESC [ Pn K
- پاک کردن در خط
- Pn = None or 0
- از مکاننما تا انتهای خط
- Pn = 1
- از ابتدای خط تا مکاننما
- Pn = 2
- کل خط
- ESC [ Pn X
- پاک کردن کاراکتر
- ESC [ Pn A
- مکاننما به بالا
- ESC [ Pn B
- مکاننما به پایین
- ESC [ Pn C
- مکاننما به راست
- ESC [ Pn D
- مکاننما به چپ
- ESC [ Pn E
- انتقال مکاننما به سطر بعدی
- ESC [ Pn F
- انتقال مکاننما به سطر قبلی
- ESC [ Pn G
- موقعیت افقی مکاننما
- ESC [ Pn `
- همانند بالا
- ESC [ Pn d
- موقعیت عمودی مکاننما
- ESC [ Ps ;...; Ps m
- انتخاب بازنمایی گرافیکی (Select Graphic Rendition)
- Ps = هیچ یا 0
- بازنمایی پیشفرض
- Ps = 1
- توپر (Bold)
- Ps = 2 (A)
- کمرنگ
- Ps = 3 (A)
- حالت Standout (در ANSI: کج/ایتالیک)
- Ps = 4
- دارای زیرخط
- Ps = 5
- چشمکزن
- Ps = 7
- تصویر نگاتیو (معکوس)
- Ps = 22 (A)
- شدت روشنایی عادی
- Ps = 23 (A)
- غیرفعالسازی حالت Standout (در ANSI: غیرفعالسازی ایتالیک)
- Ps = 24 (A)
- بدون زیرخط
- Ps = 25 (A)
- بدون چشمکزدن
- Ps = 27 (A)
- تصویر مثبت (عادی)
- Ps = 30 (A)
- رنگ پیشزمینه مشکی
- Ps = 31 (A)
- رنگ پیشزمینه قرمز
- Ps = 32 (A)
- رنگ پیشزمینه سبز
- Ps = 33 (A)
- رنگ پیشزمینه زرد
- Ps = 34 (A)
- رنگ پیشزمینه آبی
- Ps = 35 (A)
- رنگ پیشزمینه ارغوانی (Magenta)
- Ps = 36 (A)
- رنگ پیشزمینه فیروزهای (Cyan)
- Ps = 37 (A)
- رنگ پیشزمینه سفید
- Ps = 39 (A)
- رنگ پیشزمینه پیشفرض
- Ps = 40 (A)
- رنگ پسزمینه مشکی
- Ps = ...
- ...
- Ps = 49 (A)
- رنگ پسزمینه پیشفرض
- ESC [ Pn g
- پاکسازی تب (Tab Clear)
- Pn = هیچ یا 0
- پاک کردن تب در موقعیت فعلی
- Pn = 3
- پاک کردن تمام تبها
- ESC [ Pn ; Pn r (V)
- تنظیم ناحیه پیمایش
- ESC [ Pn I (A)
- تب افقی
- ESC [ Pn Z (A)
- تب رو به عقب
- ESC [ Pn L (A)
- درج سطر
- ESC [ Pn M (A)
- حذف سطر
- ESC [ Pn @ (A)
- درج نویسه
- ESC [ Pn P (A)
- حذف نویسه
- ESC [ Pn S
- پیمایش ناحیه پیمایش به سمت بالا
- ESC [ Pn T
- پیمایش ناحیه پیمایش به سمت پایین
- ESC [ Pn ^
- همانند بالا
- ESC [ Ps ;...; Ps h
- تنظیم حالت (Set Mode)
- ESC [ Ps ;...; Ps l
- بازنشانی حالت (Reset Mode)
- Ps = 4 (A)
- حالت درج (Insert Mode)
- Ps = 20 (A)
- حالت Automatic Linefeed (تغذیه خودکار سطر)
- Ps = 34
- نمایانی عادی مکاننما
- Ps = ?1 (V)
- کلیدهای مکاننما در حالت برنامه (Application)
- Ps = ?3 (V)
- تغییر عرض پایانه به ۱۳۲ ستون
- Ps = ?5 (V)
- معکوسسازی تصویر (Reverse Video)
- Ps = ?6 (V)
- حالت Origin (مبدأ)
- Ps = ?7 (V)
- حالت Wrap (شکست خودکار سطر)
- Ps = ?9
- ردیابی موشواره X10
- Ps = ?25 (V)
- مکاننمای نمایان
- Ps = ?47
- صفحه نمایش جایگزین (کد قدیمی xterm)
- Ps = ?1000 (V)
- ردیابی موشواره VT200
- Ps = ?1047
- صفحه نمایش جایگزین (کد جدید xterm)
- Ps = ?1049
- صفحه نمایش جایگزین (کد جدید xterm)
- ESC [ 5 i (A)
- شروع بازپخش به چاپگر (ANSI Media Copy)
- ESC [ 4 i (A)
- توقف بازپخش به چاپگر (ANSI Media Copy)
- ESC [ 8 ; Ph ; Pw t
- تغییر اندازه پنجره به `Ph' سطر و `Pw' ستون (ویژهٔ SunView)
- ESC [ c
- ارسال رشته شناسایی VT100
- ESC [ x
- ارسال گزارش پارامترهای پایانه
- ESC [ > c
- ارسال رشته ویژگیهای دستگاه ثانویه VT220
- ESC [ 6 n
- ارسال گزارش موقعیت مکاننما
تبدیل ورودی (INPUT TRANSLATION)
برای انجام یک شبیهسازی کامل VT100، screen باید تشخیص دهد که توالیای از نویسهها در جریان ورودی توسط فشردن کلیدی روی صفحهکلید کاربر تولید شده است و توالی گریز سبک VT100 را درج نماید. Screen روش بسیار منعطفی برای انجام این کار دارد که نگاشت دستورات دلخواه روی توالیهای دلخواه از نویسهها را امکانپذیر میسازد. برای شبیهسازی استاندارد VT100، دستور همواره رشتهای را در بافر ورودی پنجره درج خواهد کرد (همچنین به دستور stuff در جدول دستورات مراجعه کنید). از آنجا که توالیهای تولیدشده توسط فشردن کلید ممکن است پس از اتصال مجدد (reattach) از نوع متفاوتی از پایانه تغییر کنند، امکان انتساب دستورات به نام termcap کلیدها وجود دارد. Screen انتساب صحیح را پس از هر اتصال مجدد درج خواهد کرد. برای جزئیات بیشتر درباره ساختار نحوی و مثالها، دستور bindkey را ببینید.
در اینجا جدول انتساب کلیدهای پیشفرض آمده است. ستون چهارم مشخص میکند چه دستوری در صورت رفتن صفحهکلید به حالت برنامه (application mode) اجرا میشود.
| نام کلید | نام Termcap | دستور | حالت برنامه |
| مکاننما بالا | ku | \033[A | \033OA |
| مکاننما پایین | kd | \033[B | \033OB |
| مکاننما راست | kr | \033[C | \033OC |
| مکاننما چپ | kl | \033[D | \033OD |
| کلید تابعی 0 | k0 | \033[10~ | |
| کلید تابعی 1 | k1 | \033OP | |
| کلید تابعی 2 | k2 | \033OQ | |
| کلید تابعی 3 | k3 | \033OR | |
| کلید تابعی 4 | k4 | \033OS | |
| کلید تابعی 5 | k5 | \033[15~ | |
| کلید تابعی 6 | k6 | \033[17~ | |
| کلید تابعی 7 | k7 | \033[18~ | |
| کلید تابعی 8 | k8 | \033[19~ | |
| کلید تابعی 9 | k9 | \033[20~ | |
| کلید تابعی 10 | k; | \033[21~ | |
| کلید تابعی 11 | F1 | \033[23~ | |
| کلید تابعی 12 | F2 | \033[24~ | |
| Home | kh | \033[1~ | |
| End | kH | \033[4~ | |
| Insert | kI | \033[2~ | |
| Delete | kD | \033[3~ | |
| Page up | kP | \033[5~ | |
| Page down | kN | \033[6~ | |
| صفحهکلید عددی 0 | f0 | 0 | \033Op |
| صفحهکلید عددی 1 | f1 | 1 | \033Oq |
| صفحهکلید عددی 2 | f2 | 2 | \033Or |
| صفحهکلید عددی 3 | f3 | 3 | \033Os |
| صفحهکلید عددی 4 | f4 | 4 | \033Ot |
| صفحهکلید عددی 5 | f5 | 5 | \033Ou |
| صفحهکلید عددی 6 | f6 | 6 | \033Ov |
| صفحهکلید عددی 7 | f7 | 7 | \033Ow |
| صفحهکلید عددی 8 | f8 | 8 | \033Ox |
| صفحهکلید عددی 9 | f9 | 9 | \033Oy |
| صفحهکلید عددی + | f+ | + | \033Ok |
| صفحهکلید عددی - | f- | - | \033Om |
| صفحهکلید عددی * | f* | * | \033Oj |
| صفحهکلید عددی / | f/ | / | \033Oo |
| صفحهکلید عددی = | fq | = | \033OX |
| صفحهکلید عددی . | f. | . | \033On |
| صفحهکلید عددی , | f, | , | \033Ol |
| صفحهکلید عددی enter | fe | \015 | \033OM |
قابلیتهای ویژه پایانه (SPECIAL TERMINAL CAPABILITIES)
جدول زیر تمام قابلیتهای پایانه را توصیف میکند که توسط screen شناسایی میشوند و در راهنمای termcap(5) وجود ندارند. میتوانید این قابلیتها را در مدخلهای termcap خود (در /etc/termcap) قرار دهید یا از آنها با دستورات termcap، terminfo و termcapinfo در فایلهای screenrc خود استفاده کنید. اغلب قرار دادن این قابلیتها در پایگاه داده terminfo امکانپذیر نیست.
- LP (bool)
- پایانه دارای حاشیههای سبک VT100 (معروف به «حاشیههای جادویی» یا magic margins) است. توجه داشته باشید که این قابلیت منسوخ شده است زیرا screen بهجای آن از استاندارد 'xn' استفاده میکند.
- Z0 (str)
- تغییر عرض به ۱۳۲ ستون.
- Z1 (str)
- تغییر عرض به ۸۰ ستون.
- WS (str)
- تغییر اندازه نمایشگر. این قابلیت عرض و ارتفاع مورد نظر را به عنوان آرگومان دریافت میکند. مثال SunView(tm): '\E[8;%d;%dt'.
- NF (bool)
- پایانه به کنترل جریان نیاز ندارد. ارسال مستقیم ^S و ^Q به برنامه. معادل با 'flow off'. نقطه مقابل این قابلیت 'nx' است.
- G0 (bool)
- پایانه میتواند توالیهای انتخاب فونت ISO 2022 را مدیریت کند.
- S0 (str)
- تغییر مجموعه نویسه 'G0' به مجموعه نویسه مشخصشده. مقدار پیشفرض است.
- E0 (str)
- بازگرداندن مجموعه نویسه 'G0' به مجموعه نویسه استاندارد. مقدار پیشفرض است.
- C0 (str)
- استفاده از رشته به عنوان جدول تبدیل برای فونت '0'. برای جزئیات بیشتر قابلیت 'ac' را ببینید.
- CS (str)
- تغییر کلیدهای مکاننما به حالت برنامه (application mode).
- CE (str)
- بازگرداندن کلیدهای مکاننما به حالت عادی.
- AN (bool)
- فعالسازی autonuke. برای جزئیات بیشتر دستور 'autonuke' را ببینید.
- OL (num)
- تنظیم سقف بافر خروجی. برای جزئیات بیشتر دستور 'obuflimit' را ببینید.
- KJ (str)
- تنظیم کدگذاری (encoding) پایانه. برای کدگذاریهای معتبر دستور 'encoding' را ببینید.
- AF (str)
- تغییر رنگ پیشزمینه نویسه مطابق با استاندارد ANSI. این قابلیت تقریباً همیشه روی '\E[3%dm' (یا روی سامانههای terminfo روی '\E[3%p1%dm') تنظیم میشود.
- AB (str)
- مشابه 'AF'، اما تغییر رنگ پسزمینه.
- AX (bool)
- پشتیبانی از دستورات ANSI برای تنظیم رنگ پیشفرض پیشزمینه/پسزمینه (\E[39m / \E[49m).
- XC (str)
- توصیف تبدیل نویسهها به رشتهها بر اساس فونت جاری. جزئیات بیشتر در بخش بعدی آورده شده است.
- XT (bool)
- ترمینال توالیهای ویژه xterm (مانند OSC و رهگیری ماوس) را پشتیبانی میکند.
- C8 (bool)
- ترمینال برای نمایش رنگهای با شدت بالا به قلم برجسته (bold) نیاز دارد (مانند Eterm).
- TF (bool)
- افزودن قابلیتهای ناموجود به ورودی termcap/info. (بهطور پیشفرض فعال است).
تبدیل نویسهها (CHARACTER TRANSLATION)
Screen دارای مکانیزم قدرتمندی برای تبدیل نویسهها به رشتههای دلخواه بر اساس قلم فعلی و نوع ترمینال است. اگر میخواهید با یک مجموعه نویسه استاندارد و رایج (مثلاً ISO8851-latin1) کار کنید، حتی روی ترمینالهایی که نویسههای نامعمولتر را در چندین صفحه قلم زبانهای ملی پراکنده کردهاند، از این ویژگی استفاده کنید.
نحو:
XC=<charset-mapping>{,,<charset-mapping>}
<charset-mapping> := <designator><template>{,<mapping>}
<mapping> := <char-to-be-mapped><template-arg>
موارد درون آکولاد میتوانند به هر تعداد تکرار شوند.
یک <charset-mapping> به screen میگوید که چگونه نویسهها را در قلم <designator> ('B': اسکی/Ascii، 'A': بریتانیا/UK، 'K': آلمانی/German و غیره) به رشتهها نگاشت کند. هر <mapping> توصیف میکند که یک نویسه منفرد به چه رشتهای تبدیل خواهد شد. از یک سازوکار الگو (template) استفاده میشود، زیرا در بیشتر مواقع کدها اشتراکات زیادی دارند (برای مثال رشتههایی برای جابجایی بین مجموعههای نویسه مختلف). هر بار تکرار '%' در <template> با <template-arg> که همراه با نویسه مشخص شده است جایگزین میشود. اگر رشتههای شما اصلاً شبیه به هم نیستند، از '%' به عنوان الگو استفاده کرده و کل رشته را در <template-arg> قرار دهید. یک سازوکار نقلقول/کوتیشن (quoting) اضافه شده است تا امکان استفاده از '%' واقعی فراهم شود. نویسه '\' نویسههای ویژه '\'، '%' و ',' را نقلقول (escape/quote) میکند.
یک مثال در ادامه آمده است:
termcap hp700 'XC=B\E(K%\E(B,\304[,\326\\\\,\334]'
این به screen میگوید که چگونه نویسههای اوملاوت بزرگ ISOlatin1 (مجموعه نویسه 'B') را در یک ترمینال hp700 که دارای مجموعه نویسه آلمانی است تبدیل کند. '\304' به '\E(K[\E(B' تبدیل میشود و به همین ترتیب. توجه داشته باشید که این خط قبل از ساخته شدن جدول جستجوی داخلی، *سه* بار تجزیه میشود، بنابراین نقلقولها (کوتیشنهای) متعددی برای ایجاد یک '\' منفرد لازم است.
افزونه دیگری برای امکان شبیهسازی بیشتر اضافه شد: اگر یک نگاشت نویسه '%' بدون نقلقول را تبدیل کند، هر زمان که screen به <designator> مربوطه جابجا شود، آن به ترمینال ارسال خواهد شد. در این حالت خاص، فرض میشود که الگو فقط '%' است زیرا توالی تغییر مجموعه نویسه و نگاشتهای نویسه معمولاً اشتراک چندانی با هم ندارند.
این مثال کاربردی از این افزونه را نشان میدهد:
termcap xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334'
در اینجا، بخشی از مجموعه نویسه آلمانی ('K') روی یک xterm شبیهسازی میشود. اگر screen مجبور به تغییر به مجموعه نویسه 'K' شود، '\E(B' به ترمینال ارسال میشود، یعنی به جای آن از مجموعه نویسه ASCII استفاده خواهد شد. الگو فقط '%' است، بنابراین نگاشت سرراست است: '[' به '\304'، '\' به '\326' و ']' به '\334'.
محیط (ENVIRONMENT)
- COLUMNS
- تعداد ستونها در ترمینال (ورودی termcap را نادیده میگیرد).
- HOME
- پوشهای که در آن باید به دنبال .screenrc گشت.
- LINES
- تعداد خطوط در ترمینال (ورودی termcap را نادیده میگیرد).
- LOCKPRG
- برنامه قفلکردن صفحه screen.
- PATH
- برای یافتن برنامهها جهت اجرا استفاده میشود.
- SCREENCAP
- برای سفارشیسازی مقدار TERMCAP یک ترمینال.
- SCREENDIR
- دایرکتوری سوکت جایگزین.
- SCREENRC
- فایل screenrc جایگزین کاربر.
- SHELL
- برنامه پوسته پیشفرض برای باز کردن پنجرهها (پیشفرض "/bin/sh"). همچنین دستور "shell" در .screenrc را ببینید.
- STY
- نام سوکت جایگزین.
- SYSSCREENRC
- فایل screenrc جایگزین سیستم.
- TERM
- نام ترمینال.
- TERMCAP
- توصیف ترمینال.
- WINDOW
- شماره پنجره یک پنجره (در زمان ایجاد).
فایلها (FILES)
- .../screen-5.0.2/etc/screenrc
- .../screen-5.0.2/etc/etcscreenrc
- مثالهایی در بسته توزیع screen برای فایلهای پیکربندی اولیه خصوصی و سراسری.
- $SYSSCREENRC
- /usr/local/etc/screenrc
- دستورات راهاندازی اولیه screen
- $SCREENRC
- $HOME/.screenrc
- پس از /usr/local/etc/screenrc خوانده میشود.
- $SCREENDIR/S-<login>
- $HOME/.screen
- دایرکتوریهای سوکت (پیشفرض)
- /usr/tmp/screens/S-<login>
- دایرکتوریهای سوکت جایگزین.
- <socket directory>/.termcap
- توسط تابع خروجی "termcap" نوشته میشود.
- /usr/tmp/screens/screen-exchange
- یا
- /tmp/screen-exchange
- «بافر ارتباط بینپردازشی» (interprocess communication buffer) screen
- hardcopy.[0-9]
- تصاویر صفحه ایجاد شده توسط تابع hardcopy
- screenlog.[0-9]
- فایلهای لاگ خروجی ایجاد شده توسط تابع log
- /usr/lib/terminfo/?/*
- یا
- /etc/termcap
- پایگاهدادههای قابلیتهای ترمینال
- /etc/utmp
- رکوردهای ورود به سیستم (login)
- $LOCKPRG
- برنامهای که ترمینال را قفل میکند.
نویسندگان (AUTHORS)
در ابتدا توسط Oliver Laumann ایجاد شد. برای مدت طولانی توسط Juergen Weigert، Michael Schroeder، Micah Cowan و Sadrul Habib Chowdhury نگهداری و توسعه داده شد. از سال ۲۰۱۵ توسط Amadeusz Slawinski <amade@asmblr.net> و Alexander Naumov <alexander_naumov@opensuse.org> نگهداری و توسعه داده میشود.
کپیلفت (COPYLEFT)
Copyright (c) 2025-2026 Alexander Naumov <alexander_naumov@opensuse.org> Copyright (c) 2018-2024 Alexander Naumov <alexander_naumov@opensuse.org> Amadeusz Slawinski <amade@asmblr.net> Copyright (c) 2015-2017 Juergen Weigert <jnweiger@immd4.informatik.uni-erlangen.de> Alexander Naumov <alexander_naumov@opensuse.org> Amadeusz Slawinski <amade@asmblr.net> Copyright (c) 2010-2015 Juergen Weigert <jnweiger@immd4.informatik.uni-erlangen.de> Sadrul Habib Chowdhury <sadrul@users.sourceforge.net> Copyright (c) 2008, 2009 Juergen Weigert <jnweiger@immd4.informatik.uni-erlangen.de> Michael Schroeder <mlschroe@immd4.informatik.uni-erlangen.de> Micah Cowan <micah@cowan.name> Sadrul Habib Chowdhury <sadrul@users.sourceforge.net> Copyright (C) 1993-2003 Juergen Weigert <jnweiger@immd4.informatik.uni-erlangen.de> Michael Schroeder <mlschroe@immd4.informatik.uni-erlangen.de> Copyright (C) 1987 Oliver Laumann
مشارکتکنندگان (CONTRIBUTORS)
Matthias Gerstner <matthias.gerstner@suse.de>,
Elizaveta Sytsevich <elipandasyts@gmail.com>,
Julian Kolesnikov <julyfortune101@gmail.com>,
Vincent Lefevre <vincent@vinc17.net>,
Carl Drougge <bearded@longhaired.org>,
Maarten ter Huurne <maarten@treewalker.org>,
Jussi Kukkonen <jussi.kukkonen@intel.com>,
Eric S. Raymond <esr@thyrsus.com>,
Thomas Renninger <treen@suse.com>,
Axel Beckert <abe@deuxchevaux.org>,
Ken Beal <kbeal@amber.ssd.csd.harris.com>,
Rudolf Koenig <rfkoenig@immd4.informatik.uni-erlangen.de>,
Toerless Eckert <eckert@immd4.informatik.uni-erlangen.de>,
Wayne Davison <davison@borland.com>,
Patrick Wolfe <pat@kai.com, kailand!pat>,
Bart Schaefer <schaefer@cse.ogi.edu>,
Nathan Glasser <nathan@brokaw.lcs.mit.edu>,
Larry W. Virden <lvirden@cas.org>,
Howard Chu <hyc@hanauma.jpl.nasa.gov>,
Tim MacKenzie <tym@dibbler.cs.monash.edu.au>,
Markku Jarvinen <mta@{cc,cs,ee}.tut.fi>,
Marc Boucher <marc@CAM.ORG>,
Doug Siebert <dsiebert@isca.uiowa.edu>,
Ken Stillson <stillson@tsfsrv.mitre.org>,
Ian Frechett <frechett@spot.Colorado.EDU>,
Brian Koehmstedt <bpk@gnu.ai.mit.edu>,
Don Smith <djs6015@ultb.isc.rit.edu>,
Frank van der Linden <vdlinden@fwi.uva.nl>,
Martin Schweikert <schweik@cpp.ob.open.de>,
David Vrona <dave@sashimi.lcu.com>,
E. Tye McQueen <tye%spillman.UUCP@uunet.uu.net>,
Matthew Green <mrg@eterna.com.au>,
Christopher Williams <cgw@pobox.com>,
Matt Mosley <mattm@access.digex.net>,
Gregory Neil Shapiro <gshapiro@wpi.WPI.EDU>,
Johannes Zellner <johannes@zellner.org>,
Pablo Averbuj <pablo@averbuj.com>.
دسترسپذیری (AVAILABILITY)
آخرین نسخه رسمی screen از طریق ftp ناشناس در ftp.gnu.org/gnu/screen یا هر سایت توزیع دیگر GNU در دسترس است. صفحه اصلی screen در نشانی https://savannah.gnu.org/projects/screen و مخزن git آن در نشانی https://git.savannah.gnu.org/cgit/screen.git قرار دارد. اگر مایل به کمک هستید، پیامی به screen-devel@gnu.org ارسال کنید. در صورت بروز مشکلات امنیتی لطفاً ایمیلی به alexander_naumov@opensuse.org بفرستید.
باگها (BUGS)
- گزینههای `dm' (حالت حذف) و `xs' به درستی مدیریت نمیشوند (نادیده گرفته میشوند). `xn' به عنوان نشانگر حاشیه جادویی (magic-margin) در نظر گرفته میشود.
- برنامه Screen هیچ شناختی از نویسههای با ارتفاع دوبرابر یا عرض دوبرابر ندارد. اما این تنها بخشی است که vttest مجاز به شکست خوردن در آن است.
- تغییر متغیر محیطی $TERMCAP هنگام اتصال مجدد (reattach) تحت یک نوع ترمینال متفاوت ممکن نیست.
- پشتیبانی از سیستمهای مبتنی بر terminfo بسیار محدود است. افزودن قابلیتهای اضافی به $TERMCAP ممکن است هیچ اثری نداشته باشد.
- برنامه Screen از تبهای سختافزاری (hardware tabs) استفاده نمیکند.
- برنامه Screen در بیشتر سیستمها باید به صورت set-uid با مالکیت root نصب شود تا بتواند مالکیت فایل دستگاه tty را برای هر پنجره به درستی تغییر دهد. همچنین ممکن است مجوزهای ویژهای برای نوشتن در فایل "/etc/utmp" لازم باشد.
- ورودیهای "/etc/utmp" هنگام متوقف شدن screen با سیگنال SIGKILL حذف نمیشوند. این امر باعث میشود برخی برنامهها (مانند "w" یا "rwho") اعلام کنند که کاربری به سیستم وارد شده که در واقع وارد نشده است.
- برنامه Screen ممکن است زمانی که tty شما ورودی utmp ندارد، هشدار عجیبی صادر کند.
- هنگام قطع شدن خط مودم، screen ممکن است به طور خودکار جدا نشود (detach نگردد یا خارج نشود) مگر اینکه درایور دستگاه برای ارسال سیگنال HANGUP پیکربندی شده باشد. برای جدا کردن یک نشست screen از گزینه خط فرمان -D یا -d استفاده کنید.
- هر دو دستور "breaktype" و "defbreaktype" روش تولید break مورد استفاده تمام دستگاههای ترمینال را تغییر میدهند. دستور اول باید تنظیمات خاص یک پنجره را تغییر دهد، در حالی که دستور دوم فقط باید پیشفرض پنجرههای جدید را تغییر دهد.
- هنگام اتصال به یک نشست چندکاربره (multiuser)، فایل .screenrc کاربر خوانده (source) نمیشود. تنظیمات شخصی هر کاربر باید در فایل .screenrc که نشست از آن راهاندازی شده گنجانده شود، یا باید به صورت دستی تغییر یابد.
- تخیل عجیب و غریب برای بهرهمندی کامل از تمام ویژگیها بیشترین فایده را دارد.
همچنین ببینید (SEE ALSO)
termcap(5), utmp(5), vi(1), captoinfo(1), tic(1), tty(4), pty(7)
| Jul 2026 | GNU Screen 5.0.2 |