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

fly*_*ire 30 linux bash ascii echo non-ascii-characters

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

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

echo ?? >> file
Run Code Online (Sandbox Code Playgroud)

Nie*_*jou 30

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

printf '\012'
Run Code Online (Sandbox Code Playgroud)

  • ...或者,如果从不受信任的来源获取转义序列,'printf'%b''\ 012'`,以兑现此类序列,但不尊重其他格式字符串内容. (4认同)

var*_*tec 26

使用

echo -e "\012"
Run Code Online (Sandbox Code Playgroud)

  • 这需要完全不符合POSIX的功能(不仅仅是一个扩展,但*规范主动禁止*,它不允许除-n`之外的任何标志),并且即使在POSIX模式下也不会受到尊重如果设置了`xpg_echo`标志. (4认同)

mar*_*aft 13

在我的终端上,

printf '\012' >>output.txt
Run Code Online (Sandbox Code Playgroud)

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

printf '\xA' >>output.txt
Run Code Online (Sandbox Code Playgroud)

命令

echo -en '\012' >>output.txt
Run Code Online (Sandbox Code Playgroud)

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

  • _My_问题实际上是关于如何将十六进制打印到终端 - 通过谷歌找到这个,这很好地回答了我的问题.它也回答了提问者的问题.它应该得到更多的积分. (2认同)

wis*_*cky 9

您可以使用 ANSI-C 引用echo

echo $'\012' # octal

echo $'\x0a' # hex
Run Code Online (Sandbox Code Playgroud)