.TH KIBITZ 1 "19 October 1994" .SH "نام (NAME)" kibitz \- فراهم کردن امکان تعامل دو یا چند نفر با یک شل .SH "خلاصه دستور (SYNOPSIS)" .B kibitz [ .I kibitz-args ] .I user [ .I program program-args... ] .br .B kibitz [ .I kibitz-args ] .I user@host [ .I program program-args... ] .SH "مقدمه (INTRODUCTION)" .B kibitz به دو (یا چند) نفر امکان می‌دهد تا با یک شل (یا هر برنامه دلخواهی) تعامل داشته باشند. کاربردهای آن شامل موارد زیر است: .RS .TP 4 \(bu یک کاربر مبتدی می‌تواند از یک کاربر باتجربه کمک بخواهد. با استفاده از .BR kibitz ، کاربر باتجربه می‌تواند کارهای کاربر را مشاهده کرده و راهنمایی ارائه دهد یا شیوه درست انجام آن را نشان دهد. .TP \(bu با اجرای .B kibitz و سپس آغاز یک ویرایشگر تمام‌صفحه، افراد می‌توانند گفتگو کنند؛ در حالی که امکان پیمایش به عقب، ذخیره کل گفتگو، یا حتی ویرایش آن در حین گفتگو حفظ می‌شود. .TP \(bu افراد می‌توانند در بازی‌ها، ویرایش اسناد یا سایر فعالیت‌های مشارکتی که در آن‌ها مهارت‌های هر شخص مکمل یکدیگر است، به صورت تیمی همکاری کنند. .RE .SH "نحوه استفاده (USAGE)" برای شروع .BR kibitz ، کاربر اول (user1) دستور kibitz را با آرگومان کاربری که می‌خواهد با او تعامل داشته باشد اجرا می‌کند. برای مثال: .PP .nf kibitz user2 .fi .PP .B kibitz یک شل جدید (یا برنامه‌ای دیگر در صورت مشخص شدن در خط فرمان) را آغاز می‌کند و هم‌زمان از user2 می‌خواهد تا .B kibitz را اجرا کند. اگر user2 طبق دستور عمل کند و .B kibitz را اجرا نماید، کلیدهای فشرده‌شده توسط هر دو کاربر به عنوان ورودی شل در نظر گرفته می‌شوند. به طور مشابه، هر دو کاربر خروجی شل را دریافت می‌کنند. .PP برای پایان دادن به .B kibitz کافی است خود شل خاتمه یابد. برای مثال، اگر هر یک از کاربران کلیدهای ^D را فشار دهد (و شل این را به عنوان EOF در نظر بگیرد)، ابتدا شل خاتمه می‌یابد و به دنبال آن .B kibitz به کار خود پایان می‌دهد. .PP در حالت عادی، تمام کاراکترها بدون تفسیر منتقل می‌شوند. با این حال، اگر کاراکتر گریز (escape character) که در زمان راه‌اندازی .B kibitz توصیف می‌شود وارد گردد، کاربر می‌تواند مستقیماً با مفسر .B kibitz گفتگو کند. هر دستور .BR Expect (1) یا .BR Tcl (3) را می‌توان در این بخش اجرا کرد. همچنین، در حین حضور در مفسر می‌توان از کنترل وظایف (job control) برای اموری مانند تعلیق یا راه‌اندازی مجدد .B kibitz استفاده نمود. .PP فرایندهای گوناگون می‌توانند رفتارهای متفاوتی ارائه دهند. برای مثال، می‌توانید با دستور زیر یک نشست دوطرفه شبیه به write(1) را شبیه‌سازی کنید: .PP .nf kibitz user2 sleep 1000000 .fi .SH "آرگومان‌ها (ARGUMENTS)" .B kibitz آرگومان‌هایی می‌پذیرد که باید با فاصله خالی (whitespace) از یکدیگر جدا شوند. .PP گزینه .B \-noproc دستور .B kibitz را بدون اجرای هیچ فرایندی در پس‌زمینه اجرا می‌کند. کاراکترها مستقیماً به نسخه دیگر .B kibitz منتقل می‌شوند. این حالت به‌ویژه برای پیوند دادن چندین فرایند تعاملی به یکدیگر سودمند است. در این حالت، کاراکترهای تایپ‌شده برای کاربر بازتاب (echo) داده نمی‌شوند. .PP گزینه .B \-noescape کاراکتر گریز را غیرفعال می‌کند. .PP گزینه .BI \-escape " char" کاراکتر گریز را تعیین می‌کند. کاراکتر گریز پیش‌فرض ^] است. .PP گزینه .B \-silent پیام‌های اطلاعاتی توصیف‌کننده اقدامات kibitz برای برقراری اتصال را غیرفعال می‌سازد. .PP گزینه .BI \-tty " ttyname" ترمینال tty که دعوت‌نامه باید به آن فرستاده شود را مشخص می‌کند. .PP اگر .B kibitz را برای user2 روی یک رایانه دوردست اجرا کنید، .B kibitz یک .B rlogin به رایانه مقصد با نام کاربری فعلی شما برقرار می‌کند. گزینه .BI \-proxy " username" باعث می‌شود .B rlogin از .I username برای ورود به سیستم دوردست استفاده کند (برای مثال زمانی که حساب کاربری شما در سیستم دوردست نام کاربری متفاوتی دارد). اگر گزینه .B \-proxy ارائه نشود، .B kibitz تلاش می‌کند تا نام کاربری کنونی شما را به ترتیب از طریق بررسی متغیرهای محیطی USER و LOGNAME، و سپس اجرای دستورات .B whoami و .B logname تشخیص دهد. .PP آرگومان‌های .B \-noescape و .B \-escape می‌توانند توسط user2 نیز در زمان درخواست برای اجرای .B kibitz تعیین شوند. .SH "بیش از دو کاربر (MORE THAN TWO USERS)" پیاده‌سازی کنونی kibitz صراحتاً تنها دو کاربر را می‌شناسد؛ با این حال، می‌توان از طریق فراخوانی متوالی .BR kibitz ، یک ارتباط سه (یا چند) نفره با kibitz ایجاد کرد. برای مثال، دستور زیر .B kibitz را با کاربر کنونی، user2 و user3 اجرا می‌کند: .PP .nf % kibitz user2 kibitz user3 .fi .PP کاربران بیشتر را می‌توان صرفاً با افزودن دستورهای بیشتر "kibitz user" اضافه کرد. .PP اسکریپت .B xkibitz مشابه .B kibitz است اما از قابلیت افزودن (و حذف) پویای کاربران پشتیبانی می‌کند. .SH "هشدارها (CAVEATS)" .B kibitz فرض می‌کند که کاربر دوم دارای اندازه و نوع ترمینال یکسانی با کاربر اول است. اگر این فرض نادرست باشد، برنامه‌های گرافیکی ممکن است به درستی نمایش داده نشوند. .PP .B kibitz از گرافیک کاراکتری پشتیبانی می‌کند، اما از گرافیک‌های بیت‌مپ (بیت‌نگاشت) پشتیبانی نمی‌کند. بنابراین: .PP .nf % xterm -e kibitz will work % kibitz xterm will not work .fi .PP با این حال، می‌توانید با استفاده از .B xkibitz به نتیجه دستور دوم دست یابید (بخش «همچنین ببینید» در زیر را بررسی کنید). .PP .B kibitz از همان دسترسی‌هایی استفاده می‌کند که توسط rlogin، rsh و غیره به کار گرفته می‌شوند. بنابراین، شما تنها می‌توانید با کاربرانی در میزبان‌هایی .B kibitz کنید که مجوز rlogin به آن‌ها را داشته باشید. به همین ترتیب، .B kibitz در صورتی که rlogin نیاز به گذرواژه داشته باشد، گذرواژه میزبان دوردست را درخواست خواهد کرد. .PP اگر به کاربرانی در میزبان‌های دوردست .B kibitz می‌کنید، .B kibitz باید بتواند اعلان خط فرمان (پرامپت) شما را از سایر مواردی که در حین ورود پیش از آن می‌آیند متمایز کند (به‌طور ایده‌آل انتهای آن ترجیح داده می‌شود، اما هر بخشی از آن باید کافی باشد). اگر اعلان غیرمعمولی دارید، متغیر محیطی EXPECT_PROMPT را روی یک عبارت باقاعده به سبک egrep(1) تنظیم کنید. کروشه‌ها در بازه‌ها باید با یک بک‌اسلش، و برای کروشه‌های عینی با سه بک‌اسلش اسکیپ شوند. عبارت باقاعده پیش‌فرض برای اعلان "($|%|#)\ " است. .PP دستور .B kibitz نیازمند نصب برنامه .B kibitz روی هر دو میزبان است. همچنین .B kibitz به .BR expect (1) نیاز دارد. .PP در مقایسه، اسکریپت .B xkibitz از سازوکار اعتبارسنجی X برای ارتباط میان میزبان‌ها استفاده می‌کند و در نتیجه نیازی به لاگین کردن، تشخیص پرامپت، یا وجود kibitz روی میزبان دوردست ندارد. با این حال نیازمند دسترسی به سایر سرورهای X است. .SH "اشکالات (BUGS)" نسخه‌های اولیه tmpfs شرکت سان (Sun) دارای نقصی بودند که باعث از کار افتادن .B kibitz می‌شد. اگر .B kibitz خطای "error flushing ...: Is a directory" را گزارش کرد، پچ شماره 100174 را از سان دریافت کنید. .PP اگر Expect شما بدون پشتیبانی از چندفرایندی کامپایل شده باشد (یعنی select یا poll کارآمد نداشته باشید)، قادر به اجرای kibitz نخواهید بود. .SH "محیط (ENVIRONMENT)" متغیر محیطی SHELL برای تعیین شلی که باید آغاز شود استفاده می‌شود، اگر برنامه دیگری در خط فرمان مشخص نشده باشد. .PP اگر متغیر محیطی EXPECT_PROMPT تعریف شده باشد، به عنوان یک عبارت باقاعده در نظر گرفته می‌شود که با انتهای اعلان ورود شما مطابقت دارد (اما در جای دیگری در حین ورود رخ نمی‌دهد). همچنین بخش «هشدارها» در بالا را ببینید. .PP اگر متغیرهای محیطی USER یا LOGNAME تعریف شده باشند، برای تعیین نام کاربری کنونی برای ارتباط .B kibitz به یک رایانه دوردست استفاده می‌شوند. توضیحات گزینه .B \-proxy در بخش «آرگومان‌ها» در بالا را ببینید. .SH "همچنین ببینید (SEE ALSO)" .BR Tcl (3), .BR libexpect (3), .BR xkibitz (1) .br .I "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" Rby Don Libes, O'Reilly and Associates, January 1995. .br .I "Kibitz \- Connecting Multiple Interactive Programs Together", Rby Don Libes, Software \- Practice & Experience, John Wiley & Sons, West Sussex, England, Vol. 23, No. 5, May, 1993. .SH "نویسندگان (AUTHORS)" Don Libes, National Institute of Standards and Technology .PP برنامه .B kibitz در مالکیت عمومی (Public Domain) قرار دارد. NIST و نویسنده قدردان ذکر نام در صورت استفاده از این برنامه یا بخش‌هایی از آن خواهند بود.