Bash脚本中的版权和英镑符号

时间:2012-07-04 20:07:26

标签: linux bash debian nano

将版权符号©和英镑符号£插入bash脚本的正确方法是什么。

我正在使用nano作为我的编辑,正在运行Debian Squeeze。

如果我从Windows复制并粘贴符号,它可以正常工作,但它似乎粘贴了nano无法显示的隐藏字符,这使得在shell脚本中编辑代码变得很困难。

所以例如我希望能够做到这一点: -

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

最好只使用(C)版权,你希望它在其他语言环境中始终可读,而不是违规的辩护。

显示看起来像

text="1.00"
text2=" ohn Doe"

在我的测试终端中。

答案 2 :(得分:1)

如果您在输入nano中的符号时遇到问题,请使用转义语法。 您可以使用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