如何使用echo编写非ASCII字符?

时间:2009-03-18 11:22:59

标签: linux bash ascii echo non-ascii-characters

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

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

echo ?? >> file

6 个答案:

答案 0 :(得分:29)

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

printf '\012'

答案 1 :(得分:25)

使用

echo -e "\012"

答案 2 :(得分:12)

在我的终端上,

printf '\012' >>output.txt

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

printf '\xA' >>output.txt

命令

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

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

答案 3 :(得分:1)

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

> printf "\u25ba"
►

答案 4 :(得分:0)

您可以在echo中使用ansi-c引用:

echo $'\012' # octal

echo $'\x0a' # hex

答案 5 :(得分:0)

简报

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)

链接

  • Ascii列表:man ascii
  • Unicode list:StackOverflow上的脚本