繁体   English   中英

以交互方式输入不可打印的字符

[英]Interactively enter non-printable characters

我知道如何使用echo输入不可打印的字符到命令中:

echo -e '\xde\xad\xbe\xef' | some-cmd

但是如果some-cmd命令是交互式的并且可能稍后要求输入呢? 我希望能够继续输入不可打印的字符作为反斜杠转义序列。

因此,例如,给定以下Python脚本:

#!/usr/bin/env python3

while True:
    s = input("> ")
    print(s, len(s))

我想通过以下方式与之互动:

$ ./io.py 
> \x41
A 1
> \x42
B 1
> \xde
Þ 1
> \xad
\xad 1

即我输入转义值并在被送入程序之前得到解释。

不确定我理解你的确切要求,但也许你想要这个:

$ awk --non-decimal-data '{for(i=1;i<=NF;i++)printf "%c", (0+("0x"$i))}' | some-cmd

然后,您可以在提示符处输入由空格/制表符/换行符分隔的十六进制值。
样品用法:

$ awk --non-decimal-data '{for(i=1;i<=NF;i++)printf "%c", (0+("0x"$i))}' | sponge | sed '1s/^/Output:\n/'
40
30 31 41
a 61 62 a

Output:
@01A
ab
  • 0x40 =='@',
  • 0x30 =='0',
  • 0x31 =='1',
  • 0x41 =='A',
  • 0x61 =='a',
  • 0xa =='\\ n'等等。
while read -r line; do echo -e $line; done | some_cmd

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM