Ảnh chụp màn hình trong câu hỏi trông giống như whiptail ( hộp thoại bắt chước chương trình giảm chức năng , sử dụng newt thay vì ncurses ). Cách tiêu đề và các nút được hiển thị được tích hợp vào mỗi chương trình, làm cho chúng trông khác nhau.
Đây là một đoạn script sao chép ảnh chụp màn hình gốc, cho cả whiptail hoặc hộp thoại:
#!/bin/sh
: ${DIALOG:=dialog}
case "$DIALOG" in
*dialog*)
OPTS="$OPTS --cr-wrap"
high=10
;;
*whiptail*)
high=12
;;
esac
rows=$(stty size | cut -d' ' -f1)
[ -z "$rows" ] && rows=$high
[ $rows -gt $high ] && rows=$high
cols=$(stty size | cut -d' ' -f2)
$DIALOG --backtitle "Package configuration" \
--title "Configuring sun-java6-jre" \
$OPTS \
--yesno '\nIn order to install this package, you must accept the license terms, the "Operating System Distributor License for Java" (DLJ), v1.1. Not accepting will cancel the installation.\n\nDo you accept the DLJ license terms?' $rows $((cols - 5))
và để so sánh, ảnh chụp màn hình với whiptail:
và với hộp thoại:
Bên cạnh sự xuất hiện khác nhau của tiêu đề và các nút, hộp thoại sử dụng các màu khác nhau theo mặc định (mặc dù đó là cấu hình, xem ảnh chụp màn hình ) và nó sử dụng ít dòng hơn trên màn hình.
hộp thoại (và whiptail) sử dụng các thư viện để quản lý hiển thị đường kẻ, màu sắc, v.v. Nhưng bạn cũng có thể thấy newt được sử dụng trong chương trình anaconda của Red Hat như một thư viện chia sẻ được gọi từ python (có cùng hình thức). Dọc theo cùng một dòng, chương trình cấu hình kernel bắt đầu như một bản sao (cắt xuống) của hộp thoại, sau đó phát triển thành các tính năng sử dụng thư viện dùng chung (không có lxdialog
chương trình gốc ) giống như cách sử dụng newt từ python.
Từ bash - bạn có thể sử dụng hộp thoại hoặc whiptail cho các tính năng được sử dụng phổ biến nhất. Ai đó đã viết một trình bao bọc cho những người đó (tính theo perl) để cho phép các tập lệnh dễ dàng sử dụng hơn hoặc một số người khác, nhưng tốt hơn hết bạn nên sử dụng hộp thoại trực tiếp vì mô-đun perl về cơ bản là mẫu số chung.
Các nguồn hộp thoại bao gồm các ví dụ về tất cả các widget cùng với hầu hết các tùy chọn dòng lệnh:
cdialog (ComeOn Dialog!) version 1.3-20160424
Copyright 2000-2015,2016 Thomas E. Dickey
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* Display dialog boxes from shell scripts *
Usage: cdialog <options> { --and-widget <options> }
where options are "common" options, followed by "box" options
Special options:
[--create-rc "file"]
Common options:
[--ascii-lines] [--aspect <ratio>] [--backtitle <backtitle>] [--beep]
[--beep-after] [--begin <y> <x>] [--cancel-label <str>] [--clear]
[--colors] [--column-separator <str>] [--cr-wrap] [--date-format <str>]
[--default-button <str>] [--default-item <str>] [--defaultno]
[--exit-label <str>] [--extra-button] [--extra-label <str>]
[--help-button] [--help-label <str>] [--help-status] [--help-tags]
[--hfile <str>] [--hline <str>] [--ignore] [--input-fd <fd>]
[--insecure] [--item-help] [--keep-tite] [--keep-window] [--last-key]
[--max-input <n>] [--no-cancel] [--no-collapse] [--no-cr-wrap]
[--no-items] [--no-kill] [--no-label <str>] [--no-lines] [--no-mouse]
[--no-nl-expand] [--no-ok] [--no-shadow] [--no-tags] [--nook]
[--ok-label <str>] [--output-fd <fd>] [--output-separator <str>]
[--print-maxsize] [--print-size] [--print-version] [--quoted]
[--scrollbar] [--separate-output] [--separate-widget <str>] [--shadow]
[--single-quoted] [--size-err] [--sleep <secs>] [--stderr] [--stdout]
[--tab-correct] [--tab-len <n>] [--time-format <str>] [--timeout <secs>]
[--title <title>] [--trace <file>] [--trim] [--version] [--visit-items]
[--week-start <str>] [--yes-label <str>]
Box options:
--buildlist <text> <height> <width> <list-height> <tag1> <item1> <status1>...
--calendar <text> <height> <width> <day> <month> <year>
--checklist <text> <height> <width> <list height> <tag1> <item1> <status1>...
--dselect <directory> <height> <width>
--editbox <file> <height> <width>
--form <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...
--fselect <filepath> <height> <width>
--gauge <text> <height> <width> [<percent>]
--infobox <text> <height> <width>
--inputbox <text> <height> <width> [<init>]
--inputmenu <text> <height> <width> <menu height> <tag1> <item1>...
--menu <text> <height> <width> <menu height> <tag1> <item1>...
--mixedform <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1> <itype>...
--mixedgauge <text> <height> <width> <percent> <tag1> <item1>...
--msgbox <text> <height> <width>
--passwordbox <text> <height> <width> [<init>]
--passwordform <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...
--pause <text> <height> <width> <seconds>
--prgbox <text> <command> <height> <width>
--programbox <text> <height> <width>
--progressbox <text> <height> <width>
--radiolist <text> <height> <width> <list height> <tag1> <item1> <status1>...
--rangebox <text> <height> <width> <min-value> <max-value> <default-value>
--tailbox <file> <height> <width>
--tailboxbg <file> <height> <width>
--textbox <file> <height> <width>
--timebox <text> <height> <width> <hour> <minute> <second>
--treeview <text> <height> <width> <list-height> <tag1> <item1> <status1> <depth1>...
--yesno <text> <height> <width>
Auto-size with height and width = 0. Maximize with height and width = -1.
Global-auto-size if also menu_height/list_height = 0.
Đọc thêm:
dialog
, đó là những gì nó xuất hiện để sử dụng.