我正在尝试制作一个包含特殊字符的文件。但我不想使用双引号或单引号。
我怎样才能制作该文件?
答案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
或通配符运算符 ( *
, ?
, [...]
) 中的字符。