- 移动开发
- 开发工具
【免费下载链接】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或--force | bzip2 在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件;若要覆盖,请使用此参数 |
-h或--help | 在线帮助 |
-k或--keep | bzip2 在压缩或解压缩后,会删除原始文件;若要保留原始文件,请使用此参数 |
-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
相关推荐
bzip2 命令详解:Linux 下 .bz2 高压缩率压缩与解压实战指南
bzip2 命令详解:Linux 下 .bz2 高压缩率压缩与解压实战指南 本文基于 linux command 仓库的 command/bzip2.md ht
文档教程深入解析 @lit/reactive-element:构建轻量响应式 Web Components 的底层基类
深入解析 @lit/reactive element:构建轻量响应式 Web Components 的底层基类 @lit/reactive element 是
系统编程如何快速上手 bzip2-ffi:3步实现 bzip2 文件压缩与解压缩
如何快速上手 bzip2 ffi:3步实现 bzip2 文件压缩与解压缩 bzip2 ffi 是一个面向 仓颉语言(Cangjie) 的 bzip2 文件压缩与
系统编程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考