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

问题描述 投票:0回答:6

如何使用 echo 写入非 ASCII 字符?是否有转义序列,例如

\012
或类似的东西?

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

echo ?? >> file
linux bash ascii echo non-ascii-characters
6个回答
39
投票

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

printf '\012'

33
投票

使用

echo -e "\012"

14
投票

在我的终端上,

printf '\012' >>output.txt

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

printf '\xA' >>output.txt

命令

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

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


9
投票

您可以使用 ANSI-C 引用

echo
:

echo $'\012' # octal

echo $'\x0a' # hex

2
投票

我将非 ASCII 表示为 Unicode,至少在我的情况下是这样,但是

printf "\x##"
对于我的 2 字节解决方案来说还不够,所以我使用了这种稍微不同的语法:

> printf "\u25ba"
►

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)

链接

  • Ascii 列表:
    man ascii
  • Unicode 列表:StackOverflow 上的脚本
© www.soinside.com 2019 - 2024. All rights reserved.