如何在不使用引号的情况下创建带有特殊字符的文件

如何在不使用引号的情况下创建带有特殊字符的文件

我正在尝试制作一个包含特殊字符的文件。但我不想使用双引号或单引号。

我怎样才能制作该文件?

答案1

反斜杠在类似 Bourne 的 shell 中提供了另一种引用形式,因此您可以执行以下操作:

printf %s \$\ \; > file

例如,让文件包含这 3 个($、空格和;)特殊字符。您还可以使用八进制序列来printf指定确切的字节值:

printf \\1\\2 > file

创建一个包含字节 1 和 2 的文件。一些printf实现还支持十六进制序列:

printf \\xff\\x80 > file

或者用 Unicode 代码点指定字符:

printf \\u20ac > file

以欧元符号为例。在大多数实现中,字符将以语言环境的字符集输出。一个例外是,无论语言环境的字符集如何,它printf的内置函数都以 UTF-8 格式输出。ksh93

另请参阅此处文档了解输入文本的另一种方法。这对于多行文本很方便:

cat << \EOF > file
some text with $ \ | # *
and anything you want
EOF

创建文件名字对于此类字符,请使用:

echo text > \$\ \;

或者:

echo text > $(printf \\1\\2)

等等。请注意,由于$(...)受 split+glob 的影响,您需要通过以下方式禁用它:

IFS=; set -o noglob

对于否则位于$IFS或通配符运算符 ( *, ?, [...]) 中的字符。

相关内容