web-dev-qa-db-ja.com

文字列のbase64に "\ n"が含まれているのはなぜですか?

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

出力はNw==の前に戻ります。 Linuxでbase64を生成する正しい方法は何ですか?

terminal screenshot

72
Tiina

試してください:

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

man base64 から:

-w--wrap=COLS
COLS文字の後にエンコードされた行を折り返します(デフォルトは76)。行の折り返しを無効にするには0を使用してください。

133

これは-wへのbase64オプションをサポートするシステムに関するKamilの答えより劣っています、しかしそれが利用できない場合(例えばAlpine Linux、Arch Linux initramfsフックなど)、あなたは手動でbase64の出力を処理することができます:

base64 some_file.txt | tr -d \\n

これがブルートフォースアプローチです。プログラムを協調させるのではなく、私はtrを使ってstdoutのすべての改行を無差別に削除します。

51
Score_Under