Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Bash脚本中为conky制作特殊角色?_Bash_Shell_Utf 8_Special Characters - Fatal编程技术网

如何在Bash脚本中为conky制作特殊角色?

如何在Bash脚本中为conky制作特殊角色?,bash,shell,utf-8,special-characters,Bash,Shell,Utf 8,Special Characters,我想知道如何在bash脚本中生成一个摄氏度字符,以便在CPU temp:50 C行中更正输出? 如果我的字体支持,这种特殊字符的转义序列是什么 还在抓我的头 更确切地说,我需要它在康基使用 我使用这行代码:awk'{printf$3c}'。我应该如何更正它,使其输出摄氏度? 因为如果我直接插入字符,conky会将其拧紧。脚本输出到终端的所有非控制字节序列都会根据终端的设置进行解释以显示。如果您将其配置为将传入的数据解释为,那么您在bash脚本中所需要做的就是按照所需输出摄氏度字符 正确设置终端取

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

还在抓我的头

更确切地说,我需要它在康基使用 我使用这行代码:awk'{printf$3c}'。我应该如何更正它,使其输出摄氏度?
因为如果我直接插入字符,conky会将其拧紧。

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

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

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

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

或使用-e进行回音:

$ echo -e '\xe2\x84\x83'
℃
此外,还可以将其分配给变量

$ CEL=$'\xe2\x84\x83'
$ echo $CEL
℃
如果希望将℃显示为两个单独的字符:度字符和C字母,则可以使用和命令:

$ 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在内的所有十六进制数字,请参阅

awk中更可移植的解决方案是使用八进制序列。由于十六进制0xC2是八进制302,十六进制0xB0是八进制260,因此可以执行以下操作:

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

$ awk 'BEGIN { print "\342\204\203"; }'
℃
您可以尝试以下方法:

echo -e "CPU temp: 50\xE2\x84\x83"

相关:

Bash现在支持Unicode转义序列,使用\u:

将打印

°

我找不到对$'string'构造的任何引用;它的确切名称是什么,或者记录在哪里?使用的唯一问题是它在终端环境中看起来非常糟糕,因为使用UNICODE时存在字体大小不兼容问题。
echo -e "\u00b0"
°