WHIPTAIL(1) General Commands Manual WHIPTAIL(1)

whiptail - نمایش جعبه‌های گفتگو از طریق اسکریپت‌های شل

whiptail [ --title title ] [ --backtitle backtitle ] [ --clear ] [ --default-item string ] [ --defaultno ] [ --fb ] [ --nocancel ] [ --yes-button text ] [ --no-button text ] [ --ok-button text ] [ --cancel-button text ] [ --noitem [ ] --output-fd fd ] [ --separate-output ] [ --scrolltext ] [ --topleft ] box-options

whiptail برنامه‌ای است که به شما امکان می‌دهد با استفاده از جعبه‌های گفتگو از درون یک اسکریپت شل، پرسش‌های متنوعی را مطرح کرده یا پیام‌هایی را نمایش دهید. در حال حاضر، این نوع از جعبه‌های گفتگو پیاده‌سازی شده‌اند:

جعبه‌های yes/no، menu، input، message، text، info، checklist، radiolist، gauge، و password.

هنگام خروج، صفحه با مشخصهٔ صفحه (screen attribute) پاک خواهد شد. اگر تعویض صفحهٔ جایگزین (alternate screen switching) فعال باشد، این گزینه در xterm (و مشتقات آن) کار نمی‌کند؛ زیرا در این حالت slang در یک صفحهٔ جایگزین می‌نویسد (و آن را پاک می‌کند).
جعبهٔ گفتگو با قرار گرفتن مکان‌نما روی دکمهٔ No باز خواهد شد.
تنظیم آیتم پیش‌فرض در یک جعبهٔ menu. به طور معمول، نخستین آیتم در جعبه پیش‌فرض است.
استفاده از دکمه‌های کامل. (به طور پیش‌فرض، whiptail از دکمه‌های فشرده استفاده می‌کند).
جعبهٔ گفتگو دکمهٔ Cancel نخواهد داشت.
تنظیم متن دکمهٔ Yes.
تنظیم متن دکمهٔ No.
تنظیم متن دکمهٔ Ok.
تنظیم متن دکمهٔ Cancel.
ویجت‌های menu، checklist و radiolist فقط برچسب‌ها (tags) را نمایش می‌دهند، نه رشته‌های آیتم (items) را. ویجت menu همچنان نیازمند مشخص شدن برخی آیتم‌ها است، اما checklist و radiolist تنها منتظر برچسب (tag) و وضعیت (status) هستند.
برچسب‌ها (tags) در ویجت‌های menu، checklist و radiolist نمایش داده نشوند.
برای ویجت‌های checklist، خروجی در هر خط یکی و بدون علامت نقل‌قول چاپ می‌شود. این امر تجزیهٔ خروجی توسط برنامه‌های دیگر را آسان می‌کند.
هدایت مستقیم خروجی به توصیف‌گر فایل (file descriptor) داده‌شده. اکثر اسکریپت‌های whiptail خروجی را در خطای استاندارد (stderr) می‌نویسند، اما بسته به اسکریپت شما، پیام‌های خطا نیز ممکن است در آنجا نوشته شوند.
یک رشتهٔ title (عنوان) را برای نمایش در بالای جعبهٔ گفتگو تعیین می‌کند.
یک رشتهٔ backtitle (عنوان پس‌زمینه) را برای نمایش در پس‌زمینه، در بالای صفحه تعیین می‌کند.
اجبار به نمایش نوار پیمایش عمودی.
قرار دادن پنجره در گوشهٔ بالا-چپ.
چاپ پیام راهنما و خروج.
چاپ اطلاعات نسخه و خروج.
گزینه‌های جعبه (Box Options)
یک جعبهٔ گفتگوی بله/خیر (yes/no) به ابعاد height سطر در width ستون نمایش داده خواهد شد. رشتهٔ مشخص‌شده توسط text درون جعبهٔ گفتگو نمایش می‌یابد. اگر این رشته برای جا شدن در یک سطر خیلی طولانی باشد، به طور خودکار در نقاط مناسب به چند سطر شکسته خواهد شد. رشتهٔ text همچنین می‌تواند شامل زیررشتهٔ \n یا نویسه‌های خط جدید `\n' باشد تا شکستن خطوط به طور صریح کنترل شود. این جعبهٔ گفتگو برای پرسیدن سوالاتی که کاربر باید با بله یا خیر به آن‌ها پاسخ دهد مفید است. جعبهٔ گفتگو دارای دکمه‌های Yes و No است که کاربر می‌تواند با فشردن کلید TAB بین آن‌ها جابه‌جا شود.
یک جعبهٔ message بسیار شبیه به جعبهٔ yes/no است. تنها تفاوت بین جعبهٔ message و جعبهٔ yes/no این است که جعبهٔ message تنها یک دکمهٔ OK دارد. شما می‌توانید از این جعبه برای نمایش هر پیامی که مایلید استفاده کنید. پس از خواندن پیام، کاربر می‌تواند کلید ENTER را فشار دهد تا whiptail خارج شده و اسکریپت شل فراخواننده بتواند به عملیات خود ادامه دهد.
یک جعبهٔ info اساساً یک جعبهٔ message است. با این حال، در این حالت، whiptail بلافاصله پس از نمایش پیام به کاربر خارج می‌شود. هنگام خروج whiptail، صفحه پاک نمی‌شود تا پیام روی صفحه باقی بماند تا زمانی که اسکریپت شل فراخواننده بعداً آن را پاک کند. این گزینه زمانی مفید است که می‌خواهید به کاربر اطلاع دهید عملیاتی در حال انجام است که ممکن است برای پایان به مدتی زمان نیاز داشته باشد.
یک جعبهٔ input زمانی مفید است که می‌خواهید پرسش‌هایی مطرح کنید که نیازمند وارد کردن یک رشته به عنوان پاسخ توسط کاربر هستند. اگر init ارائه شود، برای مقداردهی اولیهٔ رشتهٔ ورودی به کار می‌رود. هنگام وارد کردن رشته، می‌توان از کلید BACKSPACE برای تصحیح خطاهای تایپی استفاده کرد. اگر رشتهٔ ورودی بلندتر از عرض جعبهٔ گفتگو باشد، فیلد ورودی پیمایش خواهد شد. هنگام خروج، رشتهٔ ورودی روی stderr چاپ خواهد شد.
یک جعبهٔ password شبیه به یک جعبهٔ ورودی است، با این تفاوت که متن واردشده توسط کاربر نمایش داده نمی‌شود. این قابلیت هنگام درخواست گذرواژه‌ها یا سایر اطلاعات حساس مفید است. آگاه باشید که اگر مقداری در "init" داده شود، در جدول پردازش‌های سیستم برای افراد کنجکاو قابل مشاهده خواهد بود. همچنین ارائه گذرواژهٔ پیش‌فرضی که کاربر قادر به دیدن آن نیست بسیار گیج‌کننده است. به این دلایل، استفاده از "init" به شدت منع می‌شود.
یک جعبهٔ text به شما امکان می‌دهد محتویات یک فایل متنی را در یک جعبهٔ گفتگو نمایش دهید. این جعبه مانند یک نمایش‌دهندهٔ سادهٔ فایل متنی عمل می‌کند. کاربر می‌تواند با استفاده از کلیدهای UP/DOWN، PGUP/PGDN و HOME/END که در اغلب صفحه‌کلیدها موجودند، در فایل پیمایش کند. اگر سطرها طولانی‌تر از آن باشند که در جعبه نمایش داده شوند، می‌توان از کلیدهای LEFT/RIGHT برای پیمایش افقی ناحیهٔ متنی استفاده کرد. جهت سهولت بیشتر، قابلیت‌های جستجو به جلو و عقب نیز فراهم شده‌اند.
همان‌طور که از نامش پیداست، یک جعبهٔ menu جعبه‌ای است که می‌تواند برای ارائه فهرستی از انتخاب‌ها در قالب یک منو به کاربر استفاده شود. هر مدخل منو از یک رشتهٔ tag و یک رشتهٔ item تشکیل شده است. tag نامی به این مدخل می‌دهد تا آن را از سایر مدخل‌های منو متمایز کند. item شرح کوتاهی از گزینه‌ای است که آن مدخل نشان می‌دهد. کاربر می‌تواند با فشردن کلیدهای UP/DOWN بین مدخل‌های منو جابه‌جا شود، یا حرف اول tag را به عنوان کلید میانبر بفشارد. در هر لحظه به تعداد menu-height مدخل در منو نمایش داده می‌شود، اما اگر تعداد مدخل‌ها بیشتر از آن باشد، منو پیمایش خواهد شد. هنگامی که whiptail خارج می‌شود، tag مدخل انتخاب‌شده روی stderr چاپ خواهد شد.
یک جعبهٔ checklist از این نظر شبیه به جعبهٔ menu است که چندین مدخل در قالب یک منو ارائه می‌شوند. می‌توانید با استفاده از کلید SPACE آیتم‌ها را انتخاب یا لغو انتخاب کنید. وضعیت اولیهٔ فعال/غیرفعال (on/off) هر مدخل توسط status مشخص می‌شود. هنگام خروج، فهرستی از رشته‌های tag مربوط به مدخل‌های فعال، روی stderr چاپ خواهد شد.
یک جعبهٔ radiolist شبیه به جعبهٔ menu است. تنها تفاوت این است که می‌توانید مشخص کنید کدام مدخل در حال حاضر انتخاب شده است، که این کار با تنظیم status آن روی on انجام می‌شود.
یک جعبهٔ gauge یک درجه‌بندی (نوار پیشرفت) را در امتداد پایین جعبه نمایش می‌دهد. این درجه یک درصد را نشان می‌دهد. درصدهای جدید از ورودی استاندارد (stdin)، هر سطر یک عدد صحیح، خوانده می‌شوند. درجه برای انعکاس هر درصد جدید به‌روزرسانی می‌شود. اگر ورودی استاندارد XXX باشد، نخستین سطر پس از آن درصد بوده و سطرهای بعدی تا XXX بعدی برای متن راهنمای جدید (prompt) استفاده می‌شوند. سنجش‌گر زمانی که در stdin به EOF برسد خارج می‌شود.

دستور whiptail آرگومان‌هایی را که با خط تیره "-" شروع می‌شوند به عنوان گزینه تفسیر می‌کند. برای جلوگیری از این موضوع و شروع یک متن (مثلاً در یک آیتم menubox) با خط تیره، whiptail از قرارداد getopt برای پذیرش آرگومان ویژهٔ "--" پیروی می‌کند؛ بدین معنی که با تمام آرگومان‌های بعدی دارای خط تیره، به صورت تحت‌اللفظی رفتار شده و به عنوان گزینه تجزیه نمی‌شوند.

اگر مقادیر مشخص‌شده برای height، width یا menu/list-height صفر باشند، whiptail مقادیر را بر حسب نیاز افزایش می‌دهد تا تمام اطلاعات به نمایش درآیند.

وضعیت خروج برابر 0 است اگر خروج از whiptail با فشردن دکمه‌های Yes یا OK انجام شده باشد، و 1 است اگر دکمه‌های No یا Cancel فشرده شوند. در غیر این صورت، اگر خطاهایی درون whiptail رخ دهد یا خروج از whiptail با فشردن کلید ESC انجام شود، وضعیت خروج برابر -1 خواهد بود.

بر پایهٔ صفحهٔ راهنمای dialog(1) توسط:

Savio Lam (lam836@cs.cuhk.hk) - نسخهٔ 0.3

Stuart Herbert (S.Herbert@sheffield.ac.uk) - وصله برای نسخهٔ 0.4

تغییرات برای whiptail توسط:

Enrique Zanardi (ezanard@debian.org)

Alastair McKinstry (mckinstry@debian.org)

31 January 2007 Whiptail Version 0.52.5