laoxia 回復于:2003-07-08 10:37:13 |
ZT
對于在Shell下面編寫屏幕程序,大家使用echo命令比較多,而且此命令也比較快。下面介紹的是比較漂亮一點的方法,但是速度比較慢。要實現這一點,系統上需要一個彩色監視器和tput命令。 一.使用 在使用tput前,需要在腳本或命令行中使用tput命令初始化終端。 $ tput init tput產生三種不同的輸出:字符型、數字型和布爾型(真/假)。 /字符串輸出/ 下面是大部分常用字符串: 名字含義 bel 警鈴 blink 閃爍模式 bold 粗體 civis 隱藏光標 clear 清屏 cnorm 不隱藏光標 cup 移動光標到屏幕位置( x,y) el 清除到行尾 ell 清除到行首 smso 啟動突出模式 rmso 停止突出模式 smul 開始下劃線模式 rmul 結束下劃線模式 sc 保存當前光標位置 rc 恢復光標到最后保存位置 sgr0 正常屏幕 rev 逆轉視圖 /數字輸出/ 以下是大部分常用數字輸出。 名字含義 cols 列數目 ittab設置寬度 lines 屏幕行數 /布爾輸出/ 在tput中只有兩種布爾操作符。 名字含義 chts 光標不可見 hs 具有狀態行 例如:tput clear 清除屏幕 二.光標位置 可以用tput將光標放在屏幕任意位置。格式為: cup r c r為從上至下屏幕行數, c為穿過屏幕列數。 最好將之編成函數,這樣就可以把行和列的值傳遞給它。 例子:tput cup 2 3命令將光標放到第2行、第3列。 三.菜單中使用顏色 對域使用顏色可以使數據輸入屏幕看起來更加專業。下面將使用的顏色是A N S I標準顏 色,并不是所有顏色都適合于所有系統。下面列出了大部分常用顏色。 1. 前景色: 數字顏色數字顏色 3 0 黑色3 4 藍色 3 1 紅色3 5 紫色 3 2 綠色3 6 青色 3 3 黃(或棕)色3 7 白(或灰)色 2. 背景色: 數字顏色數字顏色 4 0 黑色4 4 青色 4 1 紅色4 5 藍色 4 2 綠色4 6 青色 4 3 黃(或棕)色4 7 白(或灰)色 例子:黑底綠字echo "\033[40;32m" 使用tput命令可以增強應用外觀及腳本的控制。顏色設置可以增加應用的專業性。注意使 用顏色不要太過火,否則速度會非常的慢。 |
beginner-bj 回復于:2003-07-08 12:27:27 |
能不能實現象REDHAT那樣,ls時目錄是一種顏色、文件是一種顏色、link又是另一種顏色? |
yohoo7 回復于:2003-07-08 13:42:15 |
樓上想問的是類似bash的功能吧? |
beginner-bj 回復于:2003-07-08 13:59:31 |
應該不是bash的功能。redhat下ls --color就可以分顏色顯示,不知solaris下應如何實現? |
maiku 回復于:2003-07-08 16:15:29 |
coreutils in sunfreeware |
yohoo7 回復于:2003-07-08 16:31:57 |
恕愚鈍 樓上能否再給一個清楚的描述? |
beginner-bj 回復于:2003-07-08 21:48:09 |
[quote:5bae64d128="maiku"]coreutils in sunfreeware[/quote:5bae64d128]
是這個嗎?好象不管用??? bash-2.03# pkgadd -d shutils-2.0.15-sol8-intel-local The following packages are available: 1 SMCshutil shutils (intel) 2.0.15 Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]: Processing package instance <SMCshutil> from </var/spool/pkg/shutils-2.0.15-sol8 -intel-local> shutils (intel) 2.0.15 Free Software Foundation Using </usr/local> as the package base directory. ## Processing package information. ## Processing system information. 4 package pathnames are already properly installed. ## Verifying disk space requirements. ## Checking for conflicts with packages already installed. ## Checking for setuid/setgid programs. Installing shutils as <SMCshutil> ## Installing part 1 of 1. /usr/local/bin/basename /usr/local/bin/chroot /usr/local/bin/date /usr/local/bin/dirname /usr/local/bin/env /usr/local/bin/expr /usr/local/bin/factor /usr/local/bin/false /usr/local/bin/groups /usr/local/bin/hostid /usr/local/bin/hostname /usr/local/bin/id /usr/local/bin/kill /usr/local/bin/logname /usr/local/bin/nice /usr/local/bin/nohup /usr/local/bin/pathchk /usr/local/bin/pinky /usr/local/bin/printenv /usr/local/bin/printf /usr/local/bin/pwd /usr/local/bin/seq /usr/local/bin/sleep /usr/local/bin/stty /usr/local/bin/tee /usr/local/bin/test /usr/local/bin/true /usr/local/bin/tty /usr/local/bin/uname /usr/local/bin/uptime /usr/local/bin/users /usr/local/bin/who /usr/local/bin/whoami /usr/local/bin/yes /usr/local/doc/shutils/ABOUT-NLS /usr/local/doc/shutils/AUTHORS /usr/local/doc/shutils/COPYING /usr/local/doc/shutils/ChangeLog /usr/local/doc/shutils/ChangeLog.0 /usr/local/doc/shutils/INSTALL /usr/local/doc/shutils/NEWS /usr/local/doc/shutils/README /usr/local/doc/shutils/README-alpha /usr/local/doc/shutils/THANKS /usr/local/doc/shutils/TODO /usr/local/doc/shutils/doc/ChangeLog /usr/local/doc/shutils/doc/Makefile /usr/local/doc/shutils/doc/Makefile.am /usr/local/doc/shutils/doc/Makefile.in /usr/local/doc/shutils/doc/constants.texi /usr/local/doc/shutils/doc/coreutils.info /usr/local/doc/shutils/doc/coreutils.texi /usr/local/doc/shutils/doc/doclicense.texi /usr/local/doc/shutils/doc/getdate.texi /usr/local/doc/shutils/doc/perm.texi /usr/local/doc/shutils/doc/stamp-vti /usr/local/doc/shutils/doc/version.texi /usr/local/info/coreutils.info /usr/local/man/man1/basename.1 /usr/local/man/man1/chroot.1 /usr/local/man/man1/date.1 /usr/local/man/man1/dirname.1 /usr/local/man/man1/echo.1 /usr/local/man/man1/env.1 /usr/local/man/man1/expr.1 /usr/local/man/man1/factor.1 /usr/local/man/man1/false.1 /usr/local/man/man1/groups.1 /usr/local/man/man1/hostid.1 /usr/local/man/man1/hostname.1 /usr/local/man/man1/id.1 /usr/local/man/man1/logname.1 /usr/local/man/man1/nice.1 /usr/local/man/man1/nohup.1 /usr/local/man/man1/pathchk.1 /usr/local/man/man1/pinky.1 /usr/local/man/man1/printenv.1 /usr/local/man/man1/printf.1 /usr/local/man/man1/pwd.1 /usr/local/man/man1/seq.1 /usr/local/man/man1/sleep.1 /usr/local/man/man1/stty.1 /usr/local/man/man1/su.1 /usr/local/man/man1/tee.1 /usr/local/man/man1/test.1 /usr/local/man/man1/true.1 /usr/local/man/man1/tty.1 /usr/local/man/man1/uname.1 /usr/local/man/man1/uptime.1 /usr/local/man/man1/users.1 /usr/local/man/man1/who.1 /usr/local/man/man1/whoami.1 /usr/local/man/man1/yes.1 [ verifying class <none> ] Installation of <SMCshutil> was suclearcase/" target="_blank" >ccessful. |
beginner-bj 回復于:2003-07-08 21:48:48 |
[quote:4f1f1a9b38="yohoo7"]恕愚鈍 樓上能否再給一個清楚的描述?[/quote:4f1f1a9b38]
http://dcsearch.sun.com/search/sfw/index.jsp?qt=coreutils&qp=&qp= |
javamud 回復于:2003-07-09 05:02:39 |
老蝦這么早就起來啦?
pfpf 小弟這里有豆腐腦,來一碗? |
laoxia 回復于:2003-07-09 05:06:26 |
四年沒吃豆腐腦了啊,呵呵 |
yohoo7 回復于:2003-07-09 10:20:19 |
頂一下。
現在的問題究竟是sh的問題,還是遠端終端軟件的問題,尚未明了。 |
deeperpurple 回復于:2003-08-02 17:22:58 |
我也頂上去,確實不明白 ![]() |