• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            彩色的命令行 —— 使用 ANSI 色彩代碼

            摘要:

            在 ANSI 兼容終端(例如 xterm、rxvt、konsole 等)里, 可以用彩色顯示文本而不僅僅是黑白。 本文示范了如何使用粗體和彩色的文字

            參見(jiàn):http://www.linuxfocus.org/ChineseGB/May2004/article335.shtml

            概述

            在現(xiàn)實(shí)生活中,每一位 Linux 使用者都要面對(duì) Bash。 雖然第一眼看上去非常枯燥,但是又很多方法能夠讓你的 shell 足夠的個(gè)性化。 shell 提示符的彩色增強(qiáng)讓能夠讓你的 shell 獨(dú)一無(wú)二, 而且還非常清晰易讀。

            在本文中我以 Bash shell 為例。因?yàn)樵诓煌慕K端里的轉(zhuǎn)義序列不完全相同, 所以在本文中我使用的是 ANSI 終端。 ?

            Shell 的配置

            shell 彩色配置出現(xiàn)在 bash 的個(gè)人配置文件 ~/.bashrc 或者是全局配置文件 /etc/bashrc 里面。 可以通過(guò) bashrc 里面的 PS1 變量來(lái)設(shè)置提示符的外觀。

            通常情況下,這個(gè)條目看起來(lái)應(yīng)該是這個(gè)樣子:
            ~/.bashrc: PS1="\s-\v\$ "
            
            \s 表示 shell 的名稱(chēng),-\v 表示他的版本號(hào)。 在提示符的最后面我們放置了一個(gè) $。這樣看起來(lái)也許有點(diǎn)乏味, 所以不妨試試下面這種模式——這種模式在大多數(shù) Linux 的發(fā)行版本下是默認(rèn)的設(shè)置:
            ~/.bashrc: PS1="\u@\h \w \$ "
            
            這表示 用戶@ 當(dāng)前目錄 $,這個(gè)是大部分 Linux 用戶都熟悉的 shell 提示符。 ?

            轉(zhuǎn)義序列

            要是通過(guò)彩色化提示符來(lái)增加個(gè)性化,就要用到轉(zhuǎn)義序列。 轉(zhuǎn)義序列就是一個(gè)讓 shell 執(zhí)行一個(gè)特殊步驟的控制指令。 轉(zhuǎn)義序列通常都是以 ESC 開(kāi)頭(這也是它的命名原因)。 在 shell 里表示為 ^[。這種表示法需要一點(diǎn)時(shí)間去適應(yīng), 也可以用 \033 完成相同的工作(ESC 的 ASCII 碼用十進(jìn)制表示就是 27, = 用八進(jìn)制表示的 33)。

            要直接在 shell 里面輸入轉(zhuǎn)義序列我們需要先按 ctrl-v:CTRL-v ESC?

            使用 shell 的顏色

            下面我用一個(gè)提示符的例子來(lái)解釋 shell 的顏色。
            ~/.bashrc: PS1="\[\033[0;32;40m\u@\h:\w\$ \]"
            
            這樣提示符就全部顯示成綠色了。就像這樣:
            nico@ebrain:~$

            \033 聲明了轉(zhuǎn)義序列的開(kāi)始,然后是 [ 開(kāi)始定義顏色。 后面的 0 定義了默認(rèn)的字體寬度。稍后我會(huì)介紹其他的可用字符。 轉(zhuǎn)義序列字符串要用 \[ 和 \] 括起來(lái), 防止轉(zhuǎn)義序列的文本顯示在 shell 里占用太多的空間。

            下面我們要選擇前景色(這里是 32,代表綠色)。背景色的 40 表示黑色。 要是不想讓提示符后面的文字也變成綠色,我們用 \033[0m 關(guān)閉轉(zhuǎn)義序列, \033[0m 是 shell 的默認(rèn)顏色。前景色和背景色都有 8 種可用的選擇。

            可選顏色:紅色、綠色、黃色、藍(lán)色、洋紅、青色和白色。 他們對(duì)應(yīng)的顏色代碼是:30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍(lán)色)、35(洋紅)、36(青色)、37(白色)。

            用同樣色方法設(shè)置背景色,不過(guò)要把第一個(gè)數(shù)字“3”替換成“4”, 例如 40、41、42、43、44、45、46、47。

            示例:
            ~/.bashrc: PS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]"
            

            這給了我們一個(gè)非常多彩的提示符:
            nico@ebrain:~$

            我們使用 export PS1="string" 來(lái)測(cè)試這些設(shè)置, 稍后我們要把這些設(shè)置轉(zhuǎn)移到 .bashrc 里面。 現(xiàn)在我的提示符看起來(lái)是這個(gè)樣子:
            PS1="\[\033[1;34;40m[\033[1;31;40m\u@\h:\w\033[1;34;40m]\033[1;37;40m $\033[0;37;0m\] "
            

            [nico@ebrain:~]
            ?

            文本屬性

            剛才提到了,在第一個(gè)轉(zhuǎn)義序列后面的“0”是提示符的文本的默認(rèn)顏色設(shè)置。 對(duì)于文本屬性來(lái)說(shuō),這些值是有意義的:0、1、22、4、24、5、25、7、27, 分別表示:默認(rèn)值、粗體、非粗體、下劃線、非下劃線、閃爍、非閃爍、 反顯、非反顯。

            通過(guò)下面這一段短小的腳本,我們可以看看色彩組合。
            #!/bin/sh
            ############################################################
            # Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de
            # Last change: Mon Feb 16 16:24:41 CET 2004
            ############################################################
            
            for attr in 0 1 4 5 7 ; do
                echo "----------------------------------------------------------------"
                printf "ESC[%s;Foreground;Background - \n" $attr
                for fore in 30 31 32 33 34 35 36 37; do
                    for back in 40 41 42 43 44 45 46 47; do
                        printf '\033[%s;%s;%sm %02s;%02s  ' $attr $fore $back $fore $back
                    done
                printf '\n'
                done
                printf '\033[0m'
            done
            
            這段腳本可以從 showansicol.tar.gz 下載,格式是 tar.gz?

            另一個(gè)程序

            在 shell 中設(shè)置顏色不僅僅能創(chuàng)建更加漂亮的提示符, 在編寫(xiě)控制臺(tái)程序的時(shí)候也非常有用。

            對(duì)于一個(gè)要使用彩色的程序員,就必須要使用類(lèi)似 slangncurses 這樣的的庫(kù),者通常會(huì)增加執(zhí)行文件的大小。 Ncurses 有著或多或少的獨(dú)立于終端的類(lèi)型的優(yōu)勢(shì)。 ?

            C 語(yǔ)言示例

            用綠色打印“Hello Word”:
            #include <stdio.h>
            int main(void){
              const char *const green = "\033[0;40;32m";
              const char *const normal = "\033[0m";
              printf("%sHello World%s\n", green, normal);
              return 0;
            }
            
            另外一個(gè)有用的轉(zhuǎn)義序列是 printf("\033[2J"),它和 system(clear) 完成的功能一樣。但是可以不需要頭文件 unistd.h

            使用printf("\033[1K") 可以刪除一行。 ?

            初始化腳本示例

            如果我們想在 /etc/init.dinit 腳本成功的執(zhí)行后, 得到一個(gè)漂亮的、清晰易讀的提示,而不是一個(gè)簡(jiǎn)單的 '.', 我們可以再一次的使用轉(zhuǎn)義序列。

            這是一段 cron init script 的摘錄:
            #!/bin/sh
            # Start/stop the cron daemon.
            test -f /usr/sbin/cron || exit 0
            
             case "$1" in
             start)  echo -n "Starting periodic command scheduler: cron"
                 start-stop-daemon --start --quiet --exec /usr/sbin/cron
            
                             echo "."
            ;;
            
            
            如果 cron 腳本執(zhí)行成功就會(huì)顯示一個(gè)句點(diǎn)。 可以用 [Ok] 給這些信息添加上彩色特征,通過(guò)改變 echo 字符串,例如:
            #!/bin/sh
            # Start/stop the cron daemon.
            test -f /usr/sbin/cron || exit 0
            case "$1" in
            start)  echo -n "Starting periodic command scheduler: cron"
                    start-stop-daemon --start --quiet --exec /usr/sbin/cron
            echo "\[ \033[1;34;40m[ \033[1;32;40mOk \033[1;34;40m]\033[0m\]"
                ;;
            

            把這個(gè)設(shè)置應(yīng)用到所有的 init腳本上非常耗費(fèi)時(shí)間, 除非使用轉(zhuǎn)義序列 \033 —— 因?yàn)?Ctrl-v 不是作為一個(gè)字符來(lái)處理的。??

            posted on 2006-08-10 18:16 楊粼波 閱讀(927) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 學(xué)習(xí)筆記

            久久这里只有精品久久| 99久久精品午夜一区二区| 国产精品伦理久久久久久| 色婷婷噜噜久久国产精品12p| 综合人妻久久一区二区精品| 久久精品成人免费网站| 热久久视久久精品18| 久久夜色精品国产亚洲| 亚洲伊人久久成综合人影院| 91精品国产91久久久久久蜜臀| 久久综合噜噜激激的五月天| 久久人人爽人人爽人人片AV不| 国产精品99久久久久久宅男| 久久青青草视频| 久久无码av三级| 香蕉久久夜色精品升级完成| 久久99热这里只有精品国产| 7国产欧美日韩综合天堂中文久久久久| 久久一本综合| 久久影院午夜理论片无码 | 亚洲日本va中文字幕久久| 久久99国产精品99久久| 欧美喷潮久久久XXXXx| 色综合久久久久综合99| 国产激情久久久久影院老熟女免费 | 亚洲精品白浆高清久久久久久| 精品国产综合区久久久久久| 亚洲狠狠综合久久| 九九精品99久久久香蕉| 久久天天躁夜夜躁狠狠躁2022| 久久久久亚洲AV成人网| 久久精品国产欧美日韩| 亚洲国产精品久久久久婷婷老年 | 亚洲狠狠久久综合一区77777| 久久久久人妻一区精品性色av| 国内精品九九久久久精品| 丁香色欲久久久久久综合网| 久久国产香蕉一区精品| 久久涩综合| 久久午夜福利无码1000合集| 粉嫩小泬无遮挡久久久久久|