Alternative zu xxd, die Bytes zurückgibt?

Alternative zu xxd, die Bytes zurückgibt?

Ich verwende Mac OS X 10.8.2 und eine kompilierte Kopie von xxdv1.10 (Quellcode) sowie die Kopie davon, xxddie auf OS X vorinstalliert ist.

Ich versuche, über eine Kette von Pipe-Befehlen im Terminal eine Base64-codierte SHA1-Signatur zu generieren.

Normalerweise würde ich etwa Folgendes tun:

$ echo "foo" | openssl sha1 | xxd -p -r | base64 - > foo_sha1_signature

Die Datei foo_sha1_signatureenthält normalerweise einen Base64-codierten SHA1-Hash der Zeichenfolge foo.

Das Problem besteht darin, dass xxd -p -rkeine Daten zurückgegeben werden und die Datei daher foo_sha1_signatureleer ist.

Wenn ich die Befehle aufteile, um mir die Ausgabe anzusehen xxd -r, erhalte ich ein Ergebnis (wie unten angegeben):

$ echo "foo" | openssl sha1 | xxd -p | xxd -r
7b36c94bcdf32bee$

Wenn ich die Standardausgabe jedoch in eine Datei umleite, ist die Datei leer:

$ echo "foo" | openssl sha1 | xxd -p | xxd -r > foo_sha1_bytes
$ ls -al foo_sha1_bytes 
-rw-r--r--  1 alexpreynolds  staff  0 Jan  2 23:02 foo_sha1_bytes

Wenn ich versuche, die Standardfehlerausgabe weiterzuleiten, zeigt die Standardausgabe die Bytes an, und die Datei ist immer noch leer:

$ echo "foo" | openssl sha1 | xxd -p | xxd -r 2> foo_sha1_bytes
7b36c94bcdf32bee$

Wenn ich das alles unter Linux mache, xxdfunktioniert es schließlich wie erwartet (ich bekomme die Signatur in einer Datei). Es scheint sich also um einen Fehler bei der xxdFunktionsweise unter OS X 10.8.2 zu handeln.

Gibt es eine Open-Source-Alternative, xxddie unter Mac OS X funktioniert und eine Byte-Darstellung der Standardeingabe an die Standardausgabe sendet?

Antwort1

Du solltest es versuchen

xxd -b <file>

Die Datei wird im Binärmodus angezeigt.

verwandte Informationen