linux 如何使用echo写入非ASCII字符?

mpbci0fu  于 5个月前  发布在  Linux
关注(0)|答案(6)|浏览(71)

如何使用echo写非ASCII字符?是否有转义序列,如\012或类似的东西?
我想将ASCII字符附加到文件中,使用:

echo ?? >> file

字符串

f45qwnt8

f45qwnt81#

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

printf '\012'

字符串

9gm1akwq

9gm1akwq2#

使用

echo -e "\012"

字符串

nqwrtyyt

nqwrtyyt3#

在我的终端上,

printf '\012' >>output.txt

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

printf '\xA' >>output.txt


命令

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


然而,不能正常工作。只有十六进制似乎可以与echo -e一起工作。-n从echo中删除默认的额外换行符。

kninwzqo

kninwzqo4#

您可以将ANSI-C报价与echo配合使用:

echo $'\012' # octal

echo $'\x0a' # hex

字符串

t8e9dugd

t8e9dugd5#

我采用非ASCII表示Unicode,至少在我的例子中是这样,但是printf "\x##"对于我的2字节解决方案来说是不够的,所以我使用了这个稍微不同的语法:

> printf "\u25ba"
►

字符串

xoefb8l8

xoefb8l86#

简介

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上的脚本

相关问题