![Alternativa ao xxd que retorna bytes?](https://rvso.com/image/1345297/Alternativa%20ao%20xxd%20que%20retorna%20bytes%3F.png)
Estou no Mac OS X 10.8.2, executando uma cópia compilada da xxd
v1.10 (Código fonte), bem como a cópia xxd
que vem pré-instalada no OS X.
Estou tentando gerar uma assinatura SHA1 codificada em Base64 por meio de uma cadeia de comandos canalizados no Terminal.
Normalmente eu faria algo como o seguinte:
$ echo "foo" | openssl sha1 | xxd -p -r | base64 - > foo_sha1_signature
O arquivo foo_sha1_signature
normalmente contém um hash SHA1 codificado em Base64 da string foo
.
O problema é que xxd -p -r
não retorna nenhum dado, então o arquivo foo_sha1_signature
fica vazio.
Se eu dividir os comandos para ver a saída de xxd -r
, obtenho um resultado (conforme impresso abaixo):
$ echo "foo" | openssl sha1 | xxd -p | xxd -r
7b36c94bcdf32bee$
Mas se eu canalizar a saída padrão para um arquivo, o arquivo estará vazio:
$ 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
Se eu tentar canalizar o erro padrão, a saída padrão mostrará os bytes e o arquivo ainda estará vazio:
$ echo "foo" | openssl sha1 | xxd -p | xxd -r 2> foo_sha1_bytes
7b36c94bcdf32bee$
Por fim, se eu fizer tudo isso no Linux, xxd
funciona conforme o esperado (obtenho a assinatura em um arquivo). Portanto, isso parece ser um bug no xxd
funcionamento do OS X 10.8.2.
Existe uma alternativa de código aberto que xxd
funciona no Mac OS X e envia uma representação de bytes da entrada padrão para a saída padrão?
Responder1
Você deveria tentar
xxd -b <file>
Ele exibirá o arquivo em modo binário.