Unix: 连字符(-)被替换为<96>

3

最近,我在Windows机器上使用Notepad++编写了一个shell脚本。但是当我将此脚本转移到Linux机器时,我发现包含 -(破折号或减号)符号的命令被替换为<96>。例如,原始命令如下 -

unzip -d $dir_to_unzip file.zip

但是当转移到Linux服务器时,它变成了以下这样-
unzip <96>d $dir_to_unzip file.zip

我不是Unix专家,无法找到导致这种变化的原因以及如何进行更正。非常感谢任何帮助。


4
0x96 是 Windows-1252 字符集中表示 EN DASH 字符的代码。原始命令没有您想要的连字符,而是一个 EN DASH 字符的表示。这两个字符在 Windows 上看起来非常相似,但 Linux 不使用 Windows-1252 字符集,因此 0x96 是一些不可打印的控制字符,会被呈现为 <96>。(EN DASH 的 Unicode 代码是 0x2013。) - undefined
2个回答

1
Notepad++有一组菜单用于指定编码。使用默认设置(UTF-8 without BOM)快速检查简单的shell脚本时,不会得到非ASCII文本。可能是因为您将示例从某个网页复制到了Notepad++中(这些网页经常被错误编码)。
但是,为确保获得所需结果,您可以使用Notepad++菜单覆盖编码并重新保存文件。除了UTF-8之外,其他可能有用的选择包括(通过“西欧”级联菜单...)ISO-8859-1。
您应避免在Notepad++中使用“ANSI”,因为它是一个含糊不清的术语,包括导致问题的字符重新定义。有关此问题的进一步讨论,请参见:

0

你要么得弄清楚如何在记事本中输入一个真正的(ASCII)减号,要么就得避免使用你的Windows机器来编辑用于Linux或Unix主机的ASCII文本文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接