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
*

fmt命令用法

fmt命令用法#

fmt负责填充并连接文本行,生成长度不超过指定字符数(默认为 75)的输出行。

$ cat push.sh
#!/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

$ fmt push.sh
 rm -rf resources/ public/
 git commit -m "update: ${TIMESTAMP}"
 sleep 3sne! Commit${TIMESTAMP}"

fmt常用选项如下:

-c --crown-margin 悬挂缩进(crown margin)模式:保留段落中前两行的缩进,并将后续每一行的左边界与第二行的左边界对齐。

-t --tagged-paragraph 标记段落(tagged paragraph)模式:类似于悬挂缩进模式,但如果段落第一行的缩进与第二行相同,则将第一行视为单行段落。

-s --split-only 仅拆分行。不合并短行以形成长行。这可以防止代码示例及其他此类“已格式化”文本被不适当地合并。

-u --uniform-spacing 统一间距。将单词间的间距缩减为一个空格,句子间的间距缩减为两个空格。

-width -w width --width=width 将输出行填充至 width 个字符的宽度(默认值为 75,或者若提供了 goal 参数,则为 goal 加上 10)。

fold命令用法

fold命令用法#

fold 将文件内容自动断开长行。默认情况下,fold 会折断超过 80 列的行。输出会根据需要分成多行。

-w number设置具体列数,默认为80

$ fold -w 30 push.sh
#!/bin/bash
TIMESTAMP=$(date +%s)

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

-b按字节计数而不是列计数,这样制表符、退格符和回车符每个都算作占用一列,就像其他字符一样。

-c按字符数而不是列数来计数,这意味着包含宽于一列字符的行在视觉上会更长。

-s在单词边界换行:在最大行长度之前最后一个空格处换行。如果该行没有这样的空格,则像平常一样在最大行长度处换行。

pr命令用法

pr命令用法#

pr输出时会进行分页,并可选择以多栏格式显示;也可选择合并所有文件,将它们并行打印,每列显示一个文件。

默认情况下,每页都会打印一个包含 5 行内容的页眉:两行空白行;一行包含日期、文件名和页码信息的内容;以及另外两行空白行。此外,还会打印一个包含 5 个空白行的页脚。默认的页面长度(page_length)为 66 行,因此实际的文本行数为 56 行。页眉中的文本行格式为“日期 字符串 页码”,其中字符串两侧会插入空格,使该行填满整个页面宽度(page_width)。此处,“日期”即日期信息(详情请参阅 -D--date-format 选项),“字符串”是居中显示的页眉文本,“页码”则标识当前页号。LC_MESSAGES 区域设置类别会影响“页码”部分的拼写形式;在默认的 C 区域设置下,其格式为“Page number”(其中 number 为十进制页码)。

$ cat hugo.toml
baseURL = 'https://nodeb.net/'
title = 'NodeB'
theme = 'nodeb'
paginate = 5

# 语言配置 - 使用新方式避免弃用警告
defaultContentLanguage = 'zh-cn'

[languages]
  [languages.zh-cn]
    label = "中文"
    locale = 'zh-cn'           # 替代 languageCode
    direction = 'ltr'          # 从左到右
    weight = 1
    title = 'NodeB'

[params]
    mainSections = ["post"]
    description = "个人博客,记录技术、生活与思考。"
    author = "jqx"
    featuredImage = true

# 菜单
[[menu.main]]
    name = "首页"
    url = "/"
    weight = 1

[[menu.main]]
    name = "标签"
    url = "/tags/"
    weight = 2

# Markdown 配置
[markup]
    [markup.goldmark]
        [markup.goldmark.renderer]
            unsafe = true

[minify]
  minifyOutput = true

# Taxonomies
[taxonomies]
    tag = "tags"
    category = "categories"
    series = "series"

# 输出格式
[outputs]
    home = ["HTML", "RSS"]
    section = ["HTML", "RSS"]
    taxonomy = ["HTML", "RSS"]
    term = ["HTML", "RSS"]

# 站点信息
[author]
    name = "black8"

# SEO 配置
[params.seo]
    enableRobots = true

# 分页配置
[pagination]
    pagerSize = 5              # 等同于 paginate

$ pr hugo.toml


2026-08-19 17:23                    hugo.toml                     Page 1


baseURL = 'https://nodeb.net/'
title = 'NodeB'
theme = 'nodeb'
paginate = 5

# 语言配置 - 使用新方式避免弃用警告
defaultContentLanguage = 'zh-cn'

[languages]
  [languages.zh-cn]
    label = "中文"
    locale = 'zh-cn'           # 替代 languageCode
    direction = 'ltr'          # 从左到右
    weight = 1
    title = 'NodeB'

[params]
    mainSections = ["post"]
    description = "个人博客,记录技术、生活与思考。"
    author = "jqx"
    featuredImage = true

# 菜单
[[menu.main]]
    name = "首页"
    url = "/"
    weight = 1

[[menu.main]]
    name = "标签"
    url = "/tags/"
    weight = 2

# Markdown 配置
[markup]
    [markup.goldmark]
        [markup.goldmark.renderer]
            unsafe = true

[minify]
  minifyOutput = true

# Taxonomies
[taxonomies]
    tag = "tags"
    category = "categories"
    series = "series"

# 输出格式
[outputs]
    home = ["HTML", "RSS"]
    section = ["HTML", "RSS"]
    taxonomy = ["HTML", "RSS"]
    term = ["HTML", "RSS"]

# 站点信息







2026-08-19 17:23                    hugo.toml                     Page 2


[author]
    name = "black8"

# SEO 配置
[params.seo]
    enableRobots = true

# 分页配置
[pagination]
    pagerSize = 5              # 等同于 paginate

-d输出时显示双倍行距