在GCP计算中,Linux意外地做了cat文件,而不是filebeat.yaml。
在那之后,我的bashrc包含下面的字符,如果我键入'~‘bash正在打印'ü’,需要帮助解决这个问题。
if Ä -f ü/.bash_aliases Å; then
. ü/.bash_aliases
fi发布于 2021-05-17 08:47:41
这看起来像是您的终端被意外地配置为遗留的ISO-646-SE或一个变体。您的文件可能很好;只是您的终端根据1980年代的方案来映射显示字符。
快速十六进制转储应该验证文件中的字符实际上是正确的。这是一个你应该看到的例子。
bash$ echo '[\]' | xxd
00000000: 5b5c 5d0a [\].即使字符显示为and,如果您看到十六进制代码5B、5C和5D,则它们是正确的。(如果您没有xxd,请尝试hexdump或od -t x1。)
很可能
bash$ tput reset可以将终端设置为正常设置。也许stty sane也能工作(但根据我的经验,不太可能)。否则,试着登出并返回。
回到ASCII是镇上唯一的游戏,但美国(或实际上任何)硬件被出口到字符库不足的地方,本地供应商将替换终端中的ROM芯片,以重新映射一些稍不常见的字符代码,以显示为丢失的本地符号。随着时间的推移,这变得标准化了;ISO-646标准被更新以记录这些本地重写。(链接的维基百科页面有许多包含详细信息的表。)
最终,8位字符集成为规范,然后大多数地区切换到拉丁语1或其他一些合适的字符集,不再需要这种黑客。然而,即使在1990年代初,这种情况仍然相当普遍。在21世纪初,Unicode开始接管,所以现在这似乎是一种荒谬的安排。
我猜您在cat上遇到的文件包含一些控制字符,这些字符指示您的终端切换到这个遗留字符集。这并不是完全不常见的(虽然通常发生在我身上,它切换到一些“图形”字符集,其中一些字符显示方框绘制字符或数学符号)。
https://stackoverflow.com/questions/67565894
复制相似问题