Mac OS Xでファイルやstdinをbase64エンコードするターミナルコマンドはありますか?
280 Josh 2010-03-16
openssl
がこれを代行してくれますし、OS Xにはデフォルトですべてインストールされています
$ openssl base64 -in <infile> -out <outfile>
-in
オプションがない場合は、標準入力から読み込みます
295 Steve Folly 2010-03-17
Opensslはもっと簡潔に使うことができます
echo -n 'input' | openssl base64
[ echo -n -> を使用するか、改行文字を含むエンコーディングを行います。]
or
openssl base64 <ENTER> [type input] <CTRL+D>
136 Glen 2010-04-21
Try using:
base64 -i <in-file> -o <outfile>
OS Xではデフォルトで利用できるようになっているはずです
64 Derreck Dean 2015-02-27
私のOS X 10.9.4では、base64
コマンドはデフォルトで利用可能です
ターミナルで文字列をエンコードしてデコードするにはbase64 <<< string
とbase64 -D <<< string
を、ファイルをエンコードしてデコードするにはbase64 -in file
とbase64 -D -in file
を使うことができます
43 WKPlus 2016-03-17
macOSではいつも使っています
echo -n "STRING" | base64
-n は、行末に改行文字を入れないようにするためです
28 patrickS 2017-08-01
OS XにはPythonがデフォルトで提供されているので、以下のように利用します
$ echo FOO | python -m base64
Rk9PCg==
$ echo Rk9PCg== | python -m base64 -d
FOO
または、Brew (brew install coreutils
) を経由して coreutils
をインストールすると、base64
コマンドが提供されます
$ echo FOO | base64
Rk9PCg==
$ echo Rk9PCg== | base64 -d
FOO
10 kenorb 2015-05-25
速度の面では、openssl、Perl、uuencodeの順に使います。移植性の観点からは、uuencodeの後にPerl、そしてopensslを使うと思います(ストックプラットフォームのような他のUNIXで可能な限り多くのコードを再利用したいのであれば)。ただし、すべてのUNIXが-mスイッチをサポートしているわけではないので注意が必要です(AIXはサポートしていますが、HP/UXはサポートしていますが、Solarisはサポートしていません)
$ time perl -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}' \
> out.jpg 1>filename.b64
real 0m0.025s
$ time uuencode -m -o filename.b64 out.jpg filename_when_uudecoded.txt
real 0m0.051s
$ time openssl base64 -in out.jpg -out filename.b64
real 0m0.017s
RFC1521 で指定された base64 ごとに file_in.txt を uuencode し、それを filename.b64 (デコード時のデフォルトのファイル名として filename_when_uudecoded.txt を使用) に書き出します
uuencode -m -o filename.b64 file_in.txt filename_when_uudecoded.txt
STDIN example:
cat file_in.txt | uuencode -m -o filename.b64 filename_when_uudecoded.txt
5 phiz 2012-09-05
クリップボードに直接パイプすることもできます(少なくともmacでは)
openssl base64 -in [filename] | pbcopy
5 Steve 2016-07-12
Python
Pythonは最近ではすべてのmacにプリインストールされています
ターミナルで python
(または ipython) を実行します
ファイルをエンコードします
base64data = open('myfile.jpg','rb').read().encode('base64')
open('myfile.txt','w').write(base64data)
ファイルをデコードします
data = open('myfile.txt').read().decode('base64')
open('myfile.jpg','wb').write(data)
もちろん、どちらの操作もオネリ化することはできますが、こちらの方が読みやすいです
OpenSSL
## encode to base64 (on OSX use `-output`)
openssl base64 -in myfile.jpg -output myfile.jpg.b64
## encode to base64 (on Linux use `-out`)
openssl base64 -in myfile.jpg -out myfile.jpg.b64
## decode from base64 (on OSX `-output` should be used)
openssl base64 -d -in myfile.jpg.b64 -output myfile.jpg
## decode from base64 (on Linux `-out` should be used)
openssl base64 -d -in myfile.jpg.b64 -out myfile.jpg
-out
/-output... filename
を省略すると標準出力に出力されます
base64
OSXとUbuntuの両方に存在する別のootbユーティリティ
## encode to base64
base64 < myfile.jpg > myfile.jpg.b64
## decode from base64 (OSX) (note the uppercase 'D')
base64 -D < myfile.jpg.b64 > myfile.jpg
## decode from base64 (Linux) (note the lowercase 'd')
base64 -d < myfile.jpg.b64 > myfile.jpg
3 ccpizza 2014-06-17
uuencode -m [-o output_file] [file] name
ここで name は、エンコードされたヘッダに表示する名前です
Example:
cat docbook-xsl.css | uuencode -m docbook-xsl.css
or
uuencode -m -o docbook-xsl.css.b64 docbook-xsl.css docbook-xsl.css
2 user214207 2013-04-04
なぜかecho -n <data> | openssl base64
では、私のbase64データの途中に改行が追加されてしまいました。これは、私のbase64データが非常に長かったからだと思います
エンコードにecho -n <data> | base64
を使用し、デコードにecho -n <base64-ed data> | base64 -D
を使用しても問題なく動作しました
2 Heath Borders 2014-07-27
上記のSteve Follyの回答に加えて、標準入力モードで暗号化する場合、余分な改行を通さないようにするには、CTRL+Dを2回押して、改行を追加せずに入力を終了させてください。出力は同じ行の直後に表示されます
For example:
$ openssl base64 [Enter]
input<CTRL+D><CTRL+D>aW5wdXQ=
$
あるいは、printf
を使用することもできます
$ printf 'input' | openssl base64
aW5wdXQ=
$
2 solimant 2016-07-27
Perl と MIME::Base64 があります
perl -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}'
プリインストールされています。コマンドラインで別々のファイルを指定することができます(または標準入力でデータを供給することもできます);各ファイルは別々にエンコードされています。することもできます
perl -i.txt -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}' file1
これは、file1 を file1.txt にバックアップし、Base-64 エンコードされた出力を元のファイルの上に書き込みます
1 Jonathan Leffler 2010-03-17
NodeJSの簡易版です
node -e "process.stdout.write(new Buffer(process.argv[1]).toString('base64'))" "Hello world!"
1 mauvm 2015-03-27
再コード化はあなたのためにトリックを行う必要があります
recode ../b64 < file.txt > file.b64
再コードは MacPorts を経由して OS X で利用できます
1 heavyd 2010-03-17
フォントファイルをbase64エンコードしている場合は、このようにします
base64 my-webfont.ttf > my-webfont.b64.ttf.txt
Mac(10.10)でいつも使っています
注:ラインブレイクはありません
1 Obinwanne Hill 2016-04-18
Cross-platform solutions
ファイルをbase64でエンコードするためのクロスプラットフォームのシェルコマンドのリストをコンパイルしました。以下のコマンドは入力ファイル (例では deploy.key
という名前) を受け取り、改行なしで base64 に変換します。base64 の出力は stdout 経由でターミナルに出力されます
# For systems with openssl
openssl base64 -A -in=deploy.key
# For systems with Python (2 or 3) installed
python -c "import base64; print(base64.standard_b64encode(open('deploy.key', 'rb').read()).decode())"
# For Windows or Linux systems that have the GNU coreutils base64 command
base64 --wrap=1000000 deploy.key
# For macOS systems
base64 --break=1000000 deploy.key
出力をファイルにリダイレクトするには、> base64-encoded.txt
(任意のファイル名を使用)を追加します
これらのコマンドは、プルリクエストの一部としてプロトタイプ化されました。ここでは、クロスプラットフォームのシェルコマンドで SSH の秘密鍵を base64 エンコードして改行を削除するようにしたいと考えていました
1 Daniel Himmelstein 2019-07-08