Linux Shell Komut Dosyalarına GUI Nasıl Eklenir
Yayınlanan: 2022-01-29
 Bash komut dosyalarınızda GUI pencerelerini, kaydırıcıları, radyo düğmelerini, ilerleme çubuklarını ve daha fazlasını kullanabilirsiniz. zenity araç setini nasıl kullanacağınızı öğrenin ve Bash komut dosyalarınıza bir görünüm kazandırın. Size nasıl olduğunu göstereceğiz.
Bash komut dosyası oluşturma, güçlü bir programlama dilidir ve Bash kabuğunda yerleşik olduğundan herkesin kullanımına açıktır. Programlamaya başlamak için kolay bir dildir. Yorumlandığı için betiklerinizi derlemeniz gerekmez. Komut dosyasını düzenlediğiniz ve çalıştırılabilir hale getirdiğiniz anda çalıştırabilirsiniz. Bu, kodlama, çalıştırma ve hata ayıklama döngüsünü oldukça verimli hale getirir.
İnsanların Bash komut dosyalarıyla ilgili iki ana şikayeti vardır ve ilki hızdır. Bash kabuğu komut dosyasındaki komutları yorumladığından, bunlar derlenmiş kod kadar hızlı yürütülmez. Ancak bu, traktörün araba kadar hızlı olmadığından şikayet etmeye benzer; onlar farklı şeyler içindir.
Yine de iki tür hız vardır. Genellikle hızlı bir komut dosyasını bir araya getirebilir ve bir görevi C gibi derlenmiş bir dilde bir çözüm geliştirmekten çok daha hızlı gerçekleştirmek için kullanabilirsiniz.
İnsanların Bash komut dosyalarıyla ilgili ikinci şikayeti, kullanıcı arayüzüdür - bu bir terminal penceresidir. Tabii ki, bazen arayüz önemli değil. Senaryoyu kullanacak tek kişi yazarıysa, arayüz muhtemelen o kadar önemli değildir. Arka plan ve toplu tip işleme gerçekleştiren komut dosyaları için de önemli değildir. Tipik olarak, bu tür komut dosyaları (varsa) çok fazla kullanıcı etkileşimine ihtiyaç duymaz.
Terminal penceresinden biraz daha sezgisel ve modern bir şeye ihtiyaç duyduğunuz durumlar vardır. Çoğu kişi bir grafik kullanıcı arayüzüne (GUI) aşinadır. İnsanlara olabildiğince sorunsuz bir deneyim sunmak için, komut dosyalarınızdan GUI öğeleri oluşturmalı ve kullanmalısınız.
Zenite Uygulaması
 zenity , Bash komut dosyalarınıza çok çeşitli grafik arabirim öğeleri eklemenize olanak tanır. Senaryolarınıza modern bir his ve çağdaş, tanıdık bir görünüm kazandıran güçlü bir araç takımıdır.
 zenity , Ubuntu, Fedora ve Manjaro dağıtımlarına önceden yüklenmiştir. GNOME'un bir parçasıdır. KDE kullanıyorsanız, zenity herhangi bir masaüstü ortamında çalışsa da, bunun yerine kdialog göz atmak isteyebilirsiniz.
Bu makaledeki örnekler, komut satırından farklı iletişim pencerelerinin nasıl oluşturulacağını, değişkenlerde bunların dönüş değerlerini ve kullanıcı seçimlerini nasıl yakalayacağınızı ve komut dosyalarında iletişim pencerelerinin nasıl kullanılacağını gösterir.
Üç tür iletişim penceresinin tümünü kullanan küçük bir uygulama ile bitiriyoruz.
Takvim İletişim Penceresi
 Bir takvim iletişim penceresi, birinin bir tarih seçmesine olanak tanır. zenity ile bir tane oluşturmak için iki kelimeden oluşan tek bir komut gerekir:
zenity --takvim

Takvim iletişim penceresi görünür. Bu, standart bir tarih seçiciden bekleyeceğiniz tüm işlevselliğe sahiptir. Ay ve yılı değiştirebilir ve o tarihi seçmek için bir güne tıklayabilirsiniz. Varsayılan olarak, pencere göründüğünde bugünün tarihi vurgulanır.

İletişim penceresini kapatmak ve vurgulanan tarihi seçmek için “Tamam”a tıklayın. Bir tarihe çift tıklamak da aynı şeyi yapar.
Tarih seçimi yapmak istemiyorsanız, “İptal”e tıklayın, klavyenizdeki “Esc” tuşuna basın veya diyalog penceresini kapatın.

Yukarıdaki örnekte 19 Ağustos 2019 seçilmiştir. Kullanıcı “Tamam”ı tıklarsa takvim kapanır ve seçilen tarih terminal penceresinde yazdırılır.

"GTKDialog, geçici bir ebeveyn olmadan eşlendi. Bu cesaret kırıcı.”
GTK, GNOME arayüzünü geliştirmek için kullanılan araç takımı olan GIMP Araç Kiti anlamına gelir. Başlangıçta GNU Görüntü İşleme Programının (GIMP) yazarları tarafından geliştirilmiştir. GNU, GNU'nun Unix Değil anlamına gelir.
 GTK motoru, bir GTK bileşenini standart olmayan bir şekilde kullandıkları konusunda zenity yazarlarını uyarıyor.
Tarih Değerini Yakalama
Tarihi terminale yazdırmak bizim için pek bir şey yapmıyor. Bu takvimi komut dosyalarımızdan birinden çağıracaksak, komut dosyamızda yararlı bir şeyler yapabilmemiz için seçilen tarih değerini yakalamamız gerekir. Ayrıca takvimi biraz özelleştireceğiz.
Aşağıdaki seçenekleri takvimle kullanacağız. Hepsi çift tire “–” bayrağıyla kullanılmalıdır:
- –text : Takvimde görüntülenecek metin dizesini belirtir. "Aşağıdan bir tarih seçin" varsayılanının yerini alır.
- –title : Takvim iletişim penceresinin başlığını ayarlar.
- –gün : Takvim açıldığında seçilen günü ayarlar.
- –ay : Takvim açıldığında seçilen ayı ayarlar.
- –year : Takvim açıldığında seçilen yılı ayarlar.
 Takvimden döndürülen tarihi yakalamak için ChosenDate adlı bir değişken kullanıyoruz. Ve bu tarihi terminal penceresine yazdırmak için echo $ChosenDate kullanıyoruz.
Evet, bir önceki örnekte aynı sonucu elde ettik, ancak burada, bir değişkende saklanan seçilen tarih var. Önceki örnekte, yazdırıldı ve unutuldu.
ChosenDate=$(zenity -- takvim -- metin "Bir tarih seçin" --title "Nasıl Yapılır Geek Rota" -- 1. gün -- 9. ay -- yıl 2019); echo $SeçilmişTarih

Şimdi, takvim istemimizi ve pencere başlığımızı görüntüler. Tarih, bugünün tarihi yerine bizim seçtiğimiz başlangıç tarihine ayarlanmıştır.

 Bir seçim yapıldığında döndürülen tarih dizisinin biçimini de özelleştirebiliriz. --date-format seçeneğinin ardından bir biçim belirteci gelmelidir. Bu, çıktıya dahil edilecek verileri ve biçimleri tanımlayan bir belirteç dizisidir. Belirteçler, strftime() C dil işleviyle kullanılanlarla aynıdır ve bunların çok büyük bir seçimi vardır.
Kullandığımız jetonlar:
- %A : Haftanın gününün tam adı.
- %d : Rakam olarak ayın günü.
- %m : Rakam olarak ay.
- %y : İki basamaklı yıl (yüzyıl yok).
ChosenDate=$(zenity -- Calendar --text "Bir tarih seçin" --title "Nasıl Yapılır Geek Rota" --date-format="%A %d/%m/%y" --gün 1 -- ay 9 -- yıl 2019); echo $SeçilmişTarih

Birisi bir tarih seçer:

Ve tarih, biçimimizi kullanarak döndürülür. Haftanın gününün adını, ardından Avrupa sırasına göre tarihi gösterir: gün, ay, yıl.

Dosya Seçimi İletişim Penceresi: Dosya Seçme
Dosya seçimi diyalog pencereleri oldukça karmaşıktır. Kişiler dosya sistemine göz atabilir, bir dosyayı veya dosyaları vurgulayabilir ve ardından bu dosyaları seçmek veya seçimi tamamen iptal etmek için “Tamam”a tıklayabilir.
 zenity , tüm bu işlevleri ve daha fazlasını sağlar. Ve kullanımı da takvim iletişim penceresi kadar kolaydır.
Kullanacağımız yeni seçenekler şunlardır:
-  –file -selection : zenitybir dosya seçimi diyalog penceresi kullanmak istediğimizi söyler.
- –multiple : Birinin birden fazla dosya seçmesine izin verir.
- –file-filter : Dosya iletişim penceresine hangi dosya türlerinin görüntüleneceğini söyler.
zenity --file-selection --tile "Nasıl Yapılır Geek" --multiple --file-filter='*.mm *.png *.page *.sh *.txt'

Dosya seçimi iletişim penceresi, diğer herhangi bir dosya seçim penceresi kadar işlevseldir.

Kullanıcı dosya sistemine göz atabilir ve istediği dosyayı seçebilir.

Yeni bir dizine göz attık ve “button_hybrid.png” adlı bir dosya seçtik.
“Tamam”ı tıkladığınızda, dosya seçimi iletişim penceresi kapanır ve dosya adı ve yol, terminal penceresinde yazdırılır.

Dosya adını başka bir işlemde kullanmanız gerekirse, tıpkı takvimdeki tarih için yaptığınız gibi, onu bir değişkende yakalayabilirsiniz.
Dosya Seçimi İletişim Penceresi: Bir Dosyayı Kaydetme
 Bir seçenek eklersek, dosya seçimi diyalog penceresini bir dosya kaydetme diyalog penceresine çevirebiliriz. Seçenek --save . Ayrıca --confirm-overwrite seçeneğini kullanacağız. Bu, kişiden mevcut bir dosyanın üzerine yazmak istediğini onaylamasını ister.
Yanıt=$(zenity --file-selection --save --confirm-overwrite); yankı $Yanıt

Dosya kaydetme iletişim penceresi görünür. Birinin dosya adı yazabileceği bir metin alanı olduğunu unutmayın.

Kullanıcı, dosya sistemi içinde istediği konuma göz atabilir, dosya için bir ad sağlayabilir veya üzerine yazmak için mevcut bir dosyaya tıklayabilir.

Yukarıdaki örnekte, kullanıcı mevcut bir dosyayı vurguladı.
 “Tamam”ı tıkladığında, mevcut dosyayı değiştirmek istediğini onaylamasını isteyen bir onay iletişim penceresi belirir. Uyarı iletişim kutusunda dosyanın adının göründüğüne dikkat edin. zenity profesyonel görünümünü veren ayrıntılara gösterilen özen budur.
 --confirm-overwrite seçeneğini kullanmamış olsaydık, dosyanın üzerine sessizce yazılırdı. 

 Dosyanın adı, terminal penceresine yazdırılan Response değişkeninde saklanır. 

Bildirim İletişim Penceresi
 zenity ile, komut dosyalarınıza kaygan bildirim iletişim pencereleri dahil etmek zahmetsizdir. Kullanıcıya bilgi, uyarı, hata mesajı ve soru sağlamak için arayabileceğiniz stok iletişim pencereleri vardır.
Bir hata mesajı iletişim penceresi oluşturmak için aşağıdaki komutu kullanın:
zenity --error --width 300 --text "İzin reddedildi. Dosyaya yazılamıyor."
Kullandığımız yeni seçenekler şunlardır:
-  –error : zenitybir hata iletişim penceresi kullanmak istediğimizi söyler.
- –width : Pencerenin başlangıç genişliğini ayarlar.

Hata iletişim penceresi belirtilen genişlikte görünür. Standart GTK hata simgesini kullanır.

Bir bilgi iletişim penceresi oluşturmak için aşağıdaki komutu kullanın:
zenity --info --width 300 --text "Güncelleme tamamlandı. Devam etmek için Tamam'ı tıklayın."
 Kullandığımız yeni seçenek zenity --info bilgi iletişim penceresi oluşturmasını söyleyen seçenek. 

Bir soru iletişim penceresi oluşturmak için aşağıdaki komutu kullanın:
zenity --question --width 300 --text "Devam etmekten memnun musunuz?"; yankı $?
 Kullandığımız yeni seçenek --question , zenity bir soru iletişim penceresi oluşturmasını söyleyen. 

 $? özel bir parametredir. En son yürütülen ön plan işlem hattından dönüş değerini tutar. Genel anlamda, bu en son kapatılan sürecin değeridir. Sıfır değeri "Tamam" anlamına gelir ve bir veya daha fazla değer "İptal" anlamına gelir.
 Bu, herhangi bir zenity diyalog penceresine uygulayabileceğiniz genel bir tekniktir. Komut dosyanızda bu değeri kontrol ederek, bir iletişim penceresinden döndürülen verilerin işlenmesi mi yoksa yoksayılması mı gerektiğini belirleyebilirsiniz. 

"Evet"i tıkladık, bu nedenle dönüş kodu "Tamam"ı gösteren bir sıfırdır.

Bir uyarı iletişim penceresi oluşturmak için aşağıdaki komutu kullanın:
zenity --warning --title "Düşük Sabit Disk Alanı" --width 300 --text "Yedeklemeyi kaydetmek için yeterli sabit disk alanı olmayabilir."
 Kullandığımız yeni seçenek --warning , zenity bir uyarı iletişim penceresi oluşturmasını söyler. 

Uyarı iletişim penceresi görünür. Bu bir soru değil, bu yüzden sadece bir düğmesi var.


İlerleme İletişim Penceresi
 Komut dosyanızın tamamlanmaya ne kadar yakın olduğunu gösteren bir ilerleme çubuğu görüntülemek için zenity ilerleme iletişim penceresini kullanabilirsiniz.
İlerleme çubuğu, komut dosyanızdan kendisine aktarılan değerlere göre ilerletilir. İlkeyi göstermek için aşağıdaki komutu kullanın:
(i için $(seq 0 10 100); do echo $i; uyku 1; bitti)

Komut şu şekilde bozulur:
-  seqkomutu, 10'luk adımlarla 0'dan 100'e kadar bir dizide ilerler.
-  Her adımda, değer ideğişkeninde saklanır. Bu, terminal penceresine yazdırılır.
-  sleep 1komutu nedeniyle komut bir saniye duraklar.
 İlerleme çubuğunu göstermek için bunu zenity ilerleme iletişim penceresiyle kullanabiliriz. Önceki komutun çıktısını zenity:
(i için $(seq 0 10 100); do echo $i; uyku 1; bitti) | zenity --progress --title "Nasıl Yapılır Geek" -- otomatik kapanma

Kullandığımız yeni seçenekler şunlardır:
-  –progress : zenitybir ilerleme iletişim penceresi kullanmak istediğimizi söyler.
- –auto-close : İlerleme çubuğu yüzde 100'e ulaştığında iletişim kutusunu kapatır.
İlerleme iletişim penceresi görünür ve çubuk yüzde 100'e doğru ilerler ve her adım arasında bir saniye duraklar.

 Bir komut dosyasına ilerleme iletişim penceresini dahil etmek için bu borulama değerleri kavramını zenity kullanabiliriz.
Bu metni bir düzenleyiciye girin ve “progress.sh” olarak kaydedin.
 !/bin/bash
işlev çalışma listesi () {
echo "# İlk iş öğesi" 
yankı "25"
uyku 1
echo "# İkinci iş öğesi" 
yankı "50"
uyku 1
echo "# Üçüncü iş öğesi" 
yankı "75"
uyku 1
echo "# Son iş öğesi" 
yankı "100"
uyku 1
}
iş listesi | zenity --progress --title "Nasıl Yapılır Geek" --auto-close
0 çıkışıİşte senaryonun bir dökümü:
-  Komut dosyası, work-listadlı bir işlevi tanımlar. Burası, gerçek işi gerçekleştirmek için komutlarınızı ve talimatlarınızı koyduğunuz yerdir.sleep 1komutlarının her birini gerçek olanlarla değiştirin.
-  zenity,echo "# ..."satırlarını kabul eder ve bunları ilerleme iletişim penceresinde görüntüler. Bu satırların metnini kullanıcıya bilgilendirici mesajlar iletecek şekilde değiştirin.
-  echo "25"gibi sayıları içerenechosatırları dazenitytarafından kabul edilir ve ilerleme çubuğunun değerini ayarlar.
-  İş listesi işlevi çağrılır ve zenity.
Komut dosyasını yürütülebilir hale getirmek için bu komutu kullanın:
chmod +x ilerleme.sh

Komut dosyasını çalıştırmak için bu komutu kullanın:
./ilerleme.sh

Komut dosyası çalışır ve komut dosyasının her aşaması yürütülürken metin mesajı değişir. İlerleme çubuğu, adım adım yüzde 100'e doğru hareket eder.

Ölçek İletişim Penceresi
Ölçek iletişim penceresi, birisinin sayısal bir değer seçmek için kaydırıcıyı hareket ettirmesine olanak tanır. Bu, çok yüksek veya düşük bir değer giremeyeceği anlamına gelir.
Kullandığımız yeni seçenekler şunlardır:
-  –scale : Bir ölçek iletişim penceresi kullanmak istediğimizi zenity.
- –min-değeri : Ölçek için minimum değeri ayarlar.
- –max-value : Ölçek için maksimum değeri ayarlar.
- –adım : Ok tuşları kullanıldığında kaydırıcının hareket ettiği miktarı ayarlar. Birisi fareyi kullanırsa bu, kaydırıcı hareketlerini etkilemez.
- –değer : Kaydırıcının başlangıç değerini ve konumunu ayarlar.
Kullandığımız komut bu:
Response=$(zenity --scale --title "Nasıl Yapılır?" --text "Büyütmeyi seçin." --min-value=0 --max-value=30 --step=3 --value15); yankı $Yanıt

Kaydırıcı iletişim penceresi, kaydırıcı 15'e ayarlanmış olarak görünür.

Kullanıcı, yeni bir değer seçmek için kaydırıcıyı hareket ettirebilir.

 “Tamam”ı tıkladığında, değer Response değişkenine aktarılır ve terminal penceresine yazdırılır. 

Giriş İletişim Penceresi
Giriş iletişim penceresi, birisinin metin girmesine izin verir.
Kullandığımız yeni seçenekler şunlardır:
-  –entry : zenitybir giriş diyalog penceresi kullanmak istediğimizi söyler.
- –entry-text : Metin giriş alanına önerilen bir değeri yazmak istiyorsanız bunu kullanabilirsiniz. Boş bir alanı zorlamak için “” kullanıyoruz. Bu kesinlikle gerekli değildir, ancak seçeneği belgelemek istedik.
Tam komut şöyle görünür:
Response=$(zenity --entry --text "Arama teriminizi girin" --title "Howe-To Geek" --entry-text=""); yankı $Yanıt

Bir metin giriş alanı içeren basit bir iletişim penceresi görünür.

Birisi metin yazabilir ve düzenleyebilir.

“Tamam”a tıkladığında yazdığı değer Response değişkenine atanır. Terminal penceresindeki değişkenin değerini yazdırmak için echo kullanıyoruz.

Hepsini bir araya koy
Bu teknikleri bir araya getirelim ve fonksiyonel bir script oluşturalım. Komut dosyası bir donanım bilgisi taraması yapacak ve sonuçları kayan bir metin penceresinde kullanıcıya sunacaktır. Uzun veya kısa bir tarama türü seçebilir.
Bu komut dosyası için, ikisi bizim için yeni olan üç tür iletişim penceresi kullanacağız:
- İlki bir liste iletişim penceresidir. Birinin seçim yapmasına izin verir.
- İkincisi, kullanıcının bir şeyler olduğunu bilmesini sağlayan bir ilerleme iletişim penceresidir ve beklemesi gerekir.
- Üçüncüsü, sonuçları kullanıcıya gösteren bir metin bilgi penceresidir.
Bu metni bir düzenleyiciye girin ve “hardware-info.sh” olarak kaydedin.
 #!/bin/bash
# Bu bilgisayar için donanım listesini görüntüle
TempFile=$(mktemp)
ListType=`zenity --width=400 --height=275 --list --radiolist \
     --başlık 'Donanım Taraması' \
     --text 'Tarama türünü seçin:' \
     --sütun 'Seç' \
     --column 'Tarama Türü' DOĞRU "Kısa" YANLIŞ "Uzun"`
eğer [[ $? -eq 1 ]]; sonra
  # İptal'e bastılar veya iletişim penceresini kapattılar 
  zenity --error --title="Tarama Reddedildi" --width=200 \
       --text="Donanım taraması atlandı"
  çıkış 1
 
elif [ $ListType == "Kısa" ]; sonra
  # kısa radyo düğmesini seçtiler 
  Flag="--kısa"
 
Başka
  # uzun radyo düğmesini seçtiler 
  İşaretle="" 
fi
# $ Flag içinde uygun değere sahip donanım bilgilerini arayın
hwinfo $Bayrak | tee >(zenity --width=200 --height=100 \
     --title="Bilgi Derleme" --progress \
     --pulsate --text="Donanım kontrol ediliyor..." \
     --auto-kill --auto-close) >${TempFile}
 
# Donanım bilgilerini kayan bir pencerede görüntüleyin
zenity --genişlik=800 --yükseklik=600\
     --başlık "Donanım Ayrıntıları" \
     --text-info --filename="${TempFile}"
 
0 çıkışıYürütülebilir hale getirmek için bu komutu kullanın:
chmod +x donanım bilgisi.sh

Bu komut dosyası geçici bir dosya oluşturur ve dosyanın adı TempFile değişkeninde tutulur:
TempFile=$(mktemp)
 Komut dosyası, liste iletişim penceresi adı verilen bir zenity iletişim penceresi oluşturmak için --list seçeneğini kullanır. Satırların sonundaki “\” karakterleri, komut dosyasına, bunları etrafına sarılmış uzun bir satır gibi davranmasını söyler. İşte süreç:
- Pencere için bir genişlik ve yükseklik belirliyoruz.
-  Liste iletişim penceresi sütunları destekler. --radiolistseçeneği, ilk sütunun bir radyo düğmeleri sütunu olmasına neden olur.
- Pencere için bir başlık ve metin istemi belirledik.
- İlk sütunun başlığını “Seç” olarak belirledik. Bu sütunun içeriği radyo düğmeleri olacaktır.
- İkinci sütunun başlığını “Seç” olarak belirledik ve ikinci sütunun içeriğini sağlıyoruz. Bu sütunda iki metin etiketi bulunur: "Kısa" ve "Uzun". DOĞRU ve YANLIŞ göstergeleri, diyalog penceresi göründüğünde varsayılan olarak “Kısa” seçeneğinin seçildiği anlamına gelir.
-  Bu iletişim penceresindeki sonucu ListTypeadlı bir değişkende saklıyoruz.
 ListType=`zenity --width=400 --height=275 --list --radiolist \ 
     --başlık 'Donanım Taraması' \ 
     --text 'Tarama türünü seçin:' \ 
     --sütun 'Seç' \ 
     --column 'Tarama Türü' DOĞRU "Kısa" YANLIŞ "Uzun"` Kullanıcı “İptal”e basarsa, ListType, değeri kontrol etmemize gerek yoktur, basitçe çıkabiliriz. "Tamam"a basarsa, "Kısa" veya "Uzun" radyo düğmesini seçip seçmediğini öğrenmemiz gerekir:
-  Özel parametre $?kullanıcı "Tamam"a basarsa sıfıra eşittir. “İptal”e bastıysa veya pencereyi kapattıysa bire eşittir.
-  Bire eşitse, komut dosyası bir hata bilgisi iletişim penceresi görüntüler ve çıkar. “Tamam”a basarsa, ListTypedeğişkenindeki değeri test etmeye devam ederiz.
-  ListTypedeğişkeni "Kısa" değerini içeriyorsa, komut dosyasıFlagadlı bir değişkeni "–short" değerine eşitler.
-  ListTypedeğişkeni "Kısa" değerini tutmuyorsa, "Uzun" değerini tutmalıdır. Komut dosyası,Flagadlı bir değişkeni boş bir dize olan "" değerine eşitleyecek şekilde ayarlar.
-  Komut dosyası, sonraki bölümde Flagdeğişkenini kullanır.
eğer [[ $? -eq 1 ]]; sonra # İptal'e bastılar veya iletişim penceresini kapattılar zenity --error --title="Tarama Reddedildi" --width=200 \ --text="Donanım taraması atlandı" çıkış 1 elif [ $ListType == "Kısa" ]; sonra # kısa radyo düğmesini seçtiler Flag="--kısa" Başka # uzun radyo düğmesini seçtiler İşaretle="" fi
Artık komut dosyası, kullanıcının hangi tür tarama istediğini bildiğine göre, donanım bilgisi taramasını gerçekleştirebiliriz:
-  Komut dosyası hwinfokomutunu çağırır ve onaFlagdeğişkenindeki değeri iletir.
-  Flag“hwinfo” içeriyorsa, hwinfo komutu kısa bir tarama gerçekleştirir.Flagdeğeri “” ise,hwinfohiçbir şey geçmez ve varsayılan, uzun bir tarama gerçekleştirilir.
-  Komut dosyası, çıktıyı hwinfoteeteeçıktıyızenityveTempFilegönderir.
- Komut dosyası, bir ilerleme çubuğu iletişim penceresi oluşturur. İletişim penceresinin genişliğini ve yüksekliğini, başlığı ve bilgi istemi metinlerini ayarlar.
-  Komut dosyası, hwinfokomutunun ne kadar bilgi üreteceğini önceden bilemez, bu nedenle ilerleme çubuğunu yüzde 100'e doğru ilerlemeye ayarlayamaz.--pulsateseçeneği, ilerleme iletişim kutusunun hareketli bir gösterge göstermesine neden olur. Bu, kullanıcıya bir şeyler olduğunu bildirir ve beklemesi gerekir.
-  --auto-killseçeneği, birisi "İptal"i tıklatırsa komut dosyasını sonlandırır.
-  --auto-closeseçeneği, izlediği işlem tamamlandığında ilerleme iletişim kutusunun otomatik olarak kapanmasına neden olur.
 # $ Flag içinde uygun değere sahip donanım bilgilerini arayın
hwinfo $Bayrak | tee >(zenity --width=200 --height=100 \
     --title="Bilgi Derleme" --progress \
     --pulsate --text="Donanım kontrol ediliyor..." \
     --auto-kill --auto-close) >${TempFile} hwinfo taraması tamamlandığında, komut dosyası --text-info seçeneğiyle bir metin bilgisi iletişim penceresi oluşturmak için zenity çağırır. Metin bilgileri iletişim penceresi TempFile dosyasının içeriğini görüntüler:
- Komut dosyası, iletişim penceresinin genişliğini ve yüksekliğini ve başlık metnini ayarlar.
-  --flenameseçeneği,TempFIledeğişkeninde tutulan dosyanın içeriğini okumak için kullanılır.
 # Donanım bilgilerini kayan bir pencerede görüntüleyin 
zenity --genişlik=800 --yükseklik=600\ 
     --başlık "Donanım Ayrıntıları" \ 
     --text-info --filename="${TempFile}"Kullanıcı metin bilgisi iletişim penceresini kapattığında, komut dosyası çıkar.
0 çıkışı
Ateş edip bir bakalım.
./hardware-info.sh

Liste kutusu görünür. "Kısa" seçeneği varsayılan olarak seçilidir.

“Uzun”u seçelim ve ardından “Tamam”a tıklayalım.

İlerleme penceresi, kayan bir göstergeyle görüntülenir. Donanım taraması tamamlanana kadar ekranda kalır.

Donanım taraması tamamlandığında, taramanın ayrıntılarıyla birlikte metin bilgisi iletişim penceresi görünür.

"Tamam" ı tıklayın.
Ölümcül bir komut satırı jokeyinin bile birkaç GUI iletişim penceresinin mütevazı bir Bash betiğine profesyonel bir dokunuş verebileceğini kabul etmesi gerekir.
