355 votes

Comment encoder base64 via la ligne de commande ?

Existe-t-il une commande de terminal sous Mac OS X qui codera en base64 un fichier ou stdin ?

7 votes

Sachez que, bien que la syntaxe de codage base64 soit cohérente d'un système d'exploitation à l'autre, la syntaxe de décodage base64 est soit base64 -d o base64 -D en fonction de votre système d'exploitation. OSX utilise -D .

1 votes

@ChrisJohnson Si utilisé de concert avec openssl le drapeau pour le décodage est -d sur OS X (10.10 Yosemite).

370voto

Rejeev Divakaran Points 1162

openssl peut faire cela pour vous, et tout cela est installé par défaut avec OS X ; pas besoin d'installer darwinports.

$ openssl base64 -in <infile> -out <outfile>

Sans le -in option lit à partir de stdin

103 votes

Utilice openssl base64 < path/to/file.png | tr -d '\n' | pbcopy o cat path/to/file.png | openssl base64 | tr -d '\n' | pbcopy pour ne pas écrire dans un fichier et juste copier la sortie encodée en base64 dans le presse-papiers sans les sauts de ligne.

6 votes

Et utilisez un -d à décoder.

10 votes

En mac, pour coder en base64 une chaîne de caractères : openssl base64 -e <<< ram et à décoder : openssl base64 -d <<< cmFtCg==

178voto

idontkn0w123 Points 11

Openssl peut être utilisé de manière plus succincte :

echo -n 'input' | openssl base64

[ echo -n -> doit être utilisé, ou l'encodage sera fait en incluant le caractère de nouvelle ligne ].

o

openssl base64 <ENTER> [type input] <CTRL+D>

16 votes

La solution "echo" ajoute un caractère LF (line feed) à la fin de la chaîne d'entrée, cependant. Meilleure utilisation : echo -n 'input'.

13 votes

Et même un peu plus succinct openssl base64 <<< input

5 votes

Ou utilisez simplement base64 sans openssl . Dans tous les cas, je dois appuyer deux fois sur Ctrl+D. Et attention, @Garret : dans Bash, avec ou sans openssl , openssl base64 <<< superuser y openssl base64 <<< "superuser" par erreur rendement c3VwZXJ1c2VyCg== car la "chaîne ici" comprend alors encore un saut de ligne ! ( Apparemment non seulement en Bash, mais aussi en zsh, ksh et yash. Voir hexdump <<< superuser . Le résultat en Base64 devrait être c3VwZXJ1c2Vy .)

79voto

Derreck Dean Points 899

Essayez d'utiliser :

base64 -i <in-file> -o <outfile>

Il devrait être disponible par défaut sur OS X.

2 votes

Ajouter --decode pour inverser le processus de base64 à normal.

2 votes

C'est mieux pour l'encodage pour SVG car cela crée une seule ligne. C'est plus propre que la sortie de openssl base64 . Merci !

0 votes

Je ne voulais pas utiliser de fichiers, donc vous pouvez faire echo -n "something" | base64

67voto

patrickS Points 1217

Sur macOS, j'utilise toujours :

echo -n "STRING" | base64

-n est pour éviter un caractère de nouvelle ligne à la fin de la ligne.

0 votes

Cela fonctionne également sous Windows si vous utilisez Cmder.

0 votes

Cela fonctionne pour moi sous Mac

60voto

WKPlus Points 701

base64 est disponible par défaut sur mon OS X 10.9.4.

Vous pouvez utiliser base64 <<< string y base64 -D <<< string pour coder et décoder une chaîne de caractères dans le terminal, ou base64 -in file y base64 -D -in file pour coder et décoder un fichier.

0 votes

Avez-vous un exemple ? Je reçois Invalid characer in input stream lors de l'utilisation de <<< ...J'ai essayé avec " , ' et rien autour de la corde.

0 votes

@Jonas Dans quel Shell êtes-vous ? Vous pouvez l'utiliser dans bash et zsh.

0 votes

Ah, tant pis, ça marche !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X