0

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

我正在使用nano我的编辑器并运行 Debian Squeeze。

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

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

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

3 回答 3

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或作为单独的包)。

于 2012-07-04T21:16:27.683 回答
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
于 2012-07-04T21:36:55.210 回答
1

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

显示器看起来像

text="1.00"
text2=" ohn Doe"

在我的测试终端中。

于 2012-07-04T20:35:08.290 回答