Cara menggunakan widget ncurses dalam skrip shell di linux
- 1077
- 270
- Simon Cormier
Dalam tutorial ini kita akan mempelajari dasar -dasar utilitas dialog, untuk digunakan ncurses
widget di skrip shell kami. Kami akan melihat cara menginstal dialog dalam distribusi Linux yang paling banyak digunakan, beberapa opsi umum yang dapat kami gunakan untuk mengubah perilaku dialog, cara menggunakan beberapa widget; Di antara yang lain: kotak input
, daftar periksa
, Radiolist
Dan ya Tidak
. Akhirnya, kita akan melihat cara menggunakan data yang diperoleh dengan pemrosesan widget.
Dalam tutorial ini Anda akan belajar:
- Cara menginstal utilitas dialog di linux
- Opsi dialog apa yang paling relevan
- Cara menggunakan inputbox, daftar periksa, radiolist, kotak sandi, msbox, kalender dan widget yesno
- Cara mengelola data yang berasal dari pemrosesan widget
Persyaratan dan konvensi perangkat lunak yang digunakan
Kategori | Persyaratan, konvensi atau versi perangkat lunak yang digunakan |
---|---|
Sistem | Distribusi-independen |
Perangkat lunak | Utilitas dialog diperlukan untuk mengikuti tutorial ini |
Lainnya | Keakraban dengan antarmuka baris perintah dan pengalihan shell |
Konvensi | # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa |
Instalasi di Linux
Itu dialog
Utilitas tersedia di semua repositori default Distribusi Linux utama, oleh karena itu kami dapat menggunakan manajer paket favorit kami untuk menginstalnya. Jika kita menggunakan fedora, misalnya, kita dapat menjalankan:
Dialog Instal Sudo DNF
Di Debian kita bisa menjalankan:
$ sudo apt-get install dialog
Itu dialog
Utilitas juga terkandung dalam repositori inti Archlinux, jadi kami dapat menginstalnya melalui Pacman
:
Dialog $ sudo Pacman
Menginstal perintah juga berlaku untuk turunan dari distribusi yang disebutkan di atas.
Opsi Dialog Umum
Kami menyebut opsi ini "umum" karena dapat digunakan secara independen dari jenis widget yang ingin kami gunakan. Di sini kita hanya akan melihat beberapa dari mereka, yang mungkin menarik saat kita mulai menggunakan dialog
.
Pengaturan Judul Kotak Widget: Opsi -Title
Dengan menggunakan --judul
Opsi kami dapat menentukan string yang akan digunakan sebagai judul widget; itu akan ditampilkan di bagian atas kotak. Inilah contohnya:
$ dialog - -title "judul dialog" - -inputbox "Masukkan nama Anda:" 0 0
Inilah yang ditampilkan sebagai hasil dari perintah di atas:
Menggabungkan widget: opsi -dan -widget:
Itu --dan-Widget
opsi, dapat digunakan untuk "rantai" lebih banyak widget, sehingga setelah kami menggunakan yang pertama, kami segera diminta dengan yang kedua. Rantai dihentikan ketika salah satu dialog mengembalikan status yang tidak ada nol. Contoh penggunaannya adalah:
$ dialog \--inputbox "Masukkan nama Anda:" 0 0 \ ---andget --inputbox "Masukkan usia Anda:" 0 0
Setelah kami meluncurkan perintah di atas, widget input pertama yang digunakan untuk meminta kami untuk nama kami akan ditampilkan. Setelah kami mengonfirmasi input dengan mengklik OKE
tombol, widget berikutnya akan ditampilkan, dan kami akan diminta untuk memasukkan usia kami.
Membersihkan layar dengan opsi -Clear
Saat kami menggunakan --dan-Widget
opsi konten yang dibuat oleh satu widget menimpa yang dihasilkan oleh yang sebelumnya. Jika widget tidak menempati ruang layar yang sama persis, dua konten akan dicampur, dan ini akan membuat kekacauan.
Untuk menghindari konten yang tumpang tindih, kita dapat menggunakan --jernih
pilihan; Saat kami melakukannya, konten widget dihapus sebelum widget berikutnya ditampilkan: Hanya warna latar belakang yang dipertahankan.
Mengatur tombol A yang disorot secara default: opsi -default -tombol
Bergantung pada widget yang kami gunakan, lebih dari satu tombol dapat ditampilkan di layar dan secara default salah satunya disorot secara default, menentukan tindakan default yang akan dilakukan ketika pengguna menekan enter.
Kita bisa mengesampingkan
widget default dengan menggunakan --tombol default
Opsi diikuti dengan nama tombol, salah satunya Oke
, Ya
, membatalkan
, TIDAK
, membantu
atau tambahan
.
Opsi ini bisa sangat berguna, misalnya, saat meminta konfirmasi sebelum melakukan yang berpotensi
Tindakan Berbahaya:
$ dialog --Default-tombol "no"--inputbox "Masukkan nama Anda:" 0 0
Seperti yang dapat Anda lihat dari tangkapan layar, kami buat sehingga tombol "Tidak" dipilih secara default, sehingga pengguna harus secara eksplisit memilih "Ya" untuk mengonfirmasi pilihannya.
Mengatur elemen yang dipilih default dalam daftar dengan -default -item
Saat kami menggunakan daftar periksa atau widget menu, elemen pertama dalam daftar pilihan yang mungkin dipilih secara default. Dengan menggunakan --Default-item
opsi dan merujuk suatu elemen, kita dapat menggunakannya sebagai default alternatif:
$ Dialog --Default-item 2 --CheckList "Pilih:" 0 0 5 \ 1 "Elemen Pertama" Mati \ 2 "Elemen Kedua" OFF \ 3 "Elemen Ketiga" Mati
Seperti yang Anda lihat, dalam contoh di atas, kami mereferensikan elemen dengan itu menandai
, 2 Dalam hal ini (kami akan memperluas ini nanti).
Menentukan waktu tunda setelah konfirmasi: opsi tidur
Terkadang kita mungkin ingin aplikasi kita menunggu sejumlah detik setelah memproses kotak dialog. Untuk mencapai perilaku ini kita dapat menggunakan --tidur
opsi dan berikan jumlah detik untuk menunggu sebagai nilai:
$ dialog --Sleep 3 - -inputBox "Masukkan nama Anda:" 0 0
Sebagai hasil dari perintah di atas, setelah kotak input
widget ditampilkan, dan pengguna menyentuh MEMASUKI
kunci, 3
detik ditunggu sebelum perintah berikutnya dalam skrip panggilan dilakukan.
Memberikan waktu tunggu pilihan
Dalam beberapa kasus kami mungkin ingin memberi pengguna jumlah maksimum detik untuk melakukan pilihannya. Aplikasi dialog menyediakan --waktu habis
opsi untuk mendapatkan perilaku tersebut. Jumlah detik batas waktu harus disahkan sebagai argumen opsi. Jika setelah jumlah detik yang ditentukan asalkan pengguna tidak melakukan pilihannya, aplikasi akan keluar dengan status kesalahan:
$ dialog -Timeout 3 - -inputBox "Masukkan nama Anda:" 0 0
Mengatur label alternatif untuk tombol
Itu dialog
Utilitas menyediakan serangkaian opsi untuk mengganti label default untuk tombol: kita dapat menggunakan --keluar-label
, --Label ekstra
, --bantuan-label
, --tidak ada label
, --OK-Label
, --YA-LABEL
untuk mengubah label "keluar", "ekstra", "bantuan", "tidak", "ok" dan "ya" tombol, masing -masing.
Masing -masing opsi yang disebutkan di atas mengambil string sebagai argumen, yang digunakan sebagai label tombol. Berikut adalah contoh penggunaan opsi:
$ dialog --Default-tombol "no" \ ---no-label "I Don't" \--yes-label "I do" \ ---besno "Apakah Anda benar-benar ingin memformat partisi?"0 0
Perintah di atas akan menghasilkan hasil berikut:
Widget dialog
Sampai sekarang kami melihat beberapa yang paling berguna dialog
Opsi "umum". Sekarang kita akan melihat cara menggunakan beberapa widget yang tersedia secara detail. Sebelum melanjutkan, kita harus menentukan sintaks umum. Saat kami meluncurkan dialog, kami harus selalu memberikan tiga parameter:
- Teks yang akan ditampilkan di widget;
- Lebar widget;
- Tinggi widget;
Jika kami memberikan nilai 0
Untuk lebar atau tinggi, nilai atribut yang sesuai diatur secara otomatis.
Widget inputbox
Widget InputBox digunakan untuk meminta pengguna untuk menanggapi pertanyaan dengan input tekstual. Parameter teks digunakan untuk memberikan pertanyaan: Jika string lebih panjang dari kotak dialog, yang terakhir akan dapat digulir. Untuk menggunakan widget ini, kami memohon dialog dengan --kotak input
pilihan:
Saat keluar, input yang disediakan oleh pengguna ditampilkan pada output dialog, yang secara default adalah Stderr
.
Widget daftar periksa
Kami sudah melihat bagaimana widget daftar periksa terlihat dalam contoh sebelumnya: dalam jenis widget ini serangkaian pilihan diberikan kepada pengguna yang dapat memilih satu atau lebih dari mereka. Untuk menggunakan widget ini kita harus menggunakan --daftar periksa
opsi, dan, selain parameter tiga standar yang harus diteruskan ke semua widget, kami harus memberikan juga Daftar-tinggi
dan pilihan yang akan ditampilkan.
Itu tinggi garis
Parameter digunakan untuk mengatur berapa banyak baris yang harus ditampilkan sekaligus: Jika jumlah garis kurang dari pilihan yang tersedia, menu akan menjadi gulir. Jika kami menyediakan 0
sebagai nilai dari tinggi garis
Jumlah baris akan sesuai dengan jumlah pilihan.
Untuk setiap pilihan kita harus memberikan pengidentifikasi (tag), nama dan status yang bisa mati
atau pada
. Jika statusnya pada
pilihan akan diperiksa secara default. Setelah kami mengkonfirmasi pilihan kami, tag yang terkait dengan entri yang kami periksa akan ditampilkan Stderr
:
$ Dialog -CheckList "Pilih Item:" 0 0 0 \ 1 "Pilihan nomor satu" off \ 2 "Pilihan nomor dua" pada \ 3 "Pilihan nomor tiga" off \ 4 "Pilihan nomor empat" di
Dengan perintah di atas kami meluncurkan menu dengan 4 opsi, dan setel opsi 2 dan 4 diperiksa secara default. Output dari perintah adalah sebagai berikut:
Widget radiolist
Widget Radiolist diluncurkan saat dialog dipanggil dengan --Radiolist
pilihan. Ini berfungsi mirip dengan widget daftar periksa, dengan perbedaan bahwa pilihan saling eksklusif, sehingga hanya satu elemen yang dapat dipilih. Inilah cara kami menggunakan widget:
$ dialog --Radiolist "Pilih Item:" 0 0 0 \ 1 "Pilihan nomor satu" off \ 2 "Pilihan nomor dua" di \ 3 "Pilihan nomor tiga" off \ 4 "Pilihan nomor empat" OFF OFF "
Karena pilihannya saling eksklusif, hanya opsi pertama yang ditetapkan Pada
akan dipilih sebagai default.
Tanyakan kepada pengguna untuk kata sandi menggunakan widget Kata Sandi
Widget Kata Sandi digunakan untuk membiarkan pengguna meminta kata sandi. Untuk alasan keamanan, teks yang dimasukkan oleh pengguna tidak ditampilkan. Perilaku ini dapat dimodifikasi dengan menggunakan --merasa tidak aman
Opsi: Jika kita lakukan, widget akan menampilkan tanda bintang untuk setiap huruf kata sandi yang dimasukkan di bidang yang sesuai.
Kami menggunakan widget dengan meluncurkan dialog dengan --Kotoran Kata Sandi
pilihan:
$ dialog -insecure --passwordbox "Masukkan kata sandi Anda:" 0 0
Output dari perintah di atas adalah:
Menampilkan pesan dengan widget msgbox
Penggunaan widget ini sangat sederhana: dipanggil dengan memanggil dialog dengan --msgbox
opsi dan menampilkan pesan yang merupakan konten dari teks
parameter. Tunggal OKE
Tombol ditampilkan:
$ dialog -msgbox "Ini adalah pesan yang sangat penting yang harus dibaca dengan cermat!"0 0
Widget Kalender
Kita dapat menggunakan widget kalender dengan memohon utilitas dialog dengan --kalender
pilihan. Widget Mari kita pilih tanggal dengan memilih bulan, hari dan tahun yang ditampilkan di bagian widget yang terpisah. Dimungkinkan untuk memberikan tanggal default dengan meneruskannya sebagai bagian dari perintah.
Untuk memulai widget dengan "Hari Kelima Mei tahun 2020" sebagai tanggal default, misalnya, kami akan menjalankan perintah berikut:
$ Dialog --Calendar "Pilih Tanggal:" 0 0 27 05 2020
Ini akan menghasilkan output berikut:
Kita dapat bergerak di antara bagian widget menggunakan Tab
kunci, dan ubah parameter dengan menggunakan tombol panah. Setelah kami mengkonfirmasi pilihan, itu ditampilkan Stderr
dalam format hari/bulan/tahun; Ini dapat dimodifikasi dengan menggunakan --format tanggal
opsi dengan format yang kompatibel dengan strftime
ditentukan sebagai argumen. Untuk membuat output dalam format tahun/bulan/hari, misalnya, kami akan menjalankan:
$ dialog--tanggal-format%y/%m/%d --Calendar "Pilih tanggal" 0 0 27 05 2020
Meminta pengguna untuk konfirmasi: widget yesno
Kami sudah menemukan widget ini: memungkinkan kami meminta pengguna untuk konfirmasi. Saat menggunakannya, kami menentukan pertanyaan yang akan ditanyakan melalui teks
parameter. Tergantung pada pilihan pengguna, status keluar dikembalikan: 0
Jika pengguna mengkonfirmasi dengan mengklik Ya
tombol, 1
jika tidak.
Untuk memohon widget ini, kita harus menggunakan --ya Tidak
pilihan:
$ dialog ---besno "apakah Anda mengkonfirmasi?"0 0
Ini widgetnya:
Mengelola output yang dihasilkan oleh widget
Secara default, output yang dihasilkan oleh widget ditampilkan di stderr, jadi misalnya, untuk menyimpan data yang diperoleh dari widget ke file, yang harus kita lakukan adalah mengarahkan ulang Stderr
ke file tersebut (jika Anda tidak terbiasa dengan pengalihan, Anda mungkin ingin melihat tutorial Pengantar Bash Shell Redirections):
$ Dialog -CheckList "Pilih Item:" 0 0 0 \ 1 "Pilihan nomor satu" off \ 2 "Pilihan nomor dua" pada \ 3 "Pilihan nomor tiga" off \ 4 "Pilihan nomor empat" pada 2> pilihan.txt
Setelah pengguna mengkonfirmasi pilihannya, mereka akan ditulis, dipisahkan ruang pilihan.txt
mengajukan.
Bagaimana jika kita ingin menyimpan pilihan langsung ke variabel? Untuk menyelesaikan tugas, kita harus menggunakan --stdout
opsi, sehingga output widget ditampilkan Stdin
alih-alih Stderr
:
$ opsices = "$ (dialog --stdout --CheckList" Pilih item: "0 0 0 \ 1" Pilihan nomor satu "off \ 2" Pilihan nomor dua "pada \ 3" Pilihan nomor tiga "off \ 4" Nomor Pilihan " empat "aktif)"
Dalam contoh di atas, hasil pemrosesan widget, akan dapat diakses melalui pilihan
variabel. Mungkin kita mungkin ingin mengulanginya:
$ untuk pilihan di $ pilihan; do echo "$ choice"; selesai 2 4
Untuk mengelola proses ya Tidak
widget kita harus berperilaku berbeda. Widget tersebut, seperti yang sudah kita lihat, tidak menghasilkan output apa pun tetapi mengubah kode keluar dari perintah yang digunakan untuk melepasnya sesuai dengan pilihan pengguna. Jika pengguna mengkonfirmasi, dan menjawab dengan tegas pertanyaan, kode keluar diatur ke 0
, sebaliknya untuk 1
(Ini mungkin tampak aneh, tapi ingat itu 0
cara OKE
ketika 1
adalah status keluar yang berarti bahwa perintah tidak berhasil). Mengetahui hal ini kita bisa menulis sesuatu seperti:
jika dialog ---besno "Apakah Anda ingin membuka instance Gnome-terminal ?"0 0; lalu hapus fi terminal gnome
Kesimpulan
Dalam tutorial ini kami melihat bagaimana kami dapat menggunakan dialog
aplikasi untuk digunakan ncurses
widget dalam skrip shell. Pertama -tama kami melihat beberapa opsi umum yang dapat digunakan secara independen dari jenis widget, daripada kami melihat beberapa widget secara khusus. Ada lebih banyak widget yang dapat digunakan dialog
: Untuk daftar lengkap saya sarankan Anda untuk melihat manual aplikasi.
Tutorial Linux Terkait:
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Cara mengintegrasikan kotak dialog dalam skrip shell dengan whiptail
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
- Memulai dengan Tkinter untuk tutorial Python
- Loop bersarang dalam skrip bash
- Hal -hal yang harus diinstal pada Ubuntu 22.04
- Perintah Linux: 20 perintah terpenting teratas yang Anda butuhkan untuk…
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…
- Perintah Linux Dasar
- Instal Arch Linux di VMware Workstation
- « Pengantar Pengikisan Web Python dan Perpustakaan Sup yang Indah
- Kali Linux - Gagal Mengambil Inrelease - Perbaikan Repositori »