echo 詳細解釋

echo 命令詳解


# 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章