Cara Menggunakan Widget Ncurses Dalam Skrip Shell di Linux
- 1479
- 135
- Clay Weber
Dalam tutorial ini kita akan mempelajari asas -asas Utiliti dialog, Untuk menggunakan ncurses
widget dalam skrip shell kami. Kami akan melihat cara memasang dialog dalam pengagihan Linux yang paling banyak digunakan, beberapa pilihan biasa yang boleh kita gunakan untuk mengubah tingkah laku dialog, cara menggunakan beberapa widget; antara yang lain: kotak input
, senarai semak
, Radiolis
dan Ya tidak
. Akhirnya, kita akan melihat cara menggunakan data yang diperolehi oleh pemprosesan widget.
Dalam tutorial ini anda akan belajar:
- Cara Memasang Utiliti Dialog di Linux
- Apakah pilihan dialog yang paling relevan
- Cara Menggunakan Kotak Input, Senarai Semak, Radiolis, Kata Laluan, MSBox, Kalendar dan Widget Yesno
- Cara menguruskan data yang diperoleh dari pemprosesan widget
Keperluan perisian dan konvensyen yang digunakan
Kategori | Keperluan, konvensyen atau versi perisian yang digunakan |
---|---|
Sistem | Pengedaran-bebas |
Perisian | Utiliti dialog diperlukan untuk mengikuti tutorial ini |
Yang lain | Kebiasaan dengan antara muka baris arahan dan pengalihan shell |
Konvensyen | # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak |
Pemasangan pada Linux
The dialog
Utiliti boleh didapati di semua repositori lalai pengagihan Linux utama, oleh itu kami boleh menggunakan pengurus pakej kegemaran kami untuk memasangnya. Jika kita menggunakan Fedora, sebagai contoh, kita boleh menjalankan:
$ sudo DNF Pasang dialog
Pada Debian kita boleh lari:
$ sudo apt-get pemasangan dialog
The dialog
Utiliti juga terkandung dalam repositori teras archlinux, jadi kami boleh memasangnya melalui Pacman
:
$ sudo pacman -s dialog
Memasang arahan juga berlaku untuk derivatif pengagihan yang disebutkan di atas.
Pilihan dialog biasa
Kami memanggil pilihan ini "biasa" kerana ia boleh digunakan secara bebas daripada jenis widget yang ingin kami gunakan. Di sini kita hanya akan melihat sebahagian daripada mereka, yang mungkin menarik minat segera apabila kita mula menggunakan dialog
.
Tetapan Tajuk Kotak Widget: Pilihan -Title
Dengan menggunakan --tajuk
Pilihan kita boleh menentukan rentetan yang akan digunakan sebagai tajuk widget; ia akan dipaparkan di bahagian atas kotak. Berikut adalah contoh:
$ dialog --Title "Tajuk Dialog" -Inputbox "Masukkan Nama Anda:" 0 0
Inilah yang dipaparkan sebagai hasil arahan di atas:
Menggabungkan widget: pilihan -dan -widget:
The --dan Widget
pilihan, boleh digunakan untuk "berantai" lebih banyak widget, sehingga setelah kami menggunakan yang pertama, kami segera diminta dengan yang kedua. Rantai ini dihentikan apabila salah satu dialog mengembalikan status wujud bukan sifar. Contoh penggunaannya ialah:
$ dialog \-Inputbox "Masukkan Nama Anda:" 0 0 \-dan-Widget-Inputbox "Masukkan Umur Anda:" 0 0
Sebaik sahaja kami melancarkan arahan di atas, widget input pertama yang digunakan untuk meminta kami untuk nama kami akan dipaparkan. Sebaik sahaja kami mengesahkan input dengan mengklik pada okey
butang, widget seterusnya akan dipaparkan, dan kami akan diminta untuk memasukkan usia kami.
Membersihkan skrin dengan pilihan yang jelas
Apabila kita menggunakan --dan Widget
pilihan kandungan yang dibuat oleh satu widget mengatasi yang dihasilkan oleh yang sebelumnya. Sekiranya widget tidak menduduki ruang skrin yang sama, kedua -dua kandungan itu akan dicampur, dan ini akan menimbulkan kekacauan.
Untuk mengelakkan kandungan bertindih, kita boleh menggunakan --jelas
pilihan; Apabila kita lakukan, kandungan widget dipadamkan sebelum widget seterusnya dipaparkan: hanya warna latar belakang yang dipelihara.
Menetapkan butang A seperti yang diserlahkan secara lalai: pilihan -default -button pilihan
Bergantung pada widget yang kami gunakan, lebih daripada satu butang boleh dipaparkan pada skrin dan secara lalai salah satu daripada mereka diserlahkan secara lalai, menentukan tindakan lalai yang akan dilakukan apabila pengguna menekan masuk.
Kita boleh mengatasi
widget lalai dengan menggunakan --butang lalai
pilihan diikuti dengan nama butang, satu di antara okey
, Ya
, Batalkan
, tidak
, tolong
atau tambahan
.
Pilihan ini boleh sangat berguna, sebagai contoh, apabila meminta pengesahan sebelum melaksanakan yang berpotensi
Tindakan Berbahaya:
$ dialog--default-button "no"-inputbox "Masukkan nama anda:" 0 0
Seperti yang anda lihat dari tangkapan skrin, kami membuat supaya butang "tidak" dipilih secara lalai, supaya pengguna secara jelas memilih "ya" untuk mengesahkan pilihannya.
Menetapkan elemen terpilih lalai dalam senarai dengan -default -item
Semasa kami menggunakan senarai semak atau widget menu, elemen pertama dalam senarai pilihan yang mungkin dipilih secara lalai. Dengan menggunakan --Item lalai
Pilihan dan merujuk elemen, kita boleh menggunakannya sebagai lalai alternatif:
$ dialog-Default-item 2 --Checklist "Pilih:" 0 0 5 \ 1 "Elemen Pertama" Off \ 2 "Elemen Kedua" Off \ 3 "Elemen Ketiga"
Seperti yang dapat anda lihat, dalam contoh di atas, kami merujuk elemen olehnya tag
, 2 Dalam kes ini (kita akan mengembangkannya kemudian).
Menentukan kelewatan masa selepas pengesahan: Pilihan -sleep
Kadang -kadang kami mungkin mahu permohonan kami menunggu beberapa saat selepas memproses kotak dialog. Untuk mencapai tingkah laku ini kita boleh menggunakan --tidur
pilihan dan berikan bilangan detik untuk menunggu sebagai nilai:
$ dialog -Sleep 3 -InputBox "Masukkan Nama Anda:" 0 0
Hasil daripada arahan di atas, selepas kotak input
widget dipaparkan, dan pengguna mencecah Masukkan
kunci, 3
detik menunggu sebelum arahan seterusnya dalam skrip panggilan dilakukan.
Memberi masa tamat pilihan
Dalam beberapa kes, kami mungkin mahu memberi pengguna jumlah maksimum detik untuk melaksanakan pilihannya. Aplikasi dialog menyediakan --masa tamat
pilihan untuk mendapatkan tingkah laku tersebut. Bilangan detik masa tamat mesti diluluskan sebagai hujah pilihan. Jika selepas jumlah detik yang ditentukan oleh pengguna tidak melakukan pilihannya, aplikasi akan keluar dengan status ralat:
$ dialog -timeout 3 -inputbox "Masukkan nama anda:" 0 0
Menetapkan label alternatif untuk butang
The dialog
Utiliti menyediakan satu siri pilihan untuk mengatasi label lalai untuk butang: kita boleh menggunakan --Label keluar
, --Label tambahan
, --label bantuan
, --tiada label
, --ok-label
, --Ya-label
Untuk menukar label "keluar", "tambahan", "membantu", "tidak", "ok" dan "ya" butang,.
Setiap pilihan yang disebutkan di atas mengambil rentetan sebagai hujah, yang digunakan sebagai label butang. Berikut adalah contoh penggunaan pilihan:
$ dialog--default-button "no" \ --no-label "I Do not" \ --yes-label "I Do" \ --yesno "Adakah anda benar-benar mahu memformat partition?"0 0
Perintah di atas akan menghasilkan hasil berikut:
Widget dialog
Sehingga kini kita melihat beberapa yang paling berguna dialog
Pilihan "biasa". Sekarang kita akan melihat cara menggunakan beberapa widget yang ada secara terperinci. Sebelum meneruskan, kita mesti menentukan sintaks umum. Apabila kami melancarkan dialog, kami mesti sentiasa menyediakan tiga parameter:
- Teks yang akan dipaparkan dalam widget;
- Lebar widget;
- Ketinggian widget;
Sekiranya kami memberikan nilai 0
Untuk lebar atau ketinggian, nilai atribut yang sepadan ditetapkan secara automatik.
Widget InputBox
Widget InputBox digunakan untuk meminta pengguna untuk menjawab soalan dengan input teks. Parameter teks digunakan untuk memberikan soalan: jika rentetan lebih panjang daripada kotak dialog, yang terakhir akan menjadi scrollable. Untuk menggunakan widget ini, kami memanggil dialog dengan --kotak input
pilihan:
Semasa keluar, input yang disediakan oleh pengguna dipaparkan pada output dialog, yang secara lalai adalah stderr
.
Widget senarai semak
Kami sudah melihat bagaimana widget senarai semak kelihatan seperti dalam contoh sebelumnya: Dalam jenis widget ini, satu siri pilihan diberikan kepada pengguna yang boleh memilih satu atau lebih daripadanya. Untuk menggunakan widget ini, kita mesti menggunakan --senarai semak
pilihan, dan, sebagai tambahan kepada tiga parameter standard yang mesti diserahkan kepada semua widget, kita mesti menyediakan juga Senarai ketinggian
dan pilihan yang akan dipaparkan.
The ketinggian garis
Parameter digunakan untuk menetapkan berapa banyak baris yang harus dipaparkan sekaligus: jika bilangan baris kurang daripada pilihan yang ada, menu akan menjadi scrollable. Jika kami menyediakan 0
sebagai nilai ketinggian garis
Bilangan baris akan sesuai dengan bilangan pilihan.
Untuk setiap pilihan kita mesti memberikan pengenal (tag), nama dan status yang boleh mati
atau pada
. Sekiranya statusnya pada
pilihan akan diperiksa secara lalai. Sebaik sahaja kami mengesahkan pilihan kami, tag yang berkaitan dengan entri yang kami periksa akan dipaparkan pada stderr
:
$ dialog -CHECKLIST "Pilih Item:" 0 0 0 \ 1 "Pilihan Nombor Satu" OFF \ 2 "Nombor dua pilihan" pada \ 3 "Nombor Tiga" OFF \ 4 "Nombor Empat" pada
Dengan arahan di atas, kami melancarkan menu dengan 4 pilihan, dan tetapkan pilihan 2 dan 4 diperiksa secara lalai. Output arahan adalah seperti berikut:
Widget radiolis
Widget radiolis dilancarkan apabila dialog dipanggil dengan --Radiolis
pilihan. Ia berfungsi sama dengan widget senarai semak, dengan perbezaan pilihan yang saling eksklusif, jadi hanya satu elemen yang boleh dipilih. Inilah cara kami menggunakan widget:
$ dialog -Radiolist "Pilih Item:" 0 0 0 \ 1 "Pilihan Nombor Satu" OFF \ 2 "Nombor dua pilihan" pada \ 3 "nombor tiga" OFF \ 4 "OFF NOMBOR EMPAT"
Oleh kerana pilihannya saling eksklusif, hanya pilihan pertama yang ditetapkan ke Pada
akan dipilih sebagai lalai.
Tanya pengguna untuk kata laluan menggunakan widget kata laluan
Widget kotak kata laluan digunakan untuk membiarkan pengguna memasukkan kata laluan. Atas sebab keselamatan, teks yang dimasukkan oleh pengguna tidak dipaparkan. Tingkah laku ini dapat diubah suai dengan menggunakan --tidak selamat
Pilihan: Sekiranya kita lakukan, widget akan memaparkan asterisk untuk setiap huruf kata laluan yang dimasukkan dalam medan yang sepadan.
Kami menggunakan widget dengan melancarkan dialog dengan --kotak kata laluan
pilihan:
$ dialog -InSecure --passwordbox "Masukkan kata laluan anda:" 0 0
Output arahan di atas adalah:
Memaparkan mesej dengan widget msgbox
Penggunaan widget ini sangat mudah: ia dipanggil dengan memanggil dialog dengan --msgbox
pilihan dan memaparkan mesej yang merupakan kandungan teks
parameter. Satu okey
butang dipaparkan:
$ dialog - -msgbox "Ini adalah mesej yang sangat penting yang harus dibaca dengan teliti!"0 0
Widget kalendar
Kita boleh menggunakan widget kalendar dengan menggunakan utiliti dialog dengan --kalendar
pilihan. Widget marilah kita pilih tarikh dengan memilih bulan, hari dan tahun yang dipaparkan di bahagian berasingan widget. Adalah mungkin untuk memberikan tarikh lalai dengan lulus sebagai sebahagian daripada arahan.
Untuk memulakan widget dengan "hari kelima Mei tahun 2020" sebagai tarikh lalai, sebagai contoh, kami akan menjalankan arahan berikut:
$ dialog -Calendar "Pilih Tarikh:" 0 0 27 05 2020
Ia akan menghasilkan output berikut:
Kita boleh bergerak di antara bahagian widget menggunakan Tab
kunci, dan tukar parameter dengan menggunakan kekunci anak panah. Sebaik sahaja kami mengesahkan pemilihan, ia dipaparkan ke stderr
dalam format hari/bulan/tahun; ini boleh diubah suai dengan menggunakan --format tarikh
pilihan dengan format yang serasi dengan strftime
ditentukan sebagai hujah. Untuk membuat output dalam format tahun/bulan/hari, sebagai contoh, kami akan menjalankan:
$ dialog --date-format%y/%m/%d-calendar "Pilih tarikh" 0 0 27 05 2020
Tekan pengguna untuk pengesahan: widget yesno
Kami sudah menemui widget ini: ia membolehkan kami mendorong pengguna untuk pengesahan. Semasa menggunakannya, kami menentukan soalan yang akan ditanya melalui teks
parameter. Bergantung pada pilihan pengguna status keluar dikembalikan: 0
Sekiranya pengguna mengesahkan dengan mengklik pada Ya
butang, 1
jika tidak.
Untuk memanggil widget ini kita mesti menggunakan --Ya tidak
pilihan:
$ dialog --yesno "Adakah anda mengesahkan?"0 0
Inilah widget:
Menguruskan output yang dihasilkan oleh widget
Secara lalai, output yang dihasilkan oleh widget dipaparkan pada stderr, jadi sebagai contoh, untuk menyimpan data yang diperoleh dari widget ke fail, yang perlu kita lakukan adalah diarahkan semula stderr
Untuk mengatakan fail (jika anda tidak biasa dengan pengalihan semula, anda mungkin ingin melihat Pengenalan kepada Tutorial Pengalihan Shell Bash):
$ dialog -condong "Pilih Item:" 0 0 \ 1 "Pilihan Nombor Satu" Off \ 2 "Nombor dua pilihan" pada \ 3 "Nombor Tiga" Off \ 4 "Pilihan Nombor Empat" pada 2> Pilihan.txt
Setelah pengguna mengesahkan pilihannya, mereka akan ditulis, ruang yang dipisahkan ke dalam pilihan.txt
fail.
Bagaimana jika kita mahu menyimpan pemilihan terus ke dalam pemboleh ubah? Untuk melaksanakan tugas kita mesti menggunakan --stdout
pilihan, supaya output widget dipaparkan pada stdin
bukan stderr
:
$ pilihan = "$ (dialog --StDout --CheckList" Pilih Item: "0 0 0 \ 1" Pilihan Nombor Satu "OFF \ 2" Nombor dua "pada \ 3" Nombor Nombor Tiga "OFF \ 4" empat "on)"
Dalam contoh di atas, hasil pemprosesan widget, boleh diakses melalui pilihan
pembolehubah. Mungkin kita mungkin mahu gelung ke atas mereka:
$ untuk pilihan dalam $ pilihan; Adakah echo "$ choice"; dilakukan 2 4
Untuk menguruskan proses Ya tidak
widget kita mesti berkelakuan berbeza. Kata widget, seperti yang telah kita lihat, tidak menghasilkan apa -apa output tetapi mengubah kod keluar perintah yang digunakan untuk menghilangkannya dengan sewajarnya kepada pilihan pengguna. Sekiranya pengguna mengesahkan, dan menjawab secara tegas kepada soalan, kod keluar ditetapkan ke 0
, jika tidak 1
(Ini mungkin kelihatan ganjil, tetapi ingat bahawa 0
bermaksud okey
manakala 1
adalah status keluar yang bermaksud bahawa arahan tidak berjaya). Mengetahui ini kita boleh menulis sesuatu seperti:
jika dialog --yesno "Adakah anda ingin membuka contoh terminal gnome ?"0 0; Kemudian jelaskan Gnome-terminal fi
Kesimpulan
Dalam tutorial ini kita melihat bagaimana kita boleh menggunakannya dialog
permohonan untuk digunakan ncurses
widget dalam skrip shell. Mula -mula kita melihat beberapa pilihan biasa yang boleh digunakan secara bebas dari jenis widget, daripada kita melihat beberapa widget secara khusus. Terdapat banyak lagi widget yang boleh digunakan dialog
: Untuk senarai lengkap saya cadangkan anda melihat manual aplikasi.
Tutorial Linux Berkaitan:
- Perkara yang hendak dipasang di Ubuntu 20.04
- Cara mengintegrasikan kotak dialog dalam skrip shell dengan whiptail
- Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
- Bermula dengan Tkinter untuk Tutorial Python
- Gelung bersarang dalam skrip bash
- Perkara yang perlu dipasang di Ubuntu 22.04
- Perintah Linux: Top 20 Perintah Paling Penting yang Anda Perlu ..
- Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..
- Perintah Linux Asas
- Pasang Arch Linux di Workstation VMware
- « Pengenalan kepada pengikis web python dan perpustakaan sup yang indah
- Kali Linux - Gagal mengambil InRelease - Repository Fix »