![¿Alternativa a xxd que devuelve bytes?](https://rvso.com/image/1345297/%C2%BFAlternativa%20a%20xxd%20que%20devuelve%20bytes%3F.png)
Estoy en Mac OS X 10.8.2 y ejecuto una copia compilada de xxd
v1.10 (código fuente) así como la copia xxd
que viene preinstalada en OS X.
Estoy intentando generar una firma SHA1 codificada en Base64 a través de una cadena de comandos canalizados en la Terminal.
Normalmente haría algo como lo siguiente:
$ echo "foo" | openssl sha1 | xxd -p -r | base64 - > foo_sha1_signature
El archivo foo_sha1_signature
normalmente contiene un hash SHA1 codificado en Base64 de la cadena foo
.
El problema es que xxd -p -r
no devuelve ningún dato, por lo que el archivo foo_sha1_signature
está vacío.
Si divido los comandos para ver el resultado de xxd -r
, obtengo un resultado (como se imprime a continuación):
$ echo "foo" | openssl sha1 | xxd -p | xxd -r
7b36c94bcdf32bee$
Pero si canalizo la salida estándar a un archivo, el archivo está vacío:
$ 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
Si intento canalizar el error estándar, la salida estándar muestra los bytes y el archivo aún está vacío:
$ echo "foo" | openssl sha1 | xxd -p | xxd -r 2> foo_sha1_bytes
7b36c94bcdf32bee$
Finalmente, si hago todo esto en Linux, xxd
funciona como se esperaba (obtengo la firma en un archivo). Entonces esto parece ser un error en el xxd
funcionamiento en OS X 10.8.2.
¿Existe una alternativa de código abierto que xxd
funcione en Mac OS X y envíe una representación en bytes de la entrada estándar a la salida estándar?
Respuesta1
Deberías intentarlo
xxd -b <file>
Mostrará el archivo en modo binario.