2011-11-30 63 views
5

我想知道如何在我的bash腳本中製作一個攝氏字符,所以我可以在「CPU temp:50 C」行中更正輸出結果? 這種特殊字符的轉義序列是什麼,提供我的字體支持它們?如何在Bash腳本中爲conky創建特殊字符?

仍然抓我的頭......

更準確地說我需要它在Conky的 使用我用這個行:awk '{printf的($ 3" C「)}'。我應該如何糾正它,以便輸出攝氏度? 原因如果我直接插入℃字符,conky螺絲它。

回答

8

根據終端的設置,腳本輸出到終端的所有非控制字節序列都被解釋爲顯示。如果您將其配置爲將傳入數據解釋爲utf-8,則您在bash腳本中的所有操作都將按照utf-8的要求輸出攝氏字符。

設置您的終端權利取決於您使用的應用程序。它很可能已經處於utf-8模式。

爲了顯示您想要的字符,您需要查找其Unicode編碼點並使用utf-8編碼,或者您可以在某處查看字符的utf-8序列。例如,攝氏字符描述爲here

攝氏度UTF-8序列是0xE2的0x84 0×83,所以你可以在使用$'string'構建你的外殼,因爲它接受\xhh逃生顯示它:

$ echo $'\xe2\x84\x83' 
℃ 

或-e回聲:

$ echo -e '\xe2\x84\x83' 
℃ 

另外,還可以將其分配給一個變量

$ CEL=$'\xe2\x84\x83' 
$ echo $CEL 
℃ 

如果你想顯示℃作爲兩個獨立的人物:人物等級和字母C,那麼你可以使用this character這個命令:

$ echo $'\xc2\xb0'C 
°C 

如果您正在使用的不支持$'string'構建物的外殼,你也可以使用像Perl或Python工具:

$ python -c 'print "\xe2\x84\x83"' 
℃ 
$ perl -e 'print "\xe2\x84\x83\n"' 
℃ 

在GNU awk你可以使用標準的C語言逃脫,包括\xhh,例如:

$ awk 'BEGIN { print "\xe2\x84\x83"; }' 
℃ 
$ awk 'BEGIN { print "\xc2\xb0\C"; }' 
°C 

請注意,需要額外的反斜槓來終止十六進制數字(沒有它,轉義序列消耗包括字母C的所有十六進制數字,請參閱GNU awk user's guide)。

awk更便攜的解決方案是使用八進制序列。由於十六進制爲0xC2是八進制302和十六進制0XB0是八進制的260,你可以做到以下幾點:

$ awk 'BEGIN { print "\302\260C"; }' 
°C 

同樣,

$ awk 'BEGIN { print "\342\204\203"; }' 
℃ 
+0

感謝你的幫助 – mountpeaks

+0

我不能夠找到的'$'string''構建任何參考;它的確切名稱是什麼,或者它在哪裏記錄? – davide

+0

'man bash'然後搜索'$'' –

0

沒有對°的轉義序列,據我知道的。

相關問題