.\" -*- nroff -*- .TH CHAT 8 "22 May 1999" "Chat Version 1.22" .SH "نام (NAME)" chat \- اسکریپت خودکار تبادل پیام برای مودم و خطوط ارتباطی .SH "خلاصه دستور (SYNOPSIS)" .B chat [ .I options ] .I script .SH "توضیحات (DESCRIPTION)" .LP برنامه \fIchat\fR یک تبادل محاوره‌ای میان رایانه و مودم را تعریف می‌کند. هدف اصلی آن برقراری اتصال میان دیمن پروتکل نقطه به نقطه (\fIpppd\fR) و فرایند \fIpppd\fR سمت دوردست است. .SH "گزینه‌ها (OPTIONS)" .TP .B \-f \fI اسکریپت چت را از فایل \fI\fR می‌خواند. استفاده از این گزینه مانعه‌الجمع با پارامترهای مستقیم اسکریپت چت در خط فرمان است. کاربر باید دسترسی خواندن به فایل را داشته باشد. وجود چندین خط در فایل مجاز است. برای جداسازی رشته‌ها باید از نویسه‌های فاصله یا تب افقی استفاده شود. .TP .B \-t \fI مهلت زمانی (برحسب ثانیه) را برای دریافت رشته مورد انتظار تعیین می‌کند. اگر رشته در این محدوده زمانی دریافت نشود، رشته پاسخ ارسال نخواهد شد. در صورت وجود پاسخ جایگزین، آن پاسخ ارسال می‌شود و در غیر این صورت اسکریپت با شکست مواجه خواهد شد. شکست اسکریپت موجب می‌شود برنامه \fIchat\fR با یک کد خطای غیرصفر خاتمه یابد. .TP .B \-r \fI فایلی را برای خروجی رشته‌های گزارش مشخص می‌کند. اگر از کلمه کلیدی \fIREPORT\fR استفاده کنید، رشته‌های حاصل در این فایل نوشته می‌شوند. اگر از این گزینه استفاده نشود ولی همچنان کلمات کلیدی \fIREPORT\fR به کار روند، از خروجی خطای استاندارد (\fIstderr\fR) برای رشته‌های گزارش استفاده می‌شود. .TP .B \-e با فعال بودن گزینه پژواک (echo) آغاز به کار می‌کند. همچنین می‌توان پژواک را در نقاط مشخصی از اسکریپت چت با استفاده از کلمه کلیدی \fIECHO\fR روشن یا خاموش کرد. هنگامی که پژواک فعال باشد، تمام خروجی‌های دریافتی از مودم در \fIstderr\fR پژواک (تکرار) می‌شوند. .TP .B \-E جایگزینی متغیرهای محیطی را در اسکریپت‌های چت با استفاده از نحو استاندارد \fI$xxx\fR فعال می‌کند. .TP .B \-v درخواست می‌کند که اسکریپت \fIchat\fR در حالت پرگو (verbose) اجرا شود. در این حالت، برنامه \fIchat\fR وضعیت اجرای اسکریپت چت و همچنین تمام متن‌های دریافتی از مودم و رشته‌های خروجی ارسال‌شده به مودم را ثبت می‌کند. حالت پیش‌فرض، ثبت گزارش‌ها از طریق سامانه SYSLOG است؛ روش ثبت گزارش را می‌توان با سوییچ‌های .B \-S و .B \-s تغییر داد. .TP .B \-V درخواست می‌کند که اسکریپت \fIchat\fR در حالت پرگو روی خروجی خطای استاندارد (stderr) اجرا شود. در این حالت، برنامه \fIchat\fR تمام متن‌های دریافتی از مودم و رشته‌های خروجی ارسال‌شده به مودم را در دستگاه stderr ثبت می‌کند. این دستگاه معمولاً کنسول محلی در سامانه‌ای است که برنامه chat یا pppd را اجرا می‌کند. .TP .B \-s استفاده از stderr. تمام پیام‌های لاگ ناشی از .B '\-v' و تمام پیام‌های خطا به stderr ارسال خواهند شد. .TP .B \-S عدم استفاده از SYSLOG. به طور پیش‌فرض، پیام‌های خطا به SYSLOG ارسال می‌شوند. استفاده از .B \-S از ارسال هر دو گروه پیام‌های گزارش ناشی از .B '\-v' و پیام‌های خطا به SYSLOG جلوگیری می‌کند. .TP .B \-T \fI یک رشته دلخواه (معمولاً یک شماره تلفن) را ارسال می‌کند که در رشته ارسال جایگزین فراکاراکتر \eT خواهد شد. .TP .B \-U \fI یک رشته دوم (معمولاً یک شماره تلفن دیگر) را ارسال می‌کند که در رشته ارسال جایگزین فراکاراکتر \eU خواهد شد. این گزینه هنگام شماره‌گیری یک آداپتور پایانه ISDN که نیازمند دو شماره است مفید است. .TP .B script اگر اسکریپت در یک فایل با گزینه .B \-f مشخص نشده باشد، اسکریپت به عنوان پارامترهای برنامه \fIchat\fR در خط فرمان گنجانده می‌شود. .SH "اسکریپت چت (CHAT SCRIPT)" .LP اسکریپت \fIchat\fR ارتباطات را تعریف می‌کند. .LP یک اسکریپت شامل یک یا چند جفت رشته «انتظار\-ارسال» (expect\-send) است که با فاصله از یکدیگر جدا شده‌اند، به همراه یک جفت اختیاری «انتظار فرعی\-ارسال فرعی» (subexpect\-subsend) که با خط تیره از هم جدا می‌شوند؛ مانند مثال زیر: .IP .nf ogin:\-BREAK\-ogin: ppp ssword: hello2u2 .fi .LP این خط نشان می‌دهد که برنامه \fIchat\fR باید منتظر رشته "ogin:" باشد. اگر در بازه زمانی تعیین‌شده اعلان ورود (login prompt) را دریافت نکند، یک توالی سیگنال شکست (break sequence) به سیستم راه دور ارسال کرده و سپس دوباره منتظر رشته "ogin:" می‌ماند. اگر اولین "ogin:" با موفقیت دریافت شود، توالی break تولید نخواهد شد. .LP به محض دریافت اعلان ورود، برنامه \fIchat\fR رشته ppp را ارسال کرده و سپس منتظر اعلان "ssword:" می‌ماند. پس از دریافت اعلان گذرواژه، گذرواژه hello2u2 را ارسال می‌کند. .LP معمولاً پس از رشته پاسخ، یک نویسه بازگشت به ابتدای سطر (carriage return یا \er) ارسال می‌شود. در رشته «انتظار» (expect) منتظر این نویسه نخواهد ماند مگر اینکه صراحتاً با استفاده از توالی نویسه \er درخواست شده باشد. .LP توالی انتظار فقط باید حاوی مقداری باشد که برای شناسایی رشته کافی است. از آنجا که این اسکریپت معمولاً در فایلی روی دیسک ذخیره می‌شود، نباید شامل اطلاعات متغیر باشد. به عنوان یک قاعده کلی، جستجوی رشته‌های زمانی، شناسه‌های شبکه یا سایر داده‌های متغیر به عنوان رشته انتظار مناسب نیست. .LP برای کمک به تصحیح نویسه‌هایی که ممکن است در طول توالی اولیه مخدوش شوند، بهتر است به جای "login:" به دنبال رشته "ogin:" بگردید. این احتمال وجود دارد که نویسه ابتدایی "l" به دلیل اختلال خط با خطا دریافت شود و شما هرگز رشته را پیدا نکنید، حتی با وجود اینکه توسط سیستم ارسال شده باشد. به همین دلیل، اسکریپت‌ها به جای "login:" به دنبال "ogin:" و به جای "password:" به دنبال "ssword:" می‌گردند. .LP یک اسکریپت بسیار ساده ممکن است به این صورت باشد: .IP .nf ogin: ppp ssword: hello2u2 .fi .LP به عبارت دیگر: منتظر ....ogin: بمان، ppp را ارسال کن، منتظر ...ssword: بمان، hello2u2 را ارسال کن. .LP در عمل، اسکریپت‌های ساده به ندرت به کار می‌روند. حداقل کاری که باید انجام دهید این است که توالی‌های انتظار فرعی را برای حالتی که رشته اصلی دریافت نشود بگنجانید. برای نمونه، اسکریپت زیر را در نظر بگیرید: .IP .nf ogin:\-\-ogin: ppp ssword: hello2u2 .fi .LP این اسکریپت به مراتب بهتر از اسکریپت ساده قبلی است. این اسکریپت به دنبال همان اعلان login: می‌گردد، اما اگر اعلانی دریافت نشد، یک توالی بازگشت سطر (Enter خالی) ارسال کرده و دوباره به دنبال login: می‌گردد. اگر نویز خط باعث پوشانده شدن یا مخدوش شدن اولین اعلان ورود شده باشد، ارسال یک خط خالی معمولاً موجب تولید مجدد اعلان ورود خواهد شد. .SH "توضیحات درون کد (COMMENTS)" توضیحات (کامنت‌ها) را می‌توان درون اسکریپت چت جاسازی کرد. توضیح خطی است که با نویسه \fB#\fR (مربع/هشتگ) در ستون اول آغاز می‌شود. این خطوط توضیحی به سادگی توسط برنامه chat نادیده گرفته می‌شوند. اگر قرار است نویسه '#' به عنوان نخستین نویسه یک توالی انتظار بررسی شود، باید رشته انتظار را درون علامت نقل‌قول قرار دهید. اگر می‌خواهید منتظر اعلانی بمانید که با نویسه # شروع می‌شود، باید چیزی شبیه به این بنویسید: .IP .nf # Now wait for the prompt and send logout string \'# ' logout .fi .LP .SH "ارسال داده از یک فایل (SENDING DATA FROM A FILE)" اگر رشته‌ای که قرار است ارسال شود با علامت ات‌ساین (@) شروع شود، باقی‌مانده رشته به عنوان نام فایلی در نظر گرفته می‌شود که رشته ارسالی باید از آن خوانده شود. اگر آخرین نویسه داده‌های خوانده‌شده یک خط جدید (newline) باشد، حذف می‌شود. این فایل می‌تواند به جای یک فایل معمولی، یک لوله نام‌گذاری‌شده (named pipe یا fifo) باشد. این سازوکار راهکاری را برای برنامه \fBchat\fR فراهم می‌کند تا با برنامه‌ای دیگر ارتباط برقرار کند؛ برای نمونه برنامه‌ای که از کاربر ورودی بخواهد و گذرواژه تایپ‌شده را دریافت کند. .LP .SH "رشته‌های لغو (ABORT STRINGS)" بسیاری از مودم‌ها وضعیت تماس را به صورت یک رشته گزارش می‌دهند. این رشته‌ها ممکن است \fBCONNECTED\fR یا \fBNO CARRIER\fR یا \fBBUSY\fR باشند. در صورتی که مودم نتواند به مقصد دوردست متصل شود، اغلب مطلوب است که اجرای اسکریپت خاتمه یابد. مشکل اینجاست که اسکریپت دقیقاً نمی‌داند کدام رشته مودم را دریافت خواهد کرد. در یک تلاش ممکن است \fBBUSY\fR را دریافت کند در حالی که بار دیگر ممکن است \fBNO CARRIER\fR را دریافت نماید. .LP این رشته‌های «لغو» (abort) را می‌توان در اسکریپت با استفاده از توالی \fIABORT\fR مشخص کرد. این دستور در اسکریپت مانند مثال زیر نوشته می‌شود: .IP .nf ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATDT5551212 CONNECT .fi .LP این توالی ابتدا منتظر هیچ چیز نمی‌ماند (رشته تهی)، و سپس رشته ATZ را ارسال می‌کند. پاسخ مورد انتظار به این دستور، رشته \fIOK\fR است. پس از دریافت \fIOK\fR\s-1،\s0 رشته ATDT5551212 برای شماره‌گیری تلفن ارسال می‌شود. رشته مورد انتظار \fICONNECT\fR است. اگر رشته \fICONNECT\fR دریافت شود، ادامه اسکریپت اجرا خواهد شد. با این حال، چنانچه خط تلفن اشغال باشد، مودم رشته \fIBUSY\fR را ارسال خواهد کرد. این اتفاق باعث تطابق رشته با توالی نویسه‌های لغو می‌شود. سپس اسکریپت به دلیل یافتن تطابق با رشته لغو، با شکست خاتمه می‌یابد. در صورت دریافت رشته \fINO CARRIER\fR نیز به همین دلیل اجرای اسکریپت لغو خواهد شد. ممکن است هر یک از این دو رشته دریافت شود، و هر کدام از آن‌ها اجرای اسکریپت \fIchat\fR را متوقف خواهد کرد. .SH "رشته‌های پاکسازی لغو (CLR_ABORT STRINGS)" این توالی امکان پاک کردن رشته‌های \fBABORT\fR از پیش تنظیم‌شده را فراهم می‌کند. رشته‌های \fBABORT\fR در آرایه‌ای با اندازه از پیش تعیین‌شده (در زمان کامپایل) نگهداری می‌شوند؛ \fBCLR_ABORT\fR فضای اختصاص‌یافته به ورودی‌های پاک‌شده را آزاد می‌کند تا رشته‌های جدید بتوانند از آن فضا استفاده کنند. .SH "رشته‌های پیام‌رسانی (SAY STRINGS)" دستورالعمل \fBSAY\fR به اسکریپت اجازه می‌دهد رشته‌هایی را از طریق خروجی خطای استاندارد (stderr) به کاربر در پایانه نمایش دهد. اگر \fBchat\fR توسط pppd اجرا شود و pppd در حالت دیمن (جداشده از پایانه کنترلی خود) کار کند، خطای استاندارد معمولاً به فایل /etc/ppp/connect\-errors هدایت می‌شود. .LP رشته‌های \fBSAY\fR باید در علامت‌های نقل‌قول تکی یا دوتایی محصور شوند. اگر در رشته خروجی به بازگشت به ابتدای سطر (carriage return) و سطر جدید (line feed) نیاز است، باید آن‌ها را صراحتاً به رشته خود بیفزایید. .LP رشته‌های SAY را می‌توان برای نمایش پیام‌های پیشرفت در بخش‌هایی از اسکریپت استفاده کرد که می‌خواهید 'ECHO OFF' باشد اما همچنان مایلید کاربر بداند چه اتفاقی در حال رخ دادن است. یک مثال به شرح زیر است: .IP .nf ABORT BUSY ECHO OFF SAY "Dialling your ISP...\en" \&'' ATDT5551212 TIMEOUT 120 SAY "Waiting up to 2 minutes for connection ... " CONNECT '' SAY "Connected, now logging in ...\en" ogin: account ssword: pass $ \ec SAY "Logged in OK ...\en" \fIetc ...\fR .fi .LP این توالی تنها رشته‌های SAY را به کاربر نشان می‌دهد و تمامی جزئیات اسکریپت پنهان خواهند ماند. برای نمونه، اگر اسکریپت فوق به درستی کار کند، کاربر این متن را خواهد دید: .IP .nf Dialling your ISP... Waiting up to 2 minutes for connection ... Connected, now logging in ... Logged in OK ... .fi .LP .SH "رشته‌های گزارش (REPORT STRINGS)" یک رشته \fBreport\fR مشابه رشته ABORT است. تفاوت در این است که این رشته‌ها و تمامی نویسه‌های پس از آن تا نویسه کنترلی بعدی مانند بازگشت به ابتدای سطر (carriage return)، در فایل گزارش (report file) نوشته می‌شوند. .LP رشته‌های گزارش می‌توانند برای تفکیک و استخراج نرخ انتقال در رشته اتصال مودم و بازگرداندن مقدار آن به کاربر chat استفاده شوند. تحلیل منطق رشته گزارش هم‌زمان با پردازش سایر رشته‌ها، مانند بررسی رشته انتظار، رخ می‌دهد. استفاده از رشته یکسان هم برای گزارش و هم برای توالی لغو احتمالاً چندان کاربردی نیست، هرچند امکان‌پذیر است. .LP رشته‌های گزارش کد وضعیت خاتمه برنامه را تغییر نمی‌دهند. .LP این رشته‌های «گزارش» را می‌توان در اسکریپت با استفاده از توالی \fIREPORT\fR مشخص کرد. این دستور در اسکریپت مانند مثال زیر نوشته می‌شود: .IP .nf REPORT CONNECT ABORT BUSY '' ATDT5551212 CONNECT '' ogin: account .fi .LP این توالی ابتدا منتظر هیچ چیز نمی‌ماند (رشته تهی)؛ و سپس رشته ATDT5551212 را برای شماره‌گیری تلفن ارسال می‌کند. رشته مورد انتظار \fICONNECT\fR است. در صورت دریافت رشته \fICONNECT\fR ادامه اسکریپت اجرا می‌شود. علاوه بر این، برنامه رشته "CONNECT" را به همراه تمام نویسه‌های بعد از آن مانند نرخ اتصال در فایل گزارش می‌نویسد. .SH "رشته‌های پاکسازی گزارش (CLR_REPORT STRINGS)" این توالی امکان پاک کردن رشته‌های \fBREPORT\fR تنظیم‌شده قبلی را فراهم می‌کند. رشته‌های \fBREPORT\fR در آرایه‌ای با اندازه از پیش تعیین‌شده (در زمان کامپایل) نگهداری می‌شوند؛ \fBCLR_REPORT\fR فضای اختصاص‌یافته به ورودی‌های پاک‌شده را آزاد می‌کند تا رشته‌های جدید بتوانند از آن فضا استفاده کنند. .SH "پژواک (ECHO)" گزینه پژواک مشخص می‌کند که آیا خروجی دریافتی از مودم در \fIstderr\fR پژواک داده شود یا خیر. این گزینه را می‌توان با سوییچ .B \-e تنظیم کرد، اما همچنین می‌توان آن را با کلمه کلیدی \fIECHO\fR کنترل نمود. جفت «انتظار\-ارسال» \fIECHO\fR \fION\fR پژواک را فعال می‌کند و \fIECHO\fR \fIOFF\fR آن را غیرفعال می‌سازد. با این کلمه کلیدی می‌توانید مشخص کنید که کدام بخش‌های گفت‌وگو قابل مشاهده باشند. به عنوان مثال، با اسکریپت زیر: .IP .nf ABORT 'BUSY' ABORT 'NO CARRIER' \&'' ATZ OK\er\en ATD1234567 \er\en \ec ECHO ON CONNECT \ec ogin: account .fi .LP تمام خروجی‌های حاصل از پیکربندی مودم و شماره‌گیری پنهان خواهند بود، اما از پیام \fICONNECT\fR (یا \fIBUSY\fR) به بعد، همه چیز در خروجی پژواک داده خواهد شد. .SH "قطع تماس (HANGUP)" گزینه‌های HANGUP مشخص می‌کنند که آیا قطع شدن ارتباط مودم (hangup) باید به عنوان یک خطا تلقی شود یا خیر. این گزینه در اسکریپت‌های مربوط به شماره‌گیری سیستم‌هایی که تماس را قطع کرده و مجدداً با سیستم شما تماس برقرار می‌کنند (callback) مفید است. گزینه‌های HANGUP می‌توانند \fBON\fR یا \fBOFF\fR باشند. .LP هنگامی که HANGUP روی OFF تنظیم شود و مودم ارتباط را قطع کند (برای مثال پس از مرحله اول ورود به یک سیستم callback)، برنامه \fBchat\fR به اجرای اسکریپت ادامه خواهد داد (برای مثال، منتظر تماس ورودی و اعلان مرحله دوم ورود می‌ماند). به محض برقراری تماس ورودی، باید از دستورالعمل \fBHANGUP ON\fR برای فعال‌سازی مجدد رفتار معمول سیگنال قطع تماس استفاده کنید. در ادامه یک اسکریپت نمونه (ساده) آمده است: .IP .nf ABORT 'BUSY' \&'' ATZ OK\er\en ATD1234567 \er\en \ec CONNECT \ec \&'Callback login:' call_back_ID HANGUP OFF ABORT "Bad Login" \&'Callback Password:' Call_back_password TIMEOUT 120 CONNECT \ec HANGUP ON ABORT "NO CARRIER" ogin:\-\-BREAK\-\-ogin: real_account \fIetc ...\fR .fi .LP .SH "مهلت زمانی (TIMEOUT)" مقدار اولیه مهلت زمانی ۴۵ ثانیه است. این مقدار را می‌توان با استفاده از پارامتر .B \-t تغییر داد. .LP برای تغییر مقدار مهلت زمانی برای رشته انتظار بعدی، می‌توان از مثال زیر استفاده کرد: .IP .nf ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:\-\-ogin: TIMEOUT 5 assword: hello2u2 .fi .LP این دستور، مهلت زمانی را هنگام انتظار برای اعلان login: به ۱۰ ثانیه تغییر می‌دهد. سپس مهلت زمانی هنگام جستجو برای اعلان گذرواژه به ۵ ثانیه تغییر می‌یابد. .LP مهلت زمانی پس از تغییر، تا زمانی که مجدداً تغییر داده نشود، معتبر و پابرجا باقی می‌ماند. .SH "ارسال EOT (SENDING EOT)" رشته پاسخ ویژه \fIEOT\fR نشان می‌دهد که برنامه chat باید یک نویسه EOT (پایان انتقال) به سیستم راه دور ارسال کند. این نویسه معمولاً همان توالی نویسه پایان فایل (End-of-file) است. پس از EOT نویسه بازگشت سطر ارسال نمی‌شود. توالی EOT را می‌توان با استفاده از توالی \fI^D\fR درون رشته ارسال گنجاند. .SH "تولید سیگنال شکست (GENERATING BREAK)" رشته پاسخ ویژه \fIBREAK\fR باعث ارسال یک وضعیت شکست (break) می‌شود. سیگنال break یک سیگنال ویژه روی فرستنده است. پردازش معمول روی گیرنده، تغییر نرخ انتقال داده است. از این قابلیت می‌توان برای چرخش میان نرخ‌های انتقال موجود در سیستم راه دور استفاده کرد تا زمانی که بتوانید اعلان ورود معتبری را دریافت کنید. توالی break را می‌توان با استفاده از توالی \fI\eK\fR درون رشته ارسال قرار داد. .SH "توالی‌های گریز (ESCAPE SEQUENCES)" رشته‌های انتظار و پاسخ می‌توانند حاوی توالی‌های گریز (escape sequences) باشند. تمامی این توالی‌ها در رشته پاسخ مجاز هستند. بسیاری از آن‌ها در رشته انتظار نیز مجازند. مواردی که در توالی انتظار معتبر نیستند، مشخص شده‌اند. .TP .B '' منتظر یک رشته تهی می‌ماند یا آن را ارسال می‌کند. اگر یک رشته تهی ارسال کنید، همچنان نویسه بازگشت سطر (Enter) ارسال خواهد شد. این توالی می‌تواند یک جفت نویسه آپوستروف یا گیومه باشد. .TP .B \eb نشان‌دهنده یک نویسه پس‌بر (backspace) است. .TP .B \ec از ارسال نویسه خط جدید در انتهای رشته پاسخ جلوگیری می‌کند. این تنها روش برای ارسال یک رشته بدون نویسه بازگشت سطر پایانی است. این توالی باید در انتهای رشته ارسالی قرار گیرد؛ برای نمونه توالی hello\ec صرفاً نویسه‌های h, e, l, l, o را ارسال می‌کند. .I (در رشته انتظار معتبر نیست.) .TP .B \ed ایجاد تاخیر به مدت یک ثانیه. برنامه از تابع sleep(1) استفاده می‌کند که حداکثر تا یک ثانیه تاخیر ایجاد خواهد کرد. .I (در رشته انتظار معتبر نیست.) .TP .B \eK درج سیگنال BREAK. .I (در رشته انتظار معتبر نیست.) .TP .B \en ارسال نویسه خط جدید (newline یا linefeed). .TP .B \eN ارسال یک نویسه پوچ (null character). همین توالی را می‌توان با \e0 نیز نمایش داد. .I (در رشته انتظار معتبر نیست.) .TP .B \ep توقف موقت به مدت کسری از ثانیه. این تاخیر برابر با ۱/۱۰ ثانیه است. .I (در رشته انتظار معتبر نیست.) .TP .B \eq جلوگیری از نوشتن رشته در فایل لاگ SYSLOG. به جای آن رشته ?????? در گزارش ثبت می‌شود. .I (در رشته انتظار معتبر نیست.) .TP .B \er ارسال یا انتظار برای نویسه بازگشت به ابتدای سطر (carriage return). .TP .B \es نشان‌دهنده نویسه فاصله (space) در رشته است. این گزینه زمانی کاربرد دارد که قرار دادن رشته‌های حاوی فاصله درون نقل‌قول مطلوب نباشد. توالی‌های 'HI TIM' و HI\esTIM یکسان هستند. .TP .B \et ارسال یا انتظار برای نویسه تب (tab). .TP .B \eT ارسال رشته شماره تلفن به همان صورتی که با گزینه .B \-T مشخص شده است. .I (در رشته انتظار معتبر نیست.) .TP .B \eU ارسال رشته شماره تلفن دوم به همان صورتی که با گزینه .B \-U مشخص شده است. .I (در رشته انتظار معتبر نیست.) .TP .B \e\e ارسال یا انتظار برای نویسه بک‌اسلش (\e). .TP .B \eddd تبدیل ارقام هشت‌هشتی (octal digits - ddd) به یک نویسه اسکی (ASCII) واحد و ارسال آن نویسه. .I (برخی نویسه‌ها در رشته انتظار معتبر نیستند.) .TP .B \^^C جایگزینی توالی با نویسه کنترلی متناظر با C. برای مثال، نویسه DC1 (17) به صورت \^^Q نمایش داده می‌شود. .I (برخی نویسه‌ها در رشته انتظار معتبر نیستند.) .SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)" متغیرهای محیطی درون اسکریپت‌های chat در دسترس هستند، به شرطی که گزینه .B \-E در خط فرمان مشخص شده باشد. فراکاراکتر \fI$\fR برای معرفی نام متغیر محیطی جهت جایگزینی استفاده می‌شود. اگر جایگزینی به دلیل تنظیم نبودن متغیر محیطی درخواستی با شکست مواجه شود، \fInothing\fR (رشته خالی) به جای متغیر جایگزین خواهد شد. .SH "کدهای خروج (TERMINATION CODES)" برنامه \fIchat\fR با کدهای وضعیت زیر خاتمه می‌یابد: .TP .B 0 خاتمه عادی برنامه. این کد نشان می‌دهد که اسکریپت بدون خطا تا پایان به صورت عادی اجرا شده است. .TP .B 1 یک یا چند پارامتر نامعتبر هستند یا یک رشته انتظار برای بافرهای داخلی بیش از حد بزرگ بوده است. این کد نشان می‌دهد که برنامه به درستی اجرا نشده است. .TP .B 2 خطایی در حین اجرای برنامه رخ داده است. این امر ممکن است ناشی از شکست عملیات خواندن یا نوشتن یا دریافت سیگنالی مانند SIGINT توسط chat باشد. .TP .B 3 هنگامی که یک رشته \fIexpect\fR بدون داشتن رشته "\-subsend" وجود داشته، یک رخداد مهلت زمانی (timeout) پیش آمده است. این ممکن است به این معنا باشد که شما اسکریپت را برای آن شرایط به درستی تنظیم نکرده‌اید یا یک رخداد غیرمنتظره پیش آمده و رشته مورد نظر یافت نشده است. .TP .B 4 اولین رشته‌ای که به عنوان وضعیت \fIABORT\fR تعیین شده بود رخ داده است. .TP .B 5 دومین رشته‌ای که به عنوان وضعیت \fIABORT\fR تعیین شده بود رخ داده است. .TP .B 6 سومین رشته‌ای که به عنوان وضعیت \fIABORT\fR تعیین شده بود رخ داده است. .TP .B 7 چهارمین رشته‌ای که به عنوان وضعیت \fIABORT\fR تعیین شده بود رخ داده است. .TP .B ... سایر کدهای خاتمه نیز نشان‌دهنده رشته‌هایی هستند که به عنوان وضعیت \fIABORT\fR تعیین شده بودند. .LP با استفاده از کد خاتمه، می‌توان مشخص کرد که کدام رخداد باعث پایان یافتن اسکریپت شده است. برای نمونه می‌توان تشخیص داد که آیا رشته "BUSY" از مودم دریافت شده یا "NO DIAL TONE". در حالی که رخداد اول را می‌توان دوباره تلاش کرد، رخداد دوم احتمالاً شانس کمی برای موفقیت در تلاش مجدد دارد. .SH "همچنین ببینید (SEE ALSO)" اطلاعات بیشتر درباره اسکریپت‌های \fIchat\fR را می‌توان در مستندات UUCP یافت. ایده اسکریپت \fIchat\fR از ایده‌های ارائه‌شده توسط اسکریپت‌های مورد استفاده در برنامه \fIuucico\fR گرفته شده است. .LP .BR uucico (1), .BR uucp (1), .BR pppd (8) .SH "نویسنده (AUTHOR)" برنامه \fIchat\fR توسط کارل فاکس (Karl Fox) نوشته شده است. .SH "حق نشر (COPYRIGHT)" برنامه \fIchat\fR در مالکیت عمومی (Public Domain) قرار دارد. این نرم‌افزار تحت مجوز عمومی گنو (GPL) نیست. اگر شکست، هر دو تکه‌اش مال خودتان است!