36

如何使用 echo写入非ASCII字符?是否有转义序列,例如\012或类似的东西?

我想使用以下命令将 ASCII 字符附加到文件中:

echo ?? >> file
4

6 回答 6

36

如果您关心可移植性,您将放弃echo并使用printf(1)

printf '\012'
于 2009-03-18T13:18:36.137 回答
31

采用

echo -e "\012"
于 2009-03-18T11:29:47.503 回答
14

在我的终端上,

printf '\012' >>output.txt

适用于 ascii 字符的八进制表示和相应的十六进制:

printf '\xA' >>output.txt

命令

echo -en '\012' >>output.txt

但是,无法正常运行。只有十六进制似乎可以与 echo -e 一起使用。-n 从 echo 中删除默认的额外换行符。

于 2014-01-16T17:37:03.027 回答
4

您可以使用 ANSI-C 引用echo

echo $'\012' # octal

echo $'\x0a' # hex
于 2019-12-06T22:22:20.137 回答
2

至少在我的情况下,我将非 ASCII 表示为 Unicode,但printf "\x##"对于我的 2 字节解决方案来说还不够,所以我改用了这种略有不同的语法:

> printf "\u25ba"
►
于 2016-05-20T20:43:13.210 回答
2

简短的

echo -e 'toto\010\010ti'   # OUTPUTS: toti
echo -e '\x41'             # OUTPUTS: A
echo -e '\u03B1'           # OUTPUTS: α
echo -e '\U1F413 <= \U1F1EB\U1F1F7' # OUTPUTS  <= 

文档

man bash> /BUILTIN/ > /^ *echo/

              \0nnn  the eight-bit character whose value is the octal value nnn (zero  to
                     three octal digits)
              \xHH   the eight-bit character whose value is the hexadecimal value HH (one
                     or two hex digits)
              \uHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal
                     value HHHH (one to four hex digits)
              \UHHHHHHHH
                     the Unicode (ISO/IEC 10646) character whose value is the hexadecimal
                     value HHHHHHHH (one to eight hex digits)

关联

于 2020-10-28T14:15:46.040 回答