$ echo -n "apfjxkic-omyuobwd339805ak:60a06cd2ddfad610b9490d359d605407" | base64
YXBmanhraWMtb215dW9id2QzMzk4MDVhazo2MGEwNmNkMmRkZmFkNjEwYjk0OTBkMzU5ZDYwNTQw
Nw==
Wyjście ma wcześniej zwrot Nw==
. Jaki jest prawidłowy sposób generowania base64 w systemie Linux?
Odpowiedzi:
Próbować:
Od
man base64
:źródło
tr
. Dobrze wiedzieć, że istnieje „właściwy sposób”.base64
koduje dowolne dane binarne jako tekst. Narzędzia, które oczekują tekstu, zwykle czytają jedną linię na raz i mogą nie radzić sobie dobrze z bardzo długimi liniami . Jeśli-w 0
byłby domyślny, domyślnie byłby tylko jeden wiersz tekstu; niezwykle długa linia, jeśli dane wejściowe były duże. Lepiej jest domyślnie zawijać. Myślę, że76
został wybrany, ponieważ jest to niewiele mniej niż80
jest to faktyczny standard dla terminali .base64
polecenia, musiałem przekazać-w 0
(a kiedy zapomniałem, dziwne rzeczy mogą się zdarzyć ...), więc to domyślne zachowanie było dla mnie bardzo dziwne.Jest to gorsze niż odpowiedź Kamila w systemach obsługujących tę
-w
opcjębase64
, ale w przypadkach, gdy nie jest to możliwe (np. Alpine Linux, Arch Linuxinitramfs
hook itp.), Możesz ręcznie przetworzyć dane wyjściowe base64:To podejście oparte na brutalnej sile; zamiast zmuszać program do współpracy, używam
tr
do bezładnego usuwania każdej nowej linii na standardowym wyjściu.źródło