Far*_*olK 3 command-line standard input
我有一个程序需要一些不可打印的字符,如0x0F ( ctrl+ o) 作为输入来执行程序的预期部分。
0 000 00 NUL � Null char
1 001 01 SOH  Start of Heading
2 002 02 STX  Start of Text
3 003 03 ETX  End of Text
4 004 04 EOT  End of
Run Code Online (Sandbox Code Playgroud)
它正在命令行上执行,知道如何将不可打印的字符作为程序的输入插入命令行吗?
该printf
实用程序支持八进制字符转义:
- 除了 XBD 文件格式表示法 (
'\\'
,'\a'
,'\b'
,'\f'
,'\n'
,'\r'
,'\t'
,'\v'
) 中显示的转义序列之外"\ddd"
,ddd是一位、两位或三位八进制数,应写入为具有指定数值的字节八进制数。
printf
至少 Bash 和 Zsh 中的内置函数也支持十六进制转义序列\xHH
和$'...'
引号,它们类似地插入转义序列。
因此,要在某些命令的命令行参数中使用此类字符,请执行以下操作:
$ somecmd "arg_with_$(printf '\017')_xoff"
Run Code Online (Sandbox Code Playgroud)
或者如果您需要多次使用该字符,则将其放入变量中
$ xoff=$(printf '\017')
$ somecmd "many${xoff}odd${xoff}chars"
Run Code Online (Sandbox Code Playgroud)
或者,将两个字节0x0f 0x11
(017 021
八进制)通过管道传输到注释中提到的命令:
$ printf "\x0f\x11" | somecmd...
$ printf "\017\021" | somecmd...
Run Code Online (Sandbox Code Playgroud)