将版权符号©
和英镑符号£
插入bash脚本的正确方法是什么。
我正在使用nano
作为我的编辑,正在运行Debian Squeeze。
如果我从Windows复制并粘贴符号,它可以正常工作,但它似乎粘贴了nano
无法显示的隐藏字符,这使得在shell脚本中编辑代码变得很困难。
所以例如我希望能够做到这一点: -
text="£15.00"
text2="© John Doe"
答案 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