回答:
openssl
これはあなたに代わって行うことができ、デフォルトですべてOS Xとともにインストールされます。darwinportsをインストールする必要はありません。
$ openssl base64 -in <infile> -out <outfile>
-in
オプションなしでstdinから読み取ります
openssl base64 < path/to/file.png | tr -d '\n' | pbcopy
またはcat path/to/file.png | openssl base64 | tr -d '\n' | pbcopy
を使用して、ファイルへの書き込みをスキップし、base64でエンコードされた出力を改行せずにクリップボードにコピーします。
-d
フラグを使用してデコードします。
openssl base64 -e <<< ram
およびデコードするには:openssl base64 -d <<< cmFtCg==
openssl base64 [-e] -A
が必要ない場合は、@ mathiasを使用します。+デコード時の@kennyは、入力した改行文字が最大76文字ごとにない場合(前述の改行なしの場合を含む)、必要な場合、-d -A
またはエラーメッセージなしでデータが失われたり破損したりします(ただし、保留中のバグレポートがありますが、結果が修正される場合があります)。
openssl base64 -e <<< ram
実際には末尾の改行を含めて4バイトをエンコードします。をご覧くださいhexdump <<< ram
。
Opensslはより簡潔に使用できます。
echo -n 'input' | openssl base64
[echo -n->を使用する必要があります。そうしないと、改行文字を含むエンコードが行われます]
または
openssl base64 <ENTER> [type input] <CTRL+D>
openssl base64 <<< input
base64
なしで使用しopenssl
ます。いずれにしても、Ctrl + Dを2回押す必要があります。そして、@Garretを注意してください:の有無にかかわらず、バッシュでopenssl
、openssl base64 <<< superuser
かつopenssl base64 <<< "superuser"
誤って降伏c3VwZXJ1c2VyCg==
「ここに文字列」として、その後、まだ改行が含まれています!(どうやら Bashだけでなく、zsh、ksh、yashでも見られhexdump <<< superuser
ます。Base64の結果はc3VwZXJ1c2Vy
。になるはずです。)
echo -n
改行が不要な場合に推奨されます。それは確かに知っておくべきことです。
printf
代わりに使用できますecho -n
base64
OS X 10.9.4ではコマンドがデフォルトで使用可能です。
base64 <<< string
およびbase64 -D <<< string
を使用して、端末の文字列をエンコードおよびデコードしたりbase64 -in file
、およびbase64 -D -in file
を使用してファイルをエンコードおよびデコードしたりできます。
Invalid characer in input stream
使用すると<<<
... ...で試しましたが"
、'
文字列の周りには何もありません
速度の面では、opensslの後にperl、uuencodeの順に使用します。移植性の観点からは、uuencodeに続けてPerl、opensslを使用します(可能な限り、ストックプラットフォームのような他の多くのUNIXでコードを再利用する場合)。ただし、すべてのUNIXバリアントが-mスイッチをサポートしているわけではありません(iirc 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
-mスイッチを使用して、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の例:
cat file_in.txt | uuencode -m -o filename.b64 filename_when_uudecoded.txt
現在、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)
もちろん、両方の操作をワンライナーに変換することもできますが、この方が読みやすくなります。
## 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
を省略すると、stdoutに出力されます。
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
uuencode -m [-o output_file] [file] name
ここで名前がエンコードされたヘッダに表示される名前です。
例:
cat docbook-xsl.css | uuencode -m docbook-xsl.css
または
uuencode -m -o docbook-xsl.css.b64 docbook-xsl.css docbook-xsl.css
uuencode
エンコーディングではないbase64
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でエンコードされた出力が元のファイルに上書きされます。
ファイルを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エンコードして改行を削除する必要がありました。
base64 -d
またはbase64 -D
依存していることに注意してください。OSXはを使用し-D
ます。