2017-03-20 2 views
0

Ich habe ein Problem mit dem Sammeln von Daten durch xxd von Stdin. Hier ist der Befehl:setzen Sie einige hex Zeichenfolge zu xxd mit Stdin erzeugt keine Ausgabe

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

Wenn ich diesen Befehl in der Shell ausführen, dann wartet es auf Eingabe. Ich habe versucht, '0006303030304e430006303030304e43' zu setzen und dann die Eingabetaste zu drücken, aber es sieht so aus, als hätte xxd meine Eingabe nicht erhalten oder die Ausgabe nicht an dd weitergeleitet.

Zum Beispiel funktioniert das perfekt:

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

Was ich erreichen möchte: Ich möchte einige Hex-String setzen, wandelt es in Binär- und dann in 16-Bit-Chunk-Datei zu speichern. Das Skript muss ständig auf stdin hören.

Funktioniert xxd auf diese Weise? Ich habe versucht, \ n oder \ r \ n am Ende der hexadezimalen Zeichenfolge zu setzen, aber immer noch war nichts am xxd-Ausgang.

Danke für jede Hilfe.

Mit freundlichen Grüßen!

Antwort

0

xxd wartet noch auf Eingabe; Geben Sie Control-D ein, nachdem Sie die Eingabetaste gedrückt haben, um die Eingabedatei zu schließen.

+0

Das Problem ist, dass ich den Befehl nicht beenden möchte. Ich möchte es so machen stdin (hex Zeichenfolge) -> xxd (binär) -> dd -> myfile.bin -> stdin ... und so weiter. – user2311165

0

Nur --xxd -r -p Befehl anhängen, so dass es wie folgt aussieht:

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

ich dies in der Manpage für xxd gefunden; Genauer gesagt, der Abschnitt OPTIONS:

Wenn infile als - Zeichen angegeben wird, dann wird eine Eingabe von Standardeingabe gemacht.

Verwandte Themen