搜索热词

有时候你会发现并不是所有的 Linux 压缩包都是以 .tar.gz 为后缀的,有些压缩包的后缀是 .tar.bz2。这个 .tar.bz2 又是什么呢?它就是本文的主角:bzip2 压缩工具。

有了 gzip 为什么还要重复造轮子

gzip 的 0.1 版本是在 1992 年发布的,而 bzip2 的 0.1 版本是在 1996 年发布的,可见 bzip2 的开发是要晚于 gzip 的。由于 bzip2 与 gzip 相比,其压缩稳定性和效果都更好,所以 bzip2 一经推出,便受到了广大用户的欢迎。

由此可见,这不能算是重复造轮子,bzip2 让世界变得更加美好了。

bzip2 和 bunzip2 是一个东西么

在我们正式开始讲解之前,有一点必须要介绍清楚,那就是 bzip2 和 bunzip2 的关系。

其实从字面意思上我们也能够猜出个大概,bzip2 是用来压缩文件的,而 bunzip2 则是用来解压文件的,类似于 zip 和 unzip 的关系。但是很神奇的一点是,其实 bzip2 和 bunzip2 在 Linux 中是指向完全一样的程序的。

如果你在 Rehdat/Fedora/CentOS 下工作,你会发现 bunzip2 是 bzip2 的一个符号连接。

[roc@roclinux ruanjian]$ ls -Fhl /usr/bin/bunzip2

lrwxrwxrwx. 1 root root 5 2月 7 2012 /usr/bin/bunzip2 -> bzip2*

如果你在 Debian/Ubuntu 下工作,你会发现 bunzip2 和 bzip2 具有相同的 inode 节点,即两者都指向同一个程序。

root@rocubuntu75:~# cat /etc/issue

Ubuntu 14.04.1 LTS \n \l

root@rocubuntu75:~# ls -hl /bin/bunzip2 /bin/bzip2

-rwxr-xr-x 3 root root 31K Oct 21 2013 /bin/bunzip2

-rwxr-xr-x 3 root root 31K Oct 21 2013 /bin/bzip2

root@rocubuntu75:~# ls -i /bin/bunzip2 /bin/bzip2

131078 /bin/bunzip2 131078 /bin/bzip2

但是 bzip2 和 bunzip2 两个命令的行为确实完全迥异,bzip2 只服务于那些“要压缩的文件”,而 bunzip2 则只服务于那些“要解压缩的文件”。

一个程序,改个名竟然就可以有不同的行为,这是怎么实现的?通过阅读 bzip2 软件包的源代码,我们找到了精髓所在。

/* 默认情况下,命令的工作模式是OM_Z,即压缩模式 */

opMode = OM_Z;

/* 如果程序的名字中含有unzip或UNZIP,那么就将命令的工作模式设置成OM_UNZ,即解压模式 */

if ( (strstr ( progName,"unzip" ) != 0) ||

(strstr ( progName,"UNZIP" ) != 0) )

opMode = OM_UNZ;

这下,真相大白于天下啦!

本来不想告诉大家这个小秘密的,因为就好像魔术,一旦揭穿,就会变得索然无味了。哈哈,我们还是抓紧时间进入命令用法环节吧。

掌握 gzip 后 bzip2 无难度

如果你还没有学习 gzip 的话,强烈推荐你先阅读该网站上有关 gzip 的那篇文章。由于 bzip2 命令在用法上和 gzip 大同小异,所以如果你学习过 gzip 的话,那么本文的内容相信你会轻松学懂,毫无难度。

解压一个 .tar.bz2 的文件。

[roc@roclinux ruanjian]$ tar -xjvf curl-7.47.1.tar.bz2

curl-7.47.1/tests/unit/unit1301.c

curl-7.47.1/tests/unit/unit1305.c

curl-7.47.1/tests/unit/Makefile.am

curl-7.47.1/tests/unit/Makefile.in

curl-7.47.1/tests/unit/unit1300.c

(此处省略数百行)

此处的用法和 gzip 几乎一样,唯一的区别就是采用了-j选项。-j选项特指采用 bzip2 方式进行解压缩。

相信你也已经猜到了,打包并压缩的方法,就是 -cjvf,唯一的区别还是那个-j选项而已,我们就不在这里浪费笔墨举例了。

再告诉大家一个小秘密,现在 tar 命令已经足够智能了,我们完全不需要指定解压缩方式,tar 就会根据文件后缀来自动采用匹配的解压方法。

大胆的把-j选项去掉吧,照样可以完美解压:

[roc@roclinux ruanjian]$ tar -xvf curl-7.47.1.tar.bz2

curl-7.47.1/tests/unit/unit1301.c

curl-7.47.1/tests/unit/unit1305.c

curl-7.47.1/tests/unit/Makefile.am

curl-7.47.1/tests/unit/Makefile.in

curl-7.47.1/tests/unit/unit1300.c

(此处省略数百行)

对单个文件压缩和解压

我们用 bzip2 命令和 bunzip2 命令,就可以实现了,来看实例。

#一个文本文件,叫作mynote.txt

[roc@roclinux ruanjian]$ ls -l mynote.txt

-rw-rw-r-- 1 roc roc 96 2月 20 16:49 mynote.txt

#调用bzip2来压缩,压缩后,原来的文件就会消失,只会留下压缩后的文件

[roc@roclinux ruanjian]$ bzip2 mynote.txt

#压缩后的文件会以.bz2结尾

[roc@roclinux ruanjian]$ ls -l mynote.txt.bz2

-rw-rw-r-- 1 roc roc 46 2月 20 16:49 mynote.txt.bz2

#用bunzip2解压,当然也可以使用bzip2 -d来替换bunzip2

[roc@roclinux ruanjian]$ bunzip2 mynote.txt.bz2

处理多个文件也挺方便

如果有 A.txt 和 B.txt 两个文件,而我想用一个命令把两个文件分别压缩为 A.txt.bz2 和 A.txt.bz2:

# bzip2 abc1.txt abc2.txt

如果有 A.txt.bz2 和 B.txt.bz2 两个文件,而我想用一个命令把两个文件分别解压为 A.txt 和 B.txt:

[roc@roclinux ~]$ bunzip2 A.txt.bz2 B.txt.bz2

[roc@roclinux ~]$ ls

A.txt B.txt

好了,截至目前,和 bzip2 相关的内容就介绍的差不多了,大家可以自己好好钻研钻研了。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

linux卸载bzip2,bzip2命令_Linux bzip2命令:压缩和解压文件(.bz2文件)相关推荐

  1. Linux下tar bz gz等压缩包的压缩和解压

    Linux下tar bz gz等压缩包的压缩和解压 - 云+社区 - 腾讯云 Linux下用户经常需要备份计算机系统中的数据,为了节省存储空间,常常将备份文件进行压缩,本文是对压缩和解压命令的大致总结 ...

  2. linux系统如何解gz文件,Linux 系统 压缩和解压 gz 格式文件

    Linux 系统 压缩和解压 gz 格式文件 引言 前面我们说了在 Linux 系统上比较常用的打包压缩解压  tar   及 zip 文件 的命令,那 Linux 上还有什么使用比较广泛的压缩解压文 ...

  3. 使用 7-Zip 的命令行版本来压缩和解压文件

    7-Zip 也有一个简短的名称 7z.它的原生 UI 确实不怎么好看,非常有年代感:不过 7-Zip 的强大之处不在于 UI,而在于其算法和各种文件的支持情况.不过,7-Zip 提供了命令行的版本,让 ...

  4. LINUX压缩和解压和磁盘管理与维护命令

    文章目录 一.压缩和解压命令 二.磁盘管理与维护命令 总结 一.压缩和解压命令 Linux zip命令:压缩文件或目录 Linux unzip命令:解压文件或目录 Linux tar命令:归档工具 二 ...

  5. linux bzip2压缩文件,bzip2命令_Linux bzip2命令:压缩和解压文件(.bz2文件)

    有时候你会发现并不是所有的 Linux 压缩包都是以 .tar.gz 为后缀的,有些压缩包的后缀是 .tar.bz2.这个 .tar.bz2 又是什么呢?它就是本文的主角:bzip2 压缩工具. 有了 ...

  6. Linux常用的压缩和解压命令gzip,gunzip,tar,zip, unzip和bzip2,bunzip2

    Linux常用的压缩和解压命令 1.压缩解压gzip和gunzip 特点: 压缩比例大概为6:1 该命令只能压缩文件,不能压缩目录 压缩或者解压后不保留源文件 压缩示例:gzip 需要压缩的文件 解压 ...

  7. linux为什么用tar压缩,linux下tar压缩和解压命令用法详解

    linux下tar压缩和解压命令用法详解 2017-03-25 14:06 分享人:老牛 将/usr/local/test目录下所有文件仅打包,不压缩到 /usr/local/auto_bak/目下 ...

  8. linux tar.xz 解压命令,tar.xz后缀文件创建和解压命令

    今天尝试编译内核,下载到了一份tar.xz结尾的压缩文件,网上解决方法比较少,不过还是找到了,如下: $xz -d ***.tar.xz $tar -xvf ***.tar 可以看到这个压缩包也是打包 ...

  9. Linux压缩和解压命令:tar,gzip,zip(unzip),rar

    很多大型文件或者数据从服务器上传或者下载的时候都需要打包和压缩解压,这时候知道压缩和解压的各种命令是很有必要的. 常见的压缩文件后缀名有.tar.gz,.gz,.zip和.rar,下面来看看在Linu ...

  10. Unity BZip2压缩和解压,基于C#

    基于BZip2的压缩方式(ICSharpCode.SharpZipLib)   压缩和解压代码举例: MemoryStream ms = new MemoryStream();         BZi ...

最新文章

  1. JVM 内部原理(七)— Java 字节码基础之二
  2. CSS3混合模式mix-blend-mode/background-blend-mode简介
  3. Linux 下 Jni 实现
  4. 不疯狂的外星人,已疯狂的资本
  5. dhcp是哪一层的协议_OSI各个分层分别负责哪些功能?有哪些主要协议?涉及到哪些设备?...
  6. SAP产品和3D渲染技术的结合-使用JavaScript的开源3D渲染库实现
  7. cartographer学习笔记--如何保存cartagrapher_ros建好的地图
  8. clickhouse建库_专访ClickHouse创始人:数据库竞争依旧火热,技术整合势在必行
  9. spring整合kafka项目生产和消费测试结果记录(一)
  10. Git 代码管理(代码提交和代码回退)
  11. python编程语言继承_Python面向对象程序设计类的封装与继承用法示例
  12. 奇幻RPG(角色技能 与 Strategy模式)
  13. Matlab实用代码——定位文件位置,自动导入文件
  14. RPM方式安装MySQL5.5.48 (Aliyun CentOS 7.0 卸载MySQL5.7)
  15. Oracle批量、大量Update方法总结
  16. 会议OA项目之我的审批签字功能
  17. “正德厚生、臻于至善”这句话是什么意思?
  18. @开发者:个推小程序消息推送解决方案来了
  19. php启动 大量sess文件,关于PHP中Session文件过多的有关问题
  20. Windows 下 Let's Encrypt申请证书及使用

热门文章

  1. plsql导出单表数据
  2. Github Desktop for macos_zh 汉化
  3. 计算机考研408专用笔记-----计算机组成原理
  4. 微信小程序 好用的UI组件库推荐
  5. Sketch 56.3 for Mac下载
  6. numpy数组随机抽取
  7. k8s ingress配置自签名证书,并解决Kubernetes Ingress Controller Fake Certificate
  8. 使用sql语句直接修改数据库密码的解决方案
  9. 算法:限流之令牌桶算法实现
  10. Unity 粒子特效 不受Time.deltaTime影响