व्हिपटेल या संवाद


15

मैं स्क्रिप्ट बनाने जा रहा हूं जो उपयोगकर्ता इनपुट का उपयोग करेगा, इसलिए मैंने व्हिपटेल का उपयोग करने का निर्णय लिया, लेकिन थोड़ा भ्रमित हो गया कि कौन सा पोर्टेबल है और उबंटू 10.x और उच्च और CentOs5.x और उच्चतर में काम करेगा।

मुझे पता है read, लेकिन मुझे डायलॉग जैसे टूल चाहिए, इसलिए अगर किसी को कोई विकल्प पता हो तो मुझे बताएं।


एकदम चमक whiptailएक रिप बंद बंद dialog?
sjas

जवाबों:


12

whiptailअधिकांश डिबेट-आधारित सिस्टम पर डिफ़ॉल्ट रूप से स्थापित होता है, जबकि dialogऐसा नहीं है।

Afpm, rpm- आधारित whiptailभी डिफ़ॉल्ट संवाद ऐप है।

मुझे लगता है कि यह आपके लिए मायने रखता है।

तो whiptailपोर्टेबिलिटी के बिंदु से सही विकल्प है।

पर भी whiptailआधारित है newt, जबकि dialogपर आधारित है ncurses। मेरे दृष्टिकोण से, पहला वाला अधिक सुंदर है:


अतिरिक्त जानकारी जानने के लिए अच्छा है :)
राहुल पाटिल

2
स्क्रिप्ट और अधिक या कम पोर्टेबल हो सकता है, लेकिन संवाद कार्यक्रम में ही whiptail से कम नहीं पोर्टेबल है।
थॉमस डिके

8

दोनों का उपयोग क्यों न करें:

(बैश 4 की आवश्यकता है)

#!/usr/bin/env bash
t(){ type "$1"&>/dev/null;}
function Menu.Show {
   local DIA DIA_ESC; while :; do
      t whiptail && DIA=whiptail && break
      t dialog && DIA=dialog && DIA_ESC=-- && break
      exec date +s"No dialog program found"
   done; declare -A o="$1"; shift
   $DIA --backtitle "${o[backtitle]}" --title "${o[title]}" \
      --menu "${o[question]}" 0 0 0 $DIA_ESC "$@"; }



Menu.Show '([backtitle]="Backtitle"
            [title]="Title"
            [question]="Please choose:")'          \
                                                   \
            "Option A"  "Stuff...."                \
            "Option B"  "Stuff...."                \
            "Option C"  "Stuff...."    

1
बहुत कठिन। ऐसा कुछ क्यों नहीं which whiptail && window=whiptail; which dialog && window=dialog; [ -z window ] && echo "no whiptail or dialog":। तब ऑप सिर्फ `$ विंडो कर सकते हैं - सीटी फू --msgbox बार 87 5`।
जेम्स एम। ले।

6

(यह आवश्यक रूप से एक उत्तर नहीं है, लेकिन मैंने कोड की मात्रा के कारण इस तरह पोस्ट किया है। मेरे पास कोई व्यावहारिक अनुभव नहीं है whiptail। यदि कोई whiptailउपयोगकर्ता इस पर एक परीक्षण समाधान पोस्ट करता है तो बाद में इसे हटा देगा ।)

के रूप में बैश शेल पटकथा / Whiptail लिखते हैं:

इसके README से: व्हिपटेल को डायलॉग (1) के साथ संगत करने के लिए डिज़ाइन किया गया है, लेकिन इसमें कम विशेषताएं हैं: कुछ संवाद बॉक्स कार्यान्वित नहीं किए जाते हैं, जैसे टेलबॉक्स, टाइमबॉक्स, कैलेंडरबॉक्स, आदि।

इसका मतलब है कि आपको एक या दूसरे के लिए निर्णय लेने की आवश्यकता नहीं है। बस यह पता लगाएं कि कौन सा उपलब्ध है तो स्क्रिप्ट का उपयोग करें:

# check whether whiptail or dialog is installed
# (choosing the first command found)
read dialog <<< "$(which whiptail dialog 2> /dev/null)"

# exit if none found
[[ "$dialog" ]] || {
  echo 'neither whiptail nor dialog found' >&2
  exit 1
}

# just use whichever was found
"$dialog" --msgbox "Message displayed with $dialog" 0 0

(हां, ऊपर का पता लगाने में न्यूलाइन वर्णों के नाम वाले निर्देशिकाओं के अंदर स्थापित टूल विफल हो जाएंगे। मैंने इसे सरल रखा है।)


5

संवाद की संगतता अनुभाग के अनुसार (1) मैनुअल पेज :

फिर व्हिपटेल है । व्यावहारिक उद्देश्यों के लिए, यह डेबियन द्वारा बनाए रखा गया है (इसके अपस्ट्रीम डेवलपर्स द्वारा बहुत कम काम किया जाता है)। इसके प्रलेखन (README.whiptail) का दावा है

व्हिपटेल (1) डायलॉग (1) के लिए एक हल्का प्रतिस्थापन है , जो शेल स्क्रिप्ट के लिए डायलॉग बॉक्स प्रदान करता है। यह ncurses लाइब्रेरी के बजाय न्यूट विंडोिंग लाइब्रेरी पर बनाया गया है, यह एम्बेडेड वातावरणों जैसे कि इंस्टॉलर, रेस्क्यू डिस्क आदि में छोटा होने की अनुमति देता है।

व्हिपटेल को डायल-इन के साथ संगत करने के लिए डिज़ाइन किया गया है, लेकिन इसमें कम विशेषताएं हैं: कुछ संवाद बॉक्स कार्यान्वित नहीं किए जाते हैं, जैसे टेलबॉक्स, टाइमबॉक्स, कैलेंडरबॉक्स, आदि।

वास्तविक आकार (डेबियन परीक्षण, 2007/01/10) की तुलना करना: के लिए आकार के कुल whiptail , न्यूट, popt और खिचड़ी पुस्तकालयों 757 KB है। संवाद (ncurses की गिनती) के लिए तुलनीय संख्या 520 KB है। पहले पैराग्राफ की उपेक्षा करें।

दूसरा पैराग्राफ भ्रामक है, क्योंकि * व्हिप्टेल ** भी संवाद के सामान्य विकल्पों के लिए काम नहीं करता है , जैसे कि गेज बॉक्स। 1990 के दशक के मध्य के डायल 0.4 कार्यक्रम की तुलना में व्हिपटेल संवाद के साथ कम संगत है ।

व्हिपटैल के मैनपेज उधार की विशेषताएँ संवाद से लेते हैं , उदाहरण के लिए, लेकिन केवल स्रोत के रूप में 0.4 (1994) तक केवल संवाद संस्करण का ही हवाला देते हैं । यही है, इसका मेनपेज उन विशेषताओं को संदर्भित करता है, जिन्हें संवाद के हाल के संस्करणों से उधार लिया गया था , जैसे,

  • - गेज (0.5 से)

  • --passwordbox (1999 में डेबियन परिवर्तनों से),

  • --डफ़ॉल्ट-आइटम ( संवाद 2000/02/22 से),

  • --आउटपुट -एफडी ( डायलॉग 2002/08/14 से)।

थोड़े विनोदी रूप से, कोई यह नोट कर सकता है कि पॉप -फ़ीचर (इसके मैनपेज में अनडॉस्मेंटेड) "-" का उपयोग करते हुए "के रूप में एक साल पहले डायलॉग के मैनपेज में डॉक्युमेंट किया गया था, जिसका उल्लेख व्हिपटैल के मैनपेज में किया गया था । व्हिपटेल का मैनपेज गलत तरीके से बताता है कि इसे कैसे प्राप्त करें (और वैसे भी गलत है)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.