2013-07-05 55 views
3

在我的劇本我幾乎總是使用轉義序列顏色:UNIX回聲默認參數

R='\e[0m' 
g='\e[0;32m' 
echo -e "${g}green text${R}" 

我想打-e默認行爲,所以我可以忽略它。怎麼樣?

回答

5

你可以設置一個alias

alias echo='echo -e' 

隨着其激活,則可以省略-e

echo "${g}green text${R}" 
+1

幾乎要說了;) – mtk

+0

你可以用'-E'覆蓋這個默認值,以防你需要禁用轉義序列。 – dmedvinsky

+0

這不會在腳本內工作,除非您設置'shop -s expand_aliases',但在此旁邊是一個工作示例,謝謝 – bartekbrak

1

通常你會使用別名是什麼,以及它工作在很多炮彈。但bash別名在非交互式shell中未展開,並且您希望它用於非交互式腳本。

援引man bash

幾乎每目的,別名是通過外殼的功能所取代

所以,你可以使用的功能,但我不同的調用它,以避免錯誤或無限遞歸:

myecho() 
{ 
    echo -e "[email protected]" 
} 

如果你是它,你可以做的更好:

green_echo() 
{ 
    echo -e "${g}[email protected]${R}" 
} 

或者甚至更好,您可以將顏色作爲第一個參數,將其移出[email protected]並使用開關選擇正確的轉義序列。沒有限制,請記住shell是一種完整的編程語言。

+0

您可以直接在腳本中執行別名... –

+0

@Maxime:我剛剛測試了一個腳本'#!/ bin/bash','alias foo = echo','foo bar',它表示'line 3:foo:command not found'。我猜你可以使用shell選項'expand_aliases',但這可能是一個壞主意...... – rodrigo

+1

對我來說,它適用於/ bin/sh,並且它不適用於/ bin/bash。嘗試改變你的生日? –