2010年6月2日 星期三

[Linux] 你不知道的 echo

靠腰~~~
是我自己不知道的echo....  T__T

感覺有個小BUG死在這個小細節....  而且還不是我弄的

code 裡面用system call 的echo 跟 console 下面手打的反應竟然不同....

Orz... 用男人問了一下echo 才知道 囧>
通常echo就是拿來回呼你打入的字串,或者是把字串傳入某個目的檔
如: echo "bejo" > bejo.txt

(題外話: 還搞不清楚 " " 符號 跟 ' ' 在echo 使用上有差別嗎?)

echo command 也是有參數的

-e: 允許用跳脫符號 ( \ )
-n: 結束不要自動換行(預設會)
-E: 不允許用跳脫符號(預設)


看起來沒啥問題就出在一些tty dev用echo 餵參數的時候會卡在換行,特殊符號等等

所以應該要
echo -ne "bejo is \"8787\"\n" > /dev/ttyXXX
要加上參數...  嗚~~真痛O__Q

紀錄幾個跳脫常用的

\n 換行
\a 發出逼逼聲
\b 往前刪除一個字( backspace)
\r 往前整行刪掉


特別的是
\0NNN NNN是十進位 可以echo 出 ascii 上的字元
例如:
echo -e "\0100" 印出 @

\xHH HH 是16進位
echo -e "\x40" 效果跟上面的一樣 印出@

詳細對照可以
man ascii 查詢

------------------------
echo 也可以改變console顏色
分為前景跟背景

echo -e "\E[31;42mBEJO\n"

m後面就是跟著你想顯示的文字內容
前景是紅 31
背景是綠 42
數字對調沒差,因為定義不重疊

我用烏幫兔玩一下然後...console 變的很噁心,可以用
echo -ne \E[0m
加在字尾也可
echo -e "\E[31;42mBEJO\E[0m"
復原

下面是網路查到對應表:
-------------------------------
    前  背
黑 30 40
紅 31 41
綠 32 42
黃 33 43
藍 34 44
青 36 46
白 37 47

聽說不是每個終端機都一樣,阿災~