在linux命令行里輸出帶顏色的字符,需要使用ascii碼里的字符屬性設(shè)置描述符。
成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)蕉城,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18982081108
\033[0m 關(guān)閉所有屬性
\033[1m 設(shè)置高亮度
\033[30m 至 \33[37m 設(shè)置前景色
\033[40m 至 \33[47m 設(shè)置背景色
其中顏色代碼是:
背景顏色范圍:40----49
40:黑
41:深紅
42:綠
43:黃色
44:藍(lán)色
45:紫色
46:深綠
47:白色
字(前景)顏色:30-----------39
30:黑
31:紅
32:綠
33:黃
34:藍(lán)色
35:紫色
36:深綠
37:白色
例如你要輸出紅色的“hello world”:
\033[31mheool world \033[0m
深藍(lán)色是目錄,白色是普通文件,淺藍(lán)是軟鏈接
其他顏色:
黃色是設(shè)備文件,紅色有的系統(tǒng)是壓縮文件,紅背景是斷掉的軟連接(就是軟連接指向的文件沒(méi)了),土黃色文件是 socket 文件,嫩綠色是可執(zhí)行的文件
還有啥想不起來(lái)了。
這些顏色是可以改的,由環(huán)境變量 LS_COLORS 定義。所以顏色習(xí)慣只是一個(gè)參考。
先展示個(gè)人結(jié)果
PS1是Linux終端用戶(hù)的一個(gè)環(huán)境變量,用來(lái)定義命令行提示符的參數(shù)。
在終端輸入命令:
可得到當(dāng)前PS1的定義值:
PS1的常用參數(shù)以及含義:
所以linux默認(rèn)的命令行提示信息的格式
在PS1中設(shè)置字符顏色的格式為:[\e[F;Bm]........[\e[0m],其中“F“為字體顏色,編號(hào)為30-37,“B”為背景顏色,編號(hào)為40-47,[\e[0m]作為顏色設(shè)定的結(jié)束。
顏色對(duì)照表:
只需將對(duì)應(yīng)數(shù)字套入設(shè)置格式中即可。
經(jīng)過(guò)多次測(cè)試后,最終確定了一個(gè)適合我自己的格式:
但注意這樣的設(shè)置只是臨時(shí)性的.
上面的設(shè)置的作用域只有當(dāng)前終端的登陸有效,關(guān)閉終端或退出登錄即刻失效。要想永久性的保存設(shè)置,需要修改.bashrc配置文件。
鍵入命令:
現(xiàn)在可以看到.bashrc這個(gè)文件。
編輯.bashrc:
加入這一行:
保存退出。
重新加載bash配置文件:
即可立即并永久生效了。
在linux中,我們?cè)诰庉嫊r(shí)需要對(duì)文檔編輯或者一些信息的顯示加上顏色,增強(qiáng)閱讀的效果
格式: echo -e "\033[字體顏色;字背景顏色m字符串\033[0m"
要顯示什么顏色,優(yōu)先是先判斷位置,按語(yǔ)法上來(lái)說(shuō),應(yīng)該是先字體色,然后是背景色,但是字體色的地方數(shù)值為43,所以判斷為背景的顏色,而在后面的31本應(yīng)該是背景色,結(jié)果數(shù)值31位字體的顏色,所以顯示的效果是字體的顏色為紅色,而不是背景紅色,假設(shè)這個(gè)31是數(shù)值41,則表示背景的為紅色,整體的效果就是紅色背景,字體處沒(méi)有顏色,為默認(rèn)的白色,且效果是閃爍。
其中設(shè)置顏色的格式為:\033[ ; m …… \033[0m,其中ascii code是對(duì)顏色調(diào)用的始末.也可以表示為\e[F;Bm…….\e[0m
字背景顏色范圍: 40--49? ? ? ? ? ? ? ? ? 字顏色: 30--39
例如顯示紅色,其中紅色^[[31mred^[[0m其中^[是在插入編輯模式下按鍵進(jìn)去額ctr+v+[這三個(gè)按鍵輸入的。
假設(shè)寫(xiě)在文檔tt1寫(xiě)入對(duì)應(yīng)的語(yǔ)句來(lái)查看,通過(guò)cat ?tt1驗(yàn)證效果
^[[31mred^[[0m :表示對(duì)應(yīng)的字是紅色字體,沒(méi)有底色,如下截圖
^[[31mred^[[44m:表示紅色字體,底色為紫紅色。假設(shè)寫(xiě)在文檔tt1,后面cat tt1.這個(gè)屏幕底色都是藍(lán)色,字都是紅色如下截圖
^[[31;44mred^[[0m:表示紅色字體,字和屏幕的底色為藍(lán)色,背景沒(méi)有底色,和^[[31mred^[[44m效果一樣。如下截圖
^[[31;44mred^[[44m:表示紅色字體,底色都是藍(lán)色
在命令行里輸入命令:echo -e '\e[43;31;4mmagedu\e[0m',得到如下的效果
PS1是Linux終端用戶(hù)的一個(gè)環(huán)境變量,用來(lái)說(shuō)明命令行提示符的設(shè)置。在終端輸入命令:echo $PS1,就會(huì)輸出PS1的定義:
默認(rèn)的PS1變量值為 : PS1="[\u@\h \W]$"
PS1的定義中個(gè)常用的參數(shù)的含義如下:
給PS1賦值如下:
PS1="[\[\e[31;40m\]\u\[\e[37;40m\]@\[\e[34;40m\]\h\[\e[37;40m\] \W]\\$\[\e[0m"
這里需要注意,顏色的結(jié)束調(diào)用符號(hào),要放在最后面,否則當(dāng)使用命令history查看歷史命令時(shí),會(huì)出現(xiàn)各種異常的顯示
正確的結(jié)果得到的結(jié)果如下圖
當(dāng)把結(jié)束符調(diào)整到$前面,如PS1="[\[\e[31;40m\]\u\[\e[37;40m\]@\[\e[34;40m\]\h\[\e[37;40m\] \W]\[\e[0m\\$",使用history查找的時(shí)候出現(xiàn)了如下的異常顯示
注意,這里賦值的時(shí)候要用單引號(hào)才能得到要的效果,只是單純改變顏色,其他值不改變,如果賦值用雙引號(hào),如下
錯(cuò)誤寫(xiě)法:PS1="[\[\e[31;40m\]\u\[\e[37;40m\]@\[\e[34;40m\]\h\[\e[37;40m\]\W]\[\e[0m\$"
得到的效果如下:
如果是root時(shí),提示符為:# ,普通用戶(hù)則為:$,但是雙引號(hào)后root的提示符為$,是不對(duì)的
解決辦法:如果用雙引號(hào),需要再\$前再加一個(gè)\,語(yǔ)句如下
PS1="[\[\e[31;40m\]\u\[\e[37;40m\]@\[\e[34;40m\]\h\[\e[37;40m\] \W]\\$\[\e[0m"
賦值為PS1='\[\e[43m\][\[\e[31m\]\u@\[\e[34m\]\h \W]\$\e[0m'
效果如下截圖
這個(gè)例子,我們可以明顯看出,\e[顏色值m這個(gè)是說(shuō)明接下來(lái)的顏色從這里開(kāi)始是什么顏色,\e[0m說(shuō)明的是顏色的結(jié)束位置,
這里需要注意的是,如果沒(méi)有通過(guò)\[ ? \]對(duì)每一個(gè)顏色進(jìn)行界定,使用過(guò)程,如上翻歷史頁(yè),就會(huì)出現(xiàn)顯示異常。
將設(shè)置好的PS1變量寫(xiě)到家目錄下的.bashrc 里面,這樣后面開(kāi)啟的終端都有效。
$ vim .bashrc
打開(kāi)后添加一行
PS1="[\[\e[31;40m\]\u\[\e[37;40m\]@\[\e[34;40m\]\h\[\e[37;40m\]\W]\[\e[0m\\$"
保存退出再次登錄時(shí)顯示的顏色也會(huì)是我們?cè)O(shè)定的值了。