whiptail veya diyalog


15

Ben kullanıcı girişi kullanacak komut dosyası oluşturacağım, bu yüzden whiptail kullanmaya karar verdim, ama biraz taşınabilir olanı ve ubuntu 10.x ve daha yüksek ve CentOs5.x ve daha yüksek çalışacak karıştırmayın.

Biliyorum read, ama araç gibi bir diyalog istiyorum, bu yüzden herhangi bir alternatif biliyorsa bana haber ver.


değildi whiptailbir soygun kapalı dialog?
sjas

Yanıtlar:


12

whiptailvarsayılan olarak çoğu deb tabanlı sistemde kurulurken kurulmaz dialog.

Afair, rpm tabanlı whiptailda varsayılan iletişim uygulamasıdır.

Sanırım senin için önemli.

Yani whiptailtaşınabilirlik açısından doğru bir seçimdir.

Ayrıca whiptaildayanmaktadır newtederken, dialogdayanmaktadır ncurses. Benim açımdan, ilki daha güzel (:


ekstra bilgi bilmek iyi :)
Rahul Patil

2
Senaryo az çok taşınabilir olabilir, ama iletişim programı kendisi Whiptail daha az taşınabilir.
Thomas Dickey

8

Neden her ikisini de kullanmıyorsunuz:

(Bash 4 gerektirir)

#!/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
Çok karışık. Neden böyle bir şey: which whiptail && window=whiptail; which dialog && window=dialog; [ -z window ] && echo "no whiptail or dialog". O zaman op sadece "$ window --title foo --msgbox bar 87 5" yapabilir.
James

6

(Bu mutlaka bir cevap değildir, ancak kod miktarı nedeniyle böyle yayınladım. Pratik bir deneyimim yok whiptail. whiptailKullanıcı bu konuda test edilmiş bir çözüm gönderirse bunu daha sonra silecektir .)

As Bash Shell Scripting / Whiptail yazıyor:

README'sinden: whiptail, diyalog (1) ile uyumlu olacak şekilde tasarlanmıştır, ancak daha az özelliğe sahiptir: kuyruk kutusu, zaman kutusu, takvim kutusu gibi bazı iletişim kutuları uygulanmaz.

Bu, biri ya da diğeri için karar vermek zorunda olmadığınız anlamına gelir. Sadece hangisinin kullanılabilir olduğunu tespit edin ve komut dosyasının kullanmasına izin verin:

# 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

(Evet, yukarıdaki algılama, yeni satır karakterleri içeren adlarla dizinlerin içine yüklenen araçlarda başarısız olacaktır. Sadece basit tuttum.)


5

İletişim kutusunun (1) kılavuz sayfasının UYUMLULUK bölümüne göre :

Sonra kırbaç var . Pratik amaçlar için, Debian tarafından korunur (yukarı akış geliştiricileri tarafından çok az çalışma yapılır). Belgeleri (README.whiptail) iddiaları

whiptail (1), kabuk komut dosyaları için iletişim kutuları sağlamak amacıyla iletişim kutusunun (1) hafif bir değişimidir . Montajcılar, kurtarma diskleri gibi gömülü ortamlarda daha küçük olmasına izin veren ncurses kütüphanesi yerine newt pencereleme kütüphanesi üzerine inşa edilmiştir.

whiptail iletişim kutusuyla açılan uyumlu olacak şekilde tasarlanmıştır, ancak daha az özelliğe sahiptir: kuyruk kutusu, zaman kutusu, takvim kutusu gibi bazı iletişim kutuları uygulanmaz.

Gerçek boyutlar (Debian'ın test, 2007/01/10) karşılaştırılması: için boyutlarda toplam Whiptail , kertenkele, popt ve argo kütüphaneleri 757 KB. İletişim kutusu (ncurses sayma) için karşılaştırılabilir sayı 520 KB'dir. İlk paragrafı dikkate almayın.

İkinci paragraf yanıltıcıdır, çünkü * whiptail ** ayrıca gösterge kutusu gibi genel iletişim seçenekleri için çalışmaz . whiptail 1990'lı yılların ortalarındaki diyalog 0.4 programından daha az diyalog ile uyumludur .

whiptail 'ın manpage iletişim kutusundan özellikler ödünç alır , ancak garip bir şekilde sadece 0,4 (1994)' e kadar olan iletişim sürümlerini kaynak olarak gösterir. Yani, onun sayfası iletişim kutusunun daha yeni sürümlerinden ödünç alınan özellikleri ifade eder , ör.

  • - ölçer (0,5'ten itibaren)

  • --passwordbox (1999'daki Debian değişikliklerinden),

  • - varsayılan öğe ( 2000/02/22 iletişim kutusundan ),

  • --output-fd ( 2002/08/14 iletişim kutusundan).

Biraz mizahi bir not olabileceğini popt bir kullanmanın (kendi manpage belgelenmemiş) özelliği - bir kaçış belgelenmiştir gibi "" iletişim 'o sözü önce yaklaşık bir yıl lar manpage whiptail s manpage'. whiptail 'in manpage'i yanlış bir şekilde getopt (ve yine de yanlış) ile ilişkilendirir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.