GNU/Linux >> Belajar Linux >  >> Linux

Antarmuka pengguna dengan dialog. Skrip bash (IV)

Ini adalah artikel terakhir dari seri yang berfokus pada skrip Gnu Bash. Pada artikel pertama kami baru saja membuat skrip sederhana dengan perintah, satu demi satu. Kami juga melihat beberapa variabel yang digunakan.
Artikel kedua membahas beberapa struktur kontrol bash. Yang ketiga mencakup pengalihan, pipa, dan substitusi perintah.
Pada yang terakhir (untuk saat ini), saya akan menunjukkan cara membuat antarmuka pengguna dengan dialog di skrip kami.

Dialog pemasangan

Sumbernya dapat diunduh untuk dikompilasi dari sini:https://invisible-island.net/dialog/. Untuk menginstal binari yang telah dikompilasi, distro Anda pasti memiliki paket bernama 'dialog' yang dapat Anda instal dengan alat paket.

Opsi umum

Opsi berikut berlaku untuk setiap widget yang dapat kita gunakan pada dialog. Yang tercantum di sini tidak semuanya, tetapi yang paling sering saya gunakan.

  • --ascii-lines Daripada menggambar garis grafik di sekitar kotak, "+" dan "-" di tempat yang sama.
  • --judul judul Menentukan string judul yang akan ditampilkan di bagian atas kotak dialog.
  • --default-button string Atur tombol yang telah dipilih sebelumnya di widget. Biasanya tombol pertama di setiap widget adalah default.
  • --default-item string Setel item default dalam daftar periksa, formulir, atau kotak menu.
  • --tanpa garis Daripada menggambar garis di sekitar kotak, gambarlah spasi di tempat yang sama.
  • --tanpa bayangan Menekan bayangan yang akan digambar di kanan dan bawah setiap kotak dialog
  • --backtitle backtitle Menentukan string judul latar yang akan ditampilkan di bagian atas layar.
  • --stdout Output langsung ke output standar. Berguna untuk menyimpan pilihan atau respon pengguna dalam sebuah variabel

Misalnya:

dialog --backtitle 'this is backtitle' --title 'Title' --infobox "This is just an infobox with some options settled" 0 0

akan menghasilkan output ini:

Contoh lain:

Saran saya untuk skrip dengan beberapa layar adalah menambahkan alias dengan beberapa opsi umum sehingga Anda tidak perlu mengetik (atau menyalin) setiap saat, seperti ini:

alias dialog="dialog --backtitle 'this is backtitle' --title 'Title' --stdout"
dialog --infobox "This is just an infobox" 0 0

Beberapa widget

Kotak Info

Itu contoh dari atas. Sintaksnya adalah:

--infobox text height width

Di mana teks adalah teks yang akan ditampilkan, dan tinggi dan lebar adalah ukuran kotak dialog. Anda dapat menggunakan output dari perintah untuk teks dengan substitusi perintah, yaitu --infobox "$(cat somefile.txt)" . Ukuran dinyatakan dalam karakter, nilai 0 berarti otomatis.

yesno

Kotak gaya kueri tipikal dengan tombol jawaban "Ya" dan "Tidak". Sintaksnya adalah:

--yesno text height width

Kita dapat menggunakannya pada blok if-then-else dengan beberapa kode seperti ini:

if dialog --yesno "continue?" 0 0
then
	echo "You choose to continue"
	some_command
	some_other_command
else 
	echo "no"
fi

Daftar pilihan bergulir dengan pilihan entri tunggal. Sintaksnya adalah:

--menu text height width menu-height tagX itemX tagY itemY

Setiap entri menu terdiri dari string tag dan string item. Saya pikir bagus untuk digabungkan dengan blok case-esac seperti pada contoh berikut:

case $(dialog --menu "A menu of choices " 0 0 0 a item\ 1 b item\ 2 c item\ 3 d item\ 4) 
in 
	a) 
		echo "Item A" 
		some commands
		;; 
	b)
		echo "Item B" 
		some other commands
		;; 
	*) 
		echo other
		;; 
esac

kotak masukan

Kotak input berguna saat Anda ingin mengajukan pertanyaan yang mengharuskan pengguna memasukkan string sebagai jawabannya. Sintaksnya adalah:

--inputbox text height width [init]

init adalah opsional dan dapat digunakan untuk menetapkan jawaban default.

daftar periksa

Kotak daftar centang mirip dengan kotak menu:ada beberapa entri yang disajikan dalam bentuk menu. Namun alih-alih memilih hanya satu entri, setiap entri dapat diaktifkan atau dinonaktifkan. Sintaksnya adalah:

--checklist text height width list-height tag item status

statusnya bisa on atau off. Kita dapat bekerja dengan opsi yang dipilih dengan loop for dan blok kasus untuk mengevaluasi opsi yang dipilih. Contoh:

for i in $(dialog --checklist "A menu of choices " 0 0 0 a item\ 1 off b item\ 2 off c item\ 3 off )
do 
	case $i in
		a)
			echo "item 1 selected"
			;;
		b)
			echo "item 2 selected"
			;;
		c)
			echo "item 3 selected"
			;;
	esac
done

Alternatifnya adalah radiolist di mana pengguna dapat memilih hanya satu item.

pengukur

Bilah kemajuan yang khas. Meter menunjukkan persentase. Persentase baru dibaca dari input standar, satu bilangan bulat per baris. Sintaksnya adalah:

--gauge text height width [percent]

Persen adalah opsional dan mewakili persen awal yang dilakukan. Ini dapat digunakan dengan pipa. Misalnya:

seq 1 100|dialog --gauge "A gauge" 0 0

Kalender

Kotak kalender menampilkan bulan, hari, dan tahun. Sintaksnya adalah:

--calendar text height width day month year

Jika nilai hari, bulan, atau tahun tidak ada atau negatif, tanggal saat ini akan digunakan.

Ke mana harus pergi dari sini

Saya baru saja menunjukkan beberapa widget yang tersedia (ada lebih dari dua puluh). Halaman manual dialog memberikan bantuan untuk semuanya.

Tentu saja, dialog bukan satu-satunya alat yang tersedia untuk membuat antarmuka pengguna teks. Ada alternatif seperti Xdialog, Whiptail (keduanya disebutkan di halaman manual dialog) atau Zenity. Ingatlah bahwa ada lebih dari satu cara untuk melakukannya.

Empat seri artikel tentang skrip bash ini masih jauh untuk diselesaikan. Niat saya adalah untuk membuat Anda merasa cukup penasaran untuk menyelidiki sendiri. Simpan halaman manual bash (yang terkadang membingungkan, setidaknya bagi saya). Dan lebih dekat dengan Anda Panduan Skrip Bash Tingkat Lanjut untuk panduan yang lebih komprehensif, penuh dengan contoh.


Linux
  1. Skrip bash(I)

  2. Bash -c Dengan Parameter Posisi?

  3. Bagaimana cara menulis beberapa baris string menggunakan Bash dengan variabel?

  1. String Gabungan Bash

  2. Alias ​​​​dengan variabel di bash

  3. Buat array dengan semua antarmuka jaringan di bash

  1. Shell Scripting Bagian I:Memulai dengan bash scripting

  2. Bash Scripting – Sementara Dan Sampai Loop Dijelaskan Dengan Contoh

  3. Bash Scripting – Untuk Loop Dijelaskan Dengan Contoh