base64命令用法

base64命令用法#

base64将从文件或标准输入读取的数据转换为 Base64 编码格式(或进行反向转换)。Base64 编码格式使用可打印的 ASCII 字符来表示二进制数据。

Base64 编码会将数据扩展至原始大小的约 133%。Base32 编码会将数据扩展至原始大小的约 160%。该格式符合 RFC 4648 标准。

$ base64 push.sh
IyEvYmluL2Jhc2gNClRJTUVTVEFNUD0kKGRhdGUgKyVzKQ0KDQpybSAtcmYgcmVzb3VyY2VzLyBw
dWJsaWMvIC5odWdvX2J1aWxkLmxvY2sNCmdpdCBhZGQgLg0KZ2l0IGNvbW1pdCAtbSAidXBkYXRl
OiAke1RJTUVTVEFNUH0iDQpnaXQgcHVzaA0Kc2xlZXAgM3MNCmVjaG8gIkRvbmUhIENvbW1pdCR7
VElNRVNUQU1QfSINCnNsZWVwIDNzDQo=

-w cols参数设置列数,及输出多少个字符进行换行,默认为64,禁用换行设置为0即可。

$ base64 push.sh -w 120
IyEvYmluL2Jhc2gNClRJTUVTVEFNUD0kKGRhdGUgKyVzKQ0KDQpybSAtcmYgcmVzb3VyY2VzLyBwdWJsaWMvIC5odWdvX2J1aWxkLmxvY2sNCmdpdCBhZGQg
Lg0KZ2l0IGNvbW1pdCAtbSAidXBkYXRlOiAke1RJTUVTVEFNUH0iDQpnaXQgcHVzaA0Kc2xlZXAgM3MNCmVjaG8gIkRvbmUhIENvbW1pdCR7VElNRVNUQU1Q
fSINCnNsZWVwIDNzDQo=

$ base64 push.sh -w 0
IyEvYmluL2Jhc2gNClRJTUVTVEFNUD0kKGRhdGUgKyVzKQ0KDQpybSAtcmYgcmVzb3VyY2VzLyBwdWJsaWMvIC5odWdvX2J1aWxkLmxvY2sNCmdpdCBhZGQgLg0KZ2l0IGNvbW1pdCAtbSAidXBkYXRlOiAke1RJTUVTVEFNUH0iDQpnaXQgcHVzaA0Kc2xlZXAgM3MNCmVjaG8gIkRvbmUhIENvbW1pdCR7VElNRVNUQU1QfSINCnNsZWVwIDNzDQo=

--decode-d将操作模式从编码改为解码,即将输入的base64编码解码为原始数据

$ echo IyEvYmluL2Jhc2gNClRJTUVTVEFNUD0kKGRhdGUgKyVzKQ0KDQpybSAtcmYgcmVzb3VyY2VzLyBwdWJsaWMvIC5odWdvX2J1aWxkLmxvY2sNCmdpdCBhZGQgLg0KZ2l0IGNvbW1pdCAtbSAidXBkYXRlOiAke1RJTUVTVEFNUH0iDQpnaXQgcHVzaA0Kc2xlZXAgM3MNCmVjaG8gIkRvbmUhIENvbW1pdCR7VElNRVNUQU1QfSINCnNsZWVwIDNzDQo=|base64 -d
#!/bin/bash
TIMESTAMP=$(date +%s)

rm -rf resources/ public/ .hugo_build.lock
git add .
git commit -m "update: ${TIMESTAMP}"
git push
sleep 3s
echo "Done! Commit${TIMESTAMP}"
sleep 3s

-i该选项设置解码时忽略无法识别的字节,哪怕解码结果失真。

basenc命令用法

basenc命令用法#

basenc将从文件或标准输入读取的数据转换为各种常见的编码格式(或将其从这些格式还原)。编码后的形式使用可打印的 ASCII 字符来表示二进制数据。

basenc同样支持-w/--wrap-i/--ignore-garbage-d/--decode,使用方法同base64,可参考base64使用方法

命令执行方式:

basenc encoding [option]... [file]
basenc encoding --decode [option]... [file]

encoding为必选设置,代表编码方式,支持以下编码方式:

  • –base64
  • –base64url URL安全的base64编码,使用_替代+-替代/
  • –base58
  • –base32
  • –base32hex
  • –base16
  • –base2lsbf
  • –base2msbf
  • –z85 basenc编码解码示例
$ printf '\376\117\202' | basenc --base64
/k+C

$ printf '\376\117\202' | basenc --base64url
_k-C

$ printf '\376\117\202' | basenc --base32
7ZHYE===

$ printf '\376\117\202' | basenc --base32hex
VP7O4===

$ printf '\376\117\202' | basenc --base16
FE4F82

$ printf '\376\117\202' | basenc --base2lsbf
011111111111001001000001

$ printf '\376\117\202' | basenc --base2msbf
111111100100111110000010

$ printf '\376\117\202\000' | basenc --z85
@.FaC

$ printf 01010100 | basenc --base2msbf --decode
T

$ printf 01010100 | basenc --base2lsbf --decode
*

GNU核心工具

GNU核心工具#

GNU Core Utilities(GNU核心工具)包含一系列基础文件和工具,包括shell和文本操作工具。这些是GNU系统的最核心工具。

输出文件内容#

  • cat: 输出文件内容,默认输出到当前屏幕
  • tac: 倒序输出文件内容
  • nl: 输出文件内容并显示行号,等同于cat -n
  • od: 以八进制方式输出文件内容
  • base32: 32位编码解码文件
  • base64: 64位编码解码文件
  • basenc: 多种格式编码解码文件

格式化文件内容#

  • fmt:重新格式化段落文本
  • pr:将文件分页或分栏以便打印
  • fold:折行处理输入内容,使其适应指定宽度

输出文件部分内容#

  • head:输出文件的前部分
  • tail:输出文件的后部分
  • split:将文件拆分成多个部分
  • csplit:将文件拆分成按内容确定的部分

https://www.gnu.org/software/coreutils/