shell命令: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是命令。

 

############################################################

然后給幾個比較強大的腳本函數 1) cfont #by zuoyang http://hi.baidu.com/test/

cfont()

{ while (($#!=0))

do         case $1 in                

     -b)                         echo -ne " ";                 ;;                

     -t)                         echo -ne "\t";                 ;;                

     -n)     echo -ne "\n";                 ;;                

              -black)                         echo -ne "\033[30m";                 ;;                

              -red)                         echo -ne "\033[31m";                 ;;                

              -green)                         echo -ne "\033[32m";                 ;;                

              -yellow)                         echo -ne "\033[33m";                 ;;                

              -blue)                         echo -ne "\033[34m";                 ;;                

              -purple)                         echo -ne "\033[35m";                 ;;                

              -cyan)                         echo -ne "\033[36m";                 ;;                

              -white|-gray) echo -ne "\033[37m";                 ;;                

               -reset)                         echo -ne "\033[0m";                 ;;                

              -h|-help|--help)                         echo "Usage: cfont -color1 message1 -color2 message2 ...";                        

                                                             echo "eg:       cfont -red [ -blue message1 message2 -red ]";                 ;;                

               *)                 echo -ne "$1"                 ;;        

esac        

shift

done }

使用方法是 cfont -顏色 字符串...

如: cfont -cyan abc

注意使用時要換行需要加入 -n 選項。想要恢復默認的要加入 -reset選項。
2) 顏色碼表

#!/bin/bash T='gYw'

# The test text
echo

echo "        default 40m     41m     42m     43m     44m     45m     46m 47m"

## FGs 為前景(foreground)色, BG 為背景(background)色

for FGs in '    m' '   1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' '1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' ' 36m' '1;36m' ' 37m' '1;37m'        

do         FG=$(echo $FGs|tr -d ' ')        

             echo -en " $FGs \033[$FG $T "        

             for BG in 40m 41m 42m 43m 44m 45m 46m 47m;                

             do                 echo -en " \033[$FG\033[$BG $T \033[0m"        

            done        

echo

done

echo


免責聲明!

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



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