日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell的图形化工具(七)

發布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell的图形化工具(七) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隨著新工具的出現,在shell中也能夠進行圖形化的編程了,不過這些比起用java或者其他的高級語言實現的圖形界面是非常簡陋的。

7.1 dialog的普通使用

我們先來顯示一個普通的文本框,來看看。在命令行下輸入如下的命令:
dialog –msgbox “this is content” 10 20
產生如下的界面

如果提示沒有安裝dialog,請安裝dialog。下面的指令是在Ubuntu下安裝dialog
sudo apt-get install dialog

注意:dialog會將內容輸出到錯誤輸出流中,因此可以通過錯誤輸出流來獲得內容,點擊ok按鈕返回0,點擊cancel返回1.可以通過$?來判斷點擊的是哪一個按鈕

對上面的指令進行詳細說明,dialog的使用格式如下:
dialog 通用選項 box選項

7.2.dialog 有兩類選項,一種叫做通用選項,一種叫box選項。

通用選項:對所有的指令都適用。
box選項:專門構建各種box的選項。
常見的通用選項如下,這里并沒有列出完整的通用選項,可以通過man dialog進行查看(外加一個英語詞典):
–colors:調整字體顏色.man dialog查看該選項,原文如下:
Interpret embedded “\Z” sequences in the dialog text by the following character, which tells dialog to set colors or video attributes: 0 through 7 are the ANSI used in curses: black, red, green, yellow, blue, magenta, cyan and white respectively. Bold is set by ‘b’, reset by ‘B’. Reverse is set by ‘r’, reset by ‘R’. Underline is set by ‘u’, reset by ‘U’. The settings are cumulative, e.g., “\Zb\Z1” makes the following text bold (perhaps bright) red. Restore normal settings with “\Zn”.
大致翻譯如下:通過寫在文本里面的反斜杠字符’\Z’,來告訴dialog應該顯示怎樣的顏色屬性:這里有0-7個數字,分別表示,黑色,紅色,綠色,黃色,藍色,品紅色,青色和白色。粗體使用字符b,取消粗體使用B。反白使用r(類似于字體被選中的情況),取消反白使用R。下劃線使用u,取消下劃線使用U。舉例如下:
鍵入如下的命令:

dialog –colors –msgbox “wanbiao\Z1wanbiao\Zbwanbiao\ZB\Zuwanbiao” 20 50

效果如下:

解釋如下:\Z1后面的字體使用紅色,因此后面三個wanbiao使用紅色字體。\Zb后面使用粗體,因此倒數第二個wanbiao使用粗體,加紅色,\ZB取消粗體,\Zu使用下劃線,因此最后一個wanbiao使用了紅色,非粗體,加下劃線。
–ok-label string:使用指定的字符串,替換原生的ok。如下:

dialog –ok-label confirm –msgbox wanbiao 25 50

效果如下:

–cancel-label string:用指定的字符串,替換原生的cancel,類似于上面的選項。
–no-shadow :取消掉陰影,這在某些遠程終端上比較常用,遠程終端有時是使用字符來替代陰影,因此顯得比較混亂,可以使用此選項關閉陰影。
–shadow:同上,顯示陰影。
–clear:清除操作。
–timeout seconds:再給定秒的時間內,沒有操作,將會產生超時,設置0秒的話,將會直接忽略。超時之后,返回一個255的錯誤碼
還有一些通用選項,沒有列出,可以通過man進行查看。

二.box選項

msgbox:顯示一個信息框,用法如下:

dialog –msgbox text height width

上面所有的列子都是以—msgbox來舉例的,這里不再舉例。
–checklist:顯示一個選項列表,用法如下:
dialog –checklist text height width list-height [ tag item status ] …

dialog –checklist name 25 50 45 0 zhangsan off 1 lisi on 2 wangmazi off

效果如下:

–form:表單,使用樣式如下:
dialog –form text height width formheight [ label y x item y x flen ilen ]
label y x 表示在y行x列顯示label
item y x 表示在y行x列顯示item
flen 表示filed length,字段長度
ilen 表示input length,輸入的字符長度。
示例如下:

dialog –form “input your name12 40 4 username: 1 1 “wanbiao” 1 10 0

效果圖如下:

–fselect :文件選擇器。
dialog –fselect filepath height width

dialog –fselect ./out 20 50

效果如下:

–gauge:進度條
dialog text height width [percent]

dialog –gauge progress 20 50 30

效果如下:

下面寫一個動態的進度條,使用for循環傳遞數值給dialog如下:

for I in {1..100}; do echo $i;done | dialog –gauge “progress” 20 30

圖片不能顯示動態的效果,因此,可以自己手動試一下。
–infobox text height width:跟—msgbox類似,這里不再舉例,不過他是一個消息框,彈出之后,馬上就返回了。
–inputbox text height width [init]:輸入框,如下示例:

dialog –input name 20 50 wanbiao

效果如下:

剩下的box選項還包括:
–inputmenu
–menu
–pause
–passwordbox
–passwordform
–radiolist
–timebox
–calendar
等等一系列的box選項,這些選項,可以通過man手冊,獲取。此處不再贅述。

三.綜合運用

這里顯示一個例子,類似于用戶登錄,
1.首先輸入用戶名和密碼,點擊確定按鈕后
2.驗證是否正確,正確密碼為123456
代碼如下:

#定義一個中間文件,用來存儲產生的中間數據 tmpfile=/tmp/.logintmp #名字輸入框 dialog --inputbox name 10 20 2> $tmpfile if [ $? -eq 0 ];then name=$(cat $tmpfile) #名字不能為空,否則,一直顯示名字輸入框 while [ "$name" == "" ]; dodialog --inputbox "name can't empty" 10 20 2> $tmpfilename=$(cat $tmpfile) done #密碼輸入框 dialog --inputbox password 10 20 2> $tmpfile password=$(cat $tmpfile) #密碼驗證 if [ "$password" == "123456" ];then#成功之后的提示框dialog --infobox "login Success" 10 20 else #失敗之后的提示框dialog --infobox "login fail" 10 20 fi else echo "user cancel" fi

注意,密碼框應該是用真正的—passwordbox。

自此,shell的基礎已經復習完畢,下面的一個專題是如何自己開發這種類似的dialog工具。
效果圖如下:


總結

以上是生活随笔為你收集整理的shell的图形化工具(七)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。