2017-03-20 7 views
0

stdinからxxdでデータを収集する際に問題があります。stdinを使用してxxdに16進数文字列を入力しても出力が生成されません

xxd -r -p | dd of=/home/user/test/hex.bin obs=16 

シェルでこのコマンドを実行すると、入力を待機します。私は '0006303030304e430006303030304e43'を入力してEnterを押してみましたが、xxdが自分の入力を得なかったか、またはddへのパイプ出力をしなかったようです。

は例えば、これは完璧に動作します:

私が達成したい何
echo '0006303030304e430006303030304e43' | xxd -r -p | dd of=/home/user/test/hex.bin obs=16 

: 私は、いくつかの16進文字列を入れてバイナリに変換して、16ビットのチャンクでファイルに保存したいです。スクリプトはstdinを常に聴かなければなりません。

xxdはこのように動作しますか?私は16進文字列の最後に\ nまたは\ r \ nを入れようとしましたが、xxd出力には何もありませんでした。

ありがとうございました。

よろしくお願いいたします。

答えて

0

xxdはまだ入力待ちです。 Enterキーを押して入力ファイルを閉じるとControl-Dと入力します。

+0

問題は、私はコマンドを終了したくないということです。このようにしたいのです stdin(16進文字列) - > xxd(バイナリ) - > dd - > myfile.bin - > stdin ...などです。 – user2311165

0

ただ、それはこのようになりますよう、-xxd -r -pにコマンドを追加します。私はxxdのmanページでこれを見つけた

echo '0006303030304e430006303030304e43' | xxd -r -p - | dd of=/home/user/test/hex.bin obs=16 

。より具体的に、OPTIONSセクション:INFILE-文字として指定されている場合は

、その後、入力は標準入力から取られています。

関連する問題