echo如何輸出帶顏色的文本


本文鏈接:https://blog.csdn.net/qualcent/article/details/7106483
 
############################################################
# echo命令介紹
功能說明:顯示文字
語   法:echo [-ne][字符串] / echo [--help][--version]
補充說明:echo會將輸入的字符串送往標准輸出。輸出的字符串間以空白字符隔開, 並在最后加上換行號。
參   數:
    -n 不要在最后自動換行
    -e 打開反斜杠ESC轉義。若字符串中出現以下字符,則特別加以處理,而不會將它當成一般文字輸出:
           \a 發出警告聲;
           \b 刪除前一個字符;
           \c 最后不加上換行符號;
           \f 換行但光標仍舊停留在原來的位置;
           \n 換行且光標移至行首;
           \r 光標移至行首,但不換行;
           \t 插入tab;
           \v 與\f相同;
           \\ 插入\字符;
           \nnn 插入nnn(八進制)所代表的ASCII字符;
    -E 取消反斜杠ESC轉義 (默認)
    -help 顯示幫助
    -version 顯示版本信息

############################################################
# echo輸出顏色文本
echo命令改變樣式,以輸出不同顏色的文本,必須有 -e 選項(開啟echo中的轉義)。
文本終端的顯示顏色可以使用“ANSI非常規字符序列”來生成。
例如:echo -e "\033[44;37;5m ME\033[0m COOL"
解釋:"\033[44;37;5m ME "設置背景為藍色,前景為白色,閃爍光標,輸出字符“ME”;
      "\033[0m COOL"重新設置屏幕到缺省設置,輸出字符 “COOL”。
      "e"是命令echo的一個可選項,它用於激活特殊字符的解析器。"\033"引導非常規字符序列(即"\033["表示終端轉義字符開始,"\033"即退出鍵<ESC>的ASCII碼)。"m"意味着設置屬性然后結束非常規字符序列,這個例子里真正有效的字符是"44;37;5"和"0"。修改"44;37;5"可以生成不同顏色的組合,數值和編碼的前后順序沒有關系。
   
    可以選擇的編碼如下所示(這些顏色是ANSI標准顏色):
          編碼          顏色/動作
          0            重新設置屬性到缺省設置
          1            設置粗體
          2            設置一半亮度(模擬彩色顯示器的顏色)
          4            設置下划線(模擬彩色顯示器的顏色)
          5            設置閃爍
          7            設置反向圖象
          22           設置一般密度
          24           關閉下划線
          25           關閉閃爍
          27           關閉反向圖象
          30           設置黑色前景
          31           設置紅色前景
          32           設置綠色前景
          33           設置黃色前景
          34           設置藍色前景
          35           設置紫色前景
          36           設置青色前景
          37           設置白色(灰色)前景
          38           在缺省的前景顏色上設置下划線
          39           在缺省的前景顏色上關閉下划線
          40           設置黑色背景
          41           設置紅色背景
          42           設置綠色背景
          43           設置黃色背景
          44           設置藍色背景
          45           設置紫色背景
          46           設置青色背景
          47           設置白色(灰色)背景
          49           設置缺省黑色背景
    其他有趣的代碼還有:
          \033[2J      清除屏幕
          \033[0q      關閉所有的鍵盤指示燈
          \033[1q      設置"滾動鎖定"指示燈(Scroll Lock)
          \033[2q      設置"數值鎖定"指示燈(Num Lock)
          \033[3q      設置"大寫鎖定"指示燈(Caps Lock)
          \033[15:40H   把關閉移動到第15行,40列
          \007        發蜂鳴生beep

一些說明:
    前景顏色各數字是對應背景顏色減去10。
    結束非常規字符序列的"m"要緊跟前面的數字,不能有空格
    命令也可以寫成echo -e "^[[44;37;5m ME \033[0m COOL",其中的"^["是先按Ctrl-V,然后再按<ESC>鍵產生的

    輸出帶有顏色的文本,echo命令必須帶有選項"-e"。

這種方法只能暫時改變echo命令輸出的文本的樣式,logout后就恢復為默認。修改.bashrc文件,可以修改默認的顯示樣式。
:在.bashrc文件的最后面追加一行:echo -e '\033[47;30m'。

#-----------------------------------------------------------
# 建議:在shell文件的最前面,將echo命令的輸出樣式定義成變量。
    # define echo terminal style
    # color: 0~6 --> black, red, green, yellow, blue, purple, cyan, grey
    export ECHO_STYLE_00="\033[0m"        # default style(black background, white foreground)
    export ECHO_STYLE_01="\033[41;33;1m"  # red background, yellow foregound bold
    echo -e "${ECHO_STYLE_01}echo command terminal style example${ECHO_STYLE_00}"

############################################################
# echo命令的其他用法
1).光標跳到第60列,然后顯示一個OK。
    格式:echo -en '\033[60G' && echo OK
    說明:"\033["是終端轉義字符開始,60G是命令。
————————————————
版權聲明:本文為CSDN博主「QC」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qualcent/article/details/7106483

 

echo -ne <ctrl+v><ESC>[?25l&<60;&<60;&<60; 隱藏光標
echo -ne <ctrl+v><ESC>[?25h&<60; 顯示光標
l,h為字母, <ctrl+v>是按下ctrl鍵不放,然后按下V, <ESC>就是按一下鍵盤上的ESC鍵
在終端回顯的情況如下:
echo -ne&<60; ^[[?25l
echo -ne&<60; ^[[?25h
其中^[是用<ctrl+v><ESC>得到的,直接輸入^[無效

超級終端里的光標經常意外消失,這是個好辦法讓它恢復.

更簡單一點的方法
echo -e "\033[?25l"  隱藏光標
echo -e "\033[?25h" 顯示光標
其實\033(八進制,相當於10進制的27)就是<ctrl+v><ESC>所輸入字符的值.

echo -ne "\33[32m" 可以將字符的顯示顏色改為綠色 
echo -ne "\33[3;1H" 可以將光標移到第3行第1列處 
具體的摘抄一些如下: 
\33[0m 關閉所有屬性 
\33[1m 設置高亮度 
\33[4m 下划線 
\33[5m 閃爍 
\33[7m 反顯 
\33[8m 消隱 
\33[30m -- \33[37m 設置前景色 
\33[40m -- \33[47m 設置背景色 
\33[nA 光標上移n行 
\33[nB 光標下移n行 
\33[nC 光標右移n行 
\33[nD 光標左移n行 
\33[y;xH設置光標位置 
\33[2J 清屏 
\33[K 清除從光標到行尾的內容 
\33[s 保存光標位置 
\33[u 恢復光標位置 
\33[?25l 隱藏光標 
\33[?25h 顯示光標

字背景顏色范圍:40----49 
40:黑 
41:深紅 
42:綠 
43:黃色 
44:藍色 
45:紫色 
46:深綠 
47:白色 
字顏色:30-----------39 
30:黑 
31:紅 
32:綠 
33:黃 
34:藍色 
35:紫色 
36:深綠 
37:白色 

不要忘了-e   和"",否則是起不了作用的.

二、使用linux c的printf函數實現

printf("\033[?25h");  //顯示光標

printf("\033[?25l");  //隱藏光標

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM