拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ZeroTermux 内置命令手册深度解析:bzip2 压缩与解压实战指南

ZeroTermux 内置命令手册深度解析:bzip2 压缩与解压实战指南
  • 移动开发
  • 开发工具

【免费下载链接】ZeroTermux

项目地址:https://gitcode.com/GitHub_Trending/ze/ZeroTermux
点击查看免费下载

本指南以 ZeroTermux 项目内置的命令参考文档 bzip2.md 为核心,系统讲解.bz2格式压缩包创建与管理的完整用法,涵盖语法、全部选项、参数约定与八组实战示例,并联动同目录下的 bunzip2、bzcat 文档与源码中的数据加载机制,帮助你在 Android 终端环境中熟练完成 bzip2 格式的压缩、解压、完整性校验与流式输出操作。

bzip2 命令与 ZeroTermux 命令文档体系

ZeroTermux 将常用 Linux 命令的离线参考文档打包在应用资源目录 app/src/main/assets/cmd 下,bzip2是其中完整收录的条目之一,与bunzip2、bzcat、bzip2recover、gzip、gunzip等压缩类命令文档组成一套可离线查阅的命令手册。

除纯文档外,项目还通过ZeroRunCommandBean(见 ZeroRunCommandBean.java)抽象“资源名称 + 运行命令”的执行模型,其中assetsName字段指向 assets 中的脚本资源,runCommand字段承载实际要执行的命令串(典型案例如 LinuxCommandData.kt 中通过unzip ... && chmod 777 ... && ./install安装工具链)。这意味着在 ZeroTermux 中,你可以随时在终端里直接调用bzip2完成压缩任务,也可以按文档示例组合管道命令参与脚本编排。

命令概述:bzip2 能做什么

bzip2 命令用于创建和管理(包括解压缩)“.bz2”格式的压缩包。Linux 下的压缩打包方法有很多种,而 bzip2 是其中压缩率表现突出的一种,尤其适合文本类、配置文件、日志等重复度较高的数据。其对应的解压命令bunzip2实质是bzip2的符号链接(软链接),因此压缩与解压都可以通过bzip2一个命令完成。

语法

bzip2(选项)(参数)

选项

选项说明
-c或--stdout将压缩与解压缩的结果送到标准输出
-d或--decompress执行解压缩
-f或--forcebzip2 在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件;若要覆盖,请使用此参数
-h或--help在线帮助
-k或--keepbzip2 在压缩或解压缩后,会删除原始文件;若要保留原始文件,请使用此参数
-s或--small降低程序执行时内存的使用量
-t或--test测试.bz2压缩文件的完整性
-v或--verbose压缩或解压缩文件时,显示详细的信息
-z或--compress强制执行压缩
-V或--version显示版本信息
--repetitive-best若文件中有重复出现的资料时,可利用此参数提高压缩效果
--repetitive-fast若文件中有重复出现的资料时,可利用此参数加快执行效果

参数

文件:指定要压缩的文件。

实战实例详解

以下实例完整复现 bzip2.md 的用法,并补充每条命令的行为细节,方便直接复制到 ZeroTermux 终端验证。

1. 压缩指定文件 filename

bzip2 filename 或 bzip2 -z filename

行为细节:

  • 压缩时不会输出任何提示,默认将原来的文件filename删除,替换成filename.bz2;
  • 如果以前已有filename.bz2,则不会替换并提示错误——想要强制替换请指定-f选项,例如bzip2 -f filename;
  • 如果filename是目录,同样提示错误且不做任何操作;
  • 如果filename已经是压过的、带 bz2 后缀的文件,会提示不再压缩;若没有 bz2 后缀,则会再次压缩。

2. 解压指定的文件 filename.bz2

bzip2 -d filename.bz2 或 bunzip2 filename.bz2

行为细节:

  • 解压时没有标准输出,默认将原来的文件filename.bz2替换成filename;
  • 如果以前已有filename,则不会替换并提示错误——想要强制替换请指定-f选项,例如bzip2 -df filename.bz2。

3. 压缩解压时将结果也输出

$ bzip2 -v filename

输入之后,输出如下:

filename: 0.119:1, 67.200 bits/byte, -740.00% saved, 5 in, 42 out.

-v选项会打印压缩比、每字节位数、节省百分比以及输入/输出字节数等统计信息,便于评估压缩效果。解压时同理:bzip2 -dv filename.bz2同样会输出这些统计。

4. 模拟解压(实际并不解压)

bzip2 -tv filename.bz2

输入之后,输出如下:

filename.bz2: ok

-t指定进行模拟解压,不实际生成结果文件,作用类似检查文件完整性——即便目录下已有filename也不会产生错误输出,因为它根本不会真正解压文件。为了在屏幕上输出校验结果,这里加上了-v选项;如果是真的解压bzip2 -dv filename.bz2,则输出会把"ok"替换为"done"。

5. 压缩解压时保留原始文件

bzip2 -k filename

加上-k选项会保存原始文件,否则原始文件会被结果文件替代。解压时同理:bzip2 -dk filename.bz2。

6. 解压到标准输出

bzip2 -dc filename.bz2

输入之后,输出如下:

hahahhaahahha

-c指定解压结果输出到标准输出,输出的是文件filename的内容,且不会删除filename.bz2。这一用法适合与管道配合,例如bzip2 -dc data.bz2 | grep keyword,无需先落地解压文件即可直接处理内容。

7. 压缩到标准输出(注意终端限制)

bzip2 -c filename

此时会得到如下报错:

bzip2: I won't write compressed data to a terminal. bzip2: For help, type: `bzip2 --help'.

-c指定压缩到标准输出且不删除原有文件;但压缩后的二进制数据无法直接输出到终端屏幕,bzip2 会主动拒绝这一操作。若确实需要压缩结果走标准输出,应重定向到文件或管道,例如bzip2 -c filename > filename.bz2。

8. 将-开头的名称视为文件

bzip2 -- -myfilename

--之后的参数一律被当作文件名处理,主要是为了防止以-开头的文件名被误解析为选项而产生歧义。

配套命令:bunzip2 与 bzcat

ZeroTermux 命令手册中与 bzip2 配套的两条命令可直接衔接使用:

bunzip2:解压.bz2压缩包

bunzip2.md 记载:bunzip2命令用于解压缩由 bzip2 指令创建的 “.bz2” 压缩包,对文件进行压缩与解压缩,此命令类似于gzip/gunzip命令,只能对文件进行压缩;对于目录只能压缩目录下的所有文件,压缩完成后在目录下生成以.bz2为后缀的压缩包。由于bunzip2是bzip2的符号链接,压缩解压都可以通过bzip2实现。

其语法为bunzip2(选项)(参数),参数为需要解压缩的.bz2压缩包。选项包括:

  • -f或--force:解压缩时若输出的文件与现有文件同名,预设不会覆盖现有文件;
  • -k或--keep:解压缩后预设会删除原来的压缩文件,若要保留压缩文件请使用此参数;
  • -s或--small:降低程序执行时内存的使用量;
  • -v或--verbose:解压缩文件时显示详细信息;
  • -l、--license、-V或--version:显示版本信息。

典型示例(将/opt目录下三个文件以最高压缩率压缩、保留原文件并显示详细过程):

bzip2 -9vk /opt/etc.zip /opt/var.zip /opt/backup.zip

压缩完毕后,/opt下会生成相应的etc.zip.bz2、var.zip.bz2和backup.zip.bz2文件。这里-9表示最高压缩级别,-v输出过程信息,-k保留原文件,三个参数合并使用。

bzcat:只查看不解压

bzcat.md 记载:bzcat命令解压缩指定的.bz2文件,并显示解压缩后的文件内容,保留原压缩文件且不生成解压缩后的文件,语法为bzcat(参数)。

配套实例(先将/tmp/man.config以 bzip2 格式压缩):

bzip2 -z man.config

此时man.config会变成man.config.bz2;再读取压缩文件内容:

bzcat man.config.bz2

屏幕上会直接显示man.config.bz2解压缩之后的文件内容,无需先生成临时明文文件。

常见问题与注意事项

  • 同名文件保护是默认行为:无论是压缩还是解压,只要目标文件已存在,bzip2 默认拒绝覆盖并报错,必须显式加-f才会强制覆盖。
  • 删除原文件是默认行为:不指定-k时,压缩/解压完成后原始文件会被结果文件替代,需谨慎确认;批量处理重要数据前建议先加-k演练。
  • 目录无法直接压缩:bzip2 面向单个文件,对目录直接操作会报错;需要先打包(如tar)再压缩,这是 Linux 下“先归档、后压缩”的常见组合思路。
  • 已压缩文件不重复压缩:带.bz2后缀的文件不会被二次压缩,避免压缩率无收益反而浪费算力。
  • 终端内禁止输出二进制压缩流:bzip2 -c filename直接输出到终端会被拒绝,需配合重定向或管道使用。
  • 测试与真实解压的输出区别:-t校验通过输出ok,真实解压完成输出done,可用于脚本中区分两种状态。

小结

bzip2 是 Linux 命令行压缩体系中压缩率突出的核心工具,其全部能力均可通过bzip2(选项)(参数)一命令覆盖:压缩用-z(或省略选项),解压用-d,保留原件用-k,强制覆盖用-f,校验完整性用-t,流式输出用-c,查看统计用-v。配合同族命令bunzip2(软链接解压)与bzcat(查看内容),足以应对 ZeroTermux 环境下绝大多数.bz2格式的压缩与解压需求。本文全部示例均可在 ZeroTermux 终端直接执行验证,命令参考文档本身也随应用离线打包于 app/src/main/assets/cmd/bzip2.md,随时可查。

  • 移动开发
  • 开发工具

【免费下载链接】ZeroTermux

项目地址:https://gitcode.com/GitHub_Trending/ze/ZeroTermux
点击查看免费下载
上一篇:Snowpack + Workbox:为静态构建产物生成 Service Worker 的完整实战指南
下一篇:ClickHouse v25.8.8.26-lts 版本解读:崩溃日志同步刷新与 9 项关键 Bug 修复全览

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表