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
*

cat命令用法

cat命令用法#

显示文件内容

$ 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

附带显示行号

$ cat -n push.sh
     1  #!/bin/bash
     2  TIMESTAMP=$(date +%s)
     3  rm -rf resources/ public/ .hugo_build.lock
     4  git add .
     5  git commit -m "update: ${TIMESTAMP}"
     6  git push
     7  sleep 3s
     8  echo "Done! Commit${TIMESTAMP}"
     9  sleep 3s

显示非打印字符,比如换行、TAB等

$ cat push.sh -v
#!/bin/bash^M
TIMESTAMP=$(date +%s)^M
^M
rm -rf resources/ public/ .hugo_build.lock^M
git add .^M
git commit -m "update: ${TIMESTAMP}"^M
git push^M
sleep 3s^M
echo "Done! Commit${TIMESTAMP}"^M
sleep 3s^M

cat不带任何选项,意思将标准输入(显示器)输出到标准输出(显示器),如下:

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

head命令用法

head命令用法#

head打印文件的第一部分(默认为10行);如果没有给出文件,或当给定为 - 的文件时,它会从标准输入读取。

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

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

[languages]
  [languages.zh-cn]

-c [-]num 打印num字节的内容,num为数字,如果前面加-则打印文件最后除了num字节的所有内容。

num可以加以下单位

‘b’  =>            512 ("blocks")
‘KB’ =>           1000 (KiloBytes)
‘K’  =>           1024 (KibiBytes)
‘MB’ =>      1000*1000 (MegaBytes)
‘M’  =>      1024*1024 (MebiBytes)
‘GB’ => 1000*1000*1000 (GigaBytes)
‘G’  => 1024*1024*1024 (GibiBytes)
$ head -c 60 hugo.toml
baseURL = 'https://nodeb.net/'
title = 'NodeB'
theme = 'no

$ head -c -1k hugo.toml
baseURL = 'https://nodeb.net/'
title = 'NodeB'
theme = 'nodeb'
paginate = 5

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

[languages]
  [languages.zh-cn]
    label = "中文"
    locale = 'z

-n [-]num 输出num行内容,如果前面加了-则标识输出文件末尾num行以外的内容。

nl命令用法

nl命令用法#

nl命令将文件输出时附带显示所有行号或部分行号,默认使用效果等同于cat -n

$ nl push.sh
     1  rm -rf resources/ public/ .hugo_build.lock
     2  git add .
     3  git commit -m "update"
     4  git push
     5  sleep 3s
     6  echo "Done!"
     7  sleep 3s

-n format选项用来设置编号样式,有以下三种

  • rn 右对齐,nl默认
  • ln 左对齐
  • rz 右对齐,0填充
$ nl -n ln push.sh
1       rm -rf resources/ public/ .hugo_build.lock
2
3
4       git add .
5       git commit -m "update"
6       git push
7       sleep 3s
8       echo "Done!"
9       sleep 3s

$ nl -n rn push.sh
     1  rm -rf resources/ public/ .hugo_build.lock
     2
     3
     4  git add .
     5  git commit -m "update"
     6  git push
     7  sleep 3s
     8  echo "Done!"
     9  sleep 3s

$ nl -n rz push.sh
000001  rm -rf resources/ public/ .hugo_build.lock
000002
000003
000004  git add .
000005  git commit -m "update"
000006  git push
000007  sleep 3s
000008  echo "Done!"
000009  sleep 3s

-s string选项用来设置编号和文本内容之间的分隔符,默认为TAB

od命令用法

od命令用法#

od用来以八进制或其他进制输出文件

$ od push.sh
0000000 066562 026440 063162 071040 071545 072557 061562 071545
0000020 020057 072560 066142 061551 020057 064056 063565 057557
0000040 072542 066151 027144 067554 065543 005015 005015 005015
0000060 064547 020164 062141 020144 006456 063412 072151 061440
0000100 066557 064555 020164 066455 021040 070165 060544 062564
0000120 006442 063412 072151 070040 071565 006550 071412 062554
0000140 070145 031440 006563 062412 064143 020157 042042 067157
0000160 020545 006442 071412 062554 070145 031440 006563 000012
0000177

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输出时显示双倍行距