2017-05-03 24 views
1

が、私はエコー使用して、コマンドに非印字文字を入力する方法を知っている非印字可能な文字を入力します。は、対話的

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

しかし、どのようなsome-cmdコマンドは対話型で、以降の入力を求めることができますか?私はバックスラッシュでエスケープされたシーケンスとして印刷できない文字を入力し続けたいと考えています。私はエスケープ値を入力し、それらが解釈されます。すなわち

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

したがって、たとえば、次のPythonスクリプト与えられた:

#!/usr/bin/env python3 

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

私はそれを次のように対話したいと思いますプログラムに入る前に

+0

キーボード設定を変更しますか?ユニコード文字を入力しますか?キーボード入力で任意の値を送信したいのですか? – anishsane

+0

完全に任意のバイト – scrambles

答えて

0

わからない私はあなたの正確な要件を理解したが、多分あなたはこれが欲しい:

$ 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'、
  • 0×41 == 'A' 、
  • 0x61 == 'a'、
  • 0xa == '\ n'などです。
+0

ありがとうございました!残念ながら、私の使用事例ではうまくいきません。私は質問 – scrambles

+0

を明らかにしました。この 'io.py'はあなたのための解決策ですか?はいの場合は、それを回答として追加し、2日後に自分の回答を受け入れることができます。そうでない場合は、私たちに知らせてください。何が必要ですか? – anishsane