base64 コマンド 2016/03/02
標準入力のデータをBASE64でエンコードまたはデコードして標準出力するコマンド。デフォルトではエンコードする。オプション -d
を付けるとデコードする。
$ base64 foo.dat # エンコード
$ base64 -d foo.txt # デコード
ファイル名を渡さないか -
をパラメータにすると標準入力を処理する。
エンコード済みのデータの改行位置がおかしかったりしてうまくデコードできない場合は以下のようにtr
コマンドで削除をするとよい。
$ cat src.txt | tr -d '\n' | base64 -d | dst.txt
openssl
コマンドでもBASE64をエンコード/デコードできる。
PHP、Python、PerlなどでBASE64を取り扱うには BASE64でエンコード・デコードするにはも参照。
BASE64の仕様はRFCで定められている。バイナリ3バイトをエンコードすると4バイトに膨らむので容量は約1.33倍になる。
- RFC 4648 - The Base16, Base32, and Base64 Data Encodings
http://tools.ietf.org/html/rfc4648
インストール 2016/03/17
Coreutilsというパッケージに入っているので、CentOSにもUbuntuにも始めから入っている。
オプション 2016/11/14
-d
- デコードする。デフォルトではエンコード
--decode
- デコードする。デフォルトではエンコード
--help
- ヘルプ表示
--version
- バージョン表示
--
というパラメータを渡すとそれ以降のパラメータをオプションではなくファイル名とみなしてくれるので、
-
で始まるファイル名を扱いたい場合に使うとよい。
(-
という名前のファイル名を渡すと標準入力の意味になってしまうので、
-
という名前のファイル名を扱う方法は不明。--
を使ってもダメ)
PerlのワンライナーでBASE64するには 2014/09/27
$ echo -n "あいうえおかきくけこ" | perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)'
44GC44GE44GG44GI44GK44GL44GN44GP44GR44GT
$ echo "44GC44GE44GG44GI44GK44GL44GN44GP44GR44GT" | perl -MMIME::Base64 -0777 -ne 'print decode_base64($_)'
あいうえおかきくけこ
nkfでBAE64するには 2014/10/04
nkf
コマンドでもBASE64のエンコード・デコードができる。
$ echo -n "あいうえおかきくけこ" | nkf -MB
44GC44GE44GG44GI44GK44GL44GN44GP44GR44GT
$ echo "44GC44GE44GG44GI44GK44GL44GN44GP44GR44GT" | nkf -WmB
あいうえおかきくけこ
よくわからないがデコードのときは文字コード(W
)を指定する必要があるみたい。