2012-07-04 39 views
0

什麼是將版權符號©和英鎊符號£插入bash腳本的正確方法。Bash腳本中的版權和英鎊符號

我使用nano作爲我的編輯器並運行Debian Squeeze。

如果我從窗口複製並粘貼符號,它可以正常工作,但它似乎粘貼了nano無法顯示的隱藏字符,因此很難在shell腳本中編輯代碼。

因此,例如,我希望能夠做到這一點: -

text="£15.00" 
text2="© John Doe" 
+2

檢查您的語言環境和編碼設置,因爲這不是一個問題在我的機器上(完全UTF-8)。 – lynxlynxlynx

+0

@lynxlynxlynx我該怎麼做? (Linux新手) –

+1

'locale'必須在其中打印帶有utf-8的字符串。好吧,其他兼容編碼也可以,但這是最簡單的。 – lynxlynxlynx

回答

2

看來你使用的是不支持這些符號的語言環境(在過去的日子裏它也可能是一個糟糕的字體)。由於您使用的是UTF-8字符(Windows上的默認字符),因此您還需要在Linux上使用UTF-8感知環境。您可以檢查與locale命令:

$ locale 
LANG=en_US.UTF-8 
LC_CTYPE="en_US.UTF-8" 
LC_NUMERIC="en_US.UTF-8" 
LC_TIME="en_US.UTF-8" 
LC_COLLATE="en_US.UTF-8" 
LC_MONETARY="en_US.UTF-8" 
LC_MESSAGES="en_US.UTF-8" 
LC_PAPER="en_US.UTF-8" 
LC_NAME="en_US.UTF-8" 
LC_ADDRESS="en_US.UTF-8" 
LC_TELEPHONE="en_US.UTF-8" 
LC_MEASUREMENT="en_US.UTF-8" 
LC_IDENTIFICATION="en_US.UTF-8" 
LC_ALL= 

所以我的系統是好的,但你不得不默認,ASCII C語言環境設置。這些簡單的bash變量,所以你可以單獨或export他們覆蓋它們(通過設置LC_ALL)。但是,這隻會影響當前的shell,所以您需要將它作爲shell初始化的一部分,以便每次自動工作。

這通常是通過/etc配置文件腳本實現全球範圍內,但.bash_profile.bashrc將工作一樣好。在您的Debian版本的語言環境存儲在/etc/default/locale,你可以用locale -a獲取可用選項列表,例如:

$ locale -a 
C 
en_US 
en_US.iso88591 
en_US.utf8 
POSIX 
sl_SI.utf8 

選擇一個與UTF8後綴。如果您需要其他語言環境(例如日語),則可以使用localedef/locale-gen生成它們(附帶glibc或作爲單獨的軟件包)。

1

更好的只是使用(C)的版權,你希望它是在其他語言環境總是可讀的,不違反辯護。

的顯示看起來像

text="1.00" 
text2=" ohn Doe" 
在我的測試終端

+0

那麼'英鎊'呢? –

+0

如果我想賣給無法顯示英鎊符號的地點,我會說(英鎊)。 – pizza

1

如果您在納米中輸入符號時遇到問題,請使用轉義語法。 您可以使用iconv將其轉換爲對應於當前語言環境的輸出編碼:

text=$'\xa315.00' 
text2=$'\xa9 John Doe' 
iconv -f latin1 <<< $text 
iconv -f latin1 <<< $text2 

或UTF8相同:

text=$'\xc2\xa315.00' 
text2=$'\xc2\xa9 John Doe' 
iconv -f utf-8 <<< $text 
iconv -f utf-8 <<< $text2