对文件内容进行编码并将其显示为一行

对文件内容进行编码并将其显示为一行

我正在尝试回显使用 base64 编码的密钥和证书文件的内容,以便我可以将输出复制到其他位置。

我找到了这个线程:将文件内容重定向到命令 echo?它展示了如何回显文件内容,并找到了保留换行符进行编码的方法。然而,当我添加时,| base64这会将输出分成多行,并且尝试添加第二行echo只会用空格替换换行符。

$ echo "$(cat test.key)" | base64
LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZB
QVNDQ1N3d2dna29BZ0VBQW9JQ0FRRFF4Tkh0aHZvcEp1Z0EKOHBsSUNUUU1pOGMwMzRERlR6Z1E5
ME5tcE5zN2hRczNQZ0QwU2JuSFcyVGxqTS9oM1F1QVE0Q1dqaHRiV1ZUbgpSREcveGxWRFBESVVV
MzB1UHJnK0N6dlhOUkhzQkE9PQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg==

$ echo $(echo "$(cat test.key)" | base64)
LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZB QVNDQ1N3d2dna29BZ0VBQW9JQ0FRRFF4Tkh0aHZvcEp1Z0EKOHBsSUNUUU1pOGMwMzRERlR6Z1E5 ME5tcE5zN2hRczNQZ0QwU2JuSFcyVGxqTS9oM1F1QVE0Q1dqaHRiV1ZUbgpSREcveGxWRFBESVVV MzB1UHJnK0N6dlhOUkhzQkE9PQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg==

期望的输出是:

LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRFF4Tkh0aHZvcEp1Z0EKOHBsSUNUUU1pOGMwMzRERlR6Z1E5ME5tcE5zN2hRczNQZ0QwU2JuSFcyVGxqTS9oM1F1QVE0Q1dqaHRiV1ZUbgpSREcveGxWRFBESVVVMzB1UHJnK0N6dlhOUkhzQkE9PQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg==

我怎样才能实现这个输出?

答案1

使用 base64 的 -w 选项(换行),如下所示:

... | base64 -w 0

值为 0 将禁用换行。

答案2

并非所有版本的 base64 都支持该标志 (OSX),但可以使用以下命令创建-w 0该选项的相同效果:-w 0

cat test.key | base64  

输出可用于 gitlab 变量等。

答案3

如前所述,并非所有版本的 Base64 都支持-w标志(https://www.fourmilab.ch/webtools/base64/)。

这对我行得通:

base64 -e test.key | tr -d '\n\r'

相关内容