Por que o base64 de uma string contém “\ n”?

59
$ echo -n "apfjxkic-omyuobwd339805ak:60a06cd2ddfad610b9490d359d605407" | base64
YXBmanhraWMtb215dW9id2QzMzk4MDVhazo2MGEwNmNkMmRkZmFkNjEwYjk0OTBkMzU5ZDYwNTQw
Nw==

A saída tem um retorno antes de Nw== . Qual é a maneira correta de gerar base64 no Linux?

    
por Tiina 03.07.2017 / 07:06

2 respostas

116

Tente:

echo -n "apfjxkic-omyuobwd339805ak:60a06cd2ddfad610b9490d359d605407" | base64 -w 0

Em man base64 :

-w, --wrap=COLS
Wrap encoded lines after COLS character (default 76). Use 0 to disable line wrapping.

    
por 03.07.2017 / 07:23
46

Isso é inferior à resposta de Kamil em sistemas que suportam a opção -w para base64 , mas para casos em que isso não está disponível (por exemplo, Alpine Linux, Arch Linux initramfs hook, etc.), você pode processar manualmente a saída de base64:

base64 some_file.txt | tr -d \n

Esta é a abordagem de força bruta; em vez de fazer com que o programa coopere, estou usando tr para remover indiscriminadamente todas as novas linhas no stdout.

    
por 03.07.2017 / 19:09

Tags