gpt4 book ai didi

bash - 如何在 Bash 脚本中为 conky 创建特殊字符?

转载 作者:行者123 更新时间:2023-11-29 08:54:37 25 4
gpt4 key购买 nike

我想知道如何在我的 bash 脚本中创建一个摄氏字符,以便我可以更正“CPU temp: 50 C”行中的输出?如果我的字体支持,这种特殊字符的转义序列是什么?

还在摸不着头脑……

更准确地说,我需要它在 conky 中使用我使用这一行:awk '{printf($3"C")}'。我应该如何更正它以输出摄氏度?因为如果我直接插入 ℃ 字符,conky 会把它搞砸。

最佳答案

您的脚本输出到终端的所有非控制字节序列都会根据终端的设置进行解释以显示。如果您将其配置为将传入数据解释为 utf-8那么你需要在 bash 脚本中做的就是输出 utf-8 要求的摄氏字符。 .

正确设置终端取决于您使用的应用程序。它很可能已经处于 utf-8 模式。

为了显示您想要的字符,您需要查找其 Unicode 代码点并将其编码为 utf-8,或者您可以在已经显示字符的 utf-8 序列的地方查找它。摄氏字符描述here例如。

Celsius utf-8 序列是 0xE2 0x84 0x83,因此您可以使用 $'string' 构造在您的 shell 中显示它,因为它接受 \xhh 转义:

$ echo $'\xe2\x84\x83'

或者用-e回显:

$ echo -e '\xe2\x84\x83'

此外,您可以将其分配给一个变量

$ CEL=$'\xe2\x84\x83'
$ echo $CEL

如果您希望将 ℃ 显示为两个单独的字符:度数字符和 C 字母,那么您可以使用 this character这个命令:

$ echo $'\xc2\xb0'C
°C

如果您使用的 shell 不支持 $'string' 结构,您还可以使用 perl 或 python 等实用程序:

$ python -c 'print "\xe2\x84\x83"'

$ perl -e 'print "\xe2\x84\x83\n"'

在 GNU awk 中,您可以使用标准 C 语言转义符,包括 \xhh,例如:

$ awk 'BEGIN { print "\xe2\x84\x83"; }' 

$ awk 'BEGIN { print "\xc2\xb0\C"; }'
°C

请注意,需要一个额外的反斜杠来终止十六进制数字(没有它,转义序列会消耗所有十六进制数字,包括字母 C,请参阅 GNU awk user's guide)。

awk 中更便携的解决方案是使用八进制序列。由于16进制的0xC2是8进制的302,16进制的0xB0是8进制的260,所以可以这样:

$ awk 'BEGIN { print "\302\260C"; }'
°C

同样,

$ awk 'BEGIN { print "\342\204\203"; }'

关于bash - 如何在 Bash 脚本中为 conky 创建特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8334266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com