bzip2命令_Linux bzip2命令:压缩和解压文件(.bz2文件)
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 相关的内容就介绍的差不多了,大家可以自己好好钻研钻研了。
21838.html
linux相关文章
- 【Linux】Linux命令大全——解压、目录、文件、搜索等
- Linux获取系统时间:以秒为单位(linux获取时间秒)
- 探索Linux命令的历史变迁(linux命令历史记录)
- Linux下GZ文件解压的简单命令指南(linuxgz解压命令)
- Linux进程间通信的信号量使用(linux进程间信号量)
- Linux和号的本质区别(linux区别)
- 实现快速上手:Linux机器配置Hosts文件(linux配置hosts)
- Linux红帽子安装简易指南(linux红帽子怎么安装)
- Linux如何快速清空日志文件内容(linux清空日志内容)
- 夹Linux查看当前文件夹的方法(linux显示当前文件)
- 关闭Linux系统的防火墙(关闭linux的防火墙)
- 深入了解Linux命令ADB,提高android开发效率(linux命令adb)
- “学会使用 Linux 命令,轻松管理 IP 地址”(linux命令ip)
- 【Linux王者归来】最快速远程桌面引领行业,皇冠至高无上之势!(linux最快的远程桌面)
- linux下利用grep命令搜索文件内容(linuxgrepv)
- 穿越Linux,畅享网络摄像头技术(网络摄像头linux)
- Linux命令用法全解:从入门到精通(linux命令用法详解)
- Linux命令教程:如何查看千兆全双工工作状态?(linux查看千兆全双工)
- 如何在Linux中使用Export命令(linux中export)
- 切换双系统:Linux与Windows的交互(linux和windows双系统)
- 探索PTS Linux:开启崭新的开源物联网之旅(pts linux)
- 构建基于Linux的文件服务器:解决你的数据存储问题(linux 文件服务器)
- Lua语言在Linux下的应用前景(lua语言linux)
- 掌握Linux修改系统时间的命令(linux修改系统时间命令)