我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第2篇文章,点击查看活动详情
gzip
gzip 用于压缩文件,gunzip用于解压文件,只能用于压缩单个文件,不能进行压缩目录,即使指定目录也能压缩目录里面的所有文件。目前gzip看可以解开compress、zip等软件所压缩产生的文件。
基本用法
- gzip [-cdtv#] 文件 压缩文件,只能将文件压缩为*.gz文件
- gunzip 文件.gz : 解压缩文件命令
- zcat 文件.gz : 查看压缩文件的内容,压缩文件为单个文本文件可以读出来
- zgrep [选项] 查找的内容 文件.gz : 在压缩文件中查找内容, 选项部分同grep命令
常用选项
选项 | 含义 |
---|---|
-c | 将解压的数据输出到屏幕上,可以通过数据流重定向来处理 |
-d | 解压缩参数,加上-d之后gzip可以进行解压操作 |
-t | 可以用来检验一个压缩文件的一致性,看看文件是否错误 |
-v | 可以显示出原文件/压缩文件的压缩比等信息 |
-# | 为数字的意思,-1最快,但是压缩比最差,-9最慢,但压缩比最好,默认-6 |
应用案例
- 将文件bbb.txt 压缩为.gz文件
[root@lk01 test]# ls
bbb.txt
[root@lk01 test]# gzip bbb.txt
[root@lk01 test]# ls
bbb.txt.gz
[root@lk01 test]#
可以看到压缩完成后,默认情况下,源文件会被压缩成为.gz后缀的文件,当前目录下就没有bbb.txt文件了,只有一个bbb.txt.gz文件
2.使用gunzip解压bbb.txt.gz 文件
[root@lk01 test]# gunzip bbb.txt.gz
[root@lk01 test]# ls
bbb.txt
可以看到解压完成后,当前目录也没有了bbb.txt.gz文件了
3.通过zcat读出bbb.txt.gz压缩文件的内容
[root@lk01 test]# zcat bbb.txt.gz
qwewre
4.通过gzip -d 进行解压bbb.txt.gz文件
[root@lk01 test]# ls
aaa.zip bbb.txt.gz testDir testDirNew testDir.zip
[root@lk01 test]# gzip -d bbb.txt.gz
[root@lk01 test]# ls
aaa.zip bbb.txt testDir testDirNew testDir.zip
5.压缩bbb.txt,并保留源文件,主要原理就是通过 -c 参数,将压缩的数据流通过 > 重定向到 bbb.txt.gz文件中
[root@lk01 test]# gzip -c -9 bbb.txt > bbb.txt.gz
[root@lk01 test]# ls
aaa.zip bbb.txt bbb.txt.gz testDir testDirNew testDir.zip
6.使用zgrep在bbb.txt.gz文件中找到字符q所在的行号,并且只显示匹配的字符
[root@lk01 test]# ls
aaa.zip bbb.txt bbb.txt.gz testDir testDirNew testDir.zip
[root@lk01 test]# zcat bbb.txt.gz
qwewre
[root@lk01 test]# zgrep -n -o 'q' bbb.txt.gz
1:q
zip/unzip
zip用于压缩文件,unzip用于解压文件,可以压缩单个文件,也可以压缩一个目录,压缩跟解压都不会影响原文件。
基本用法
- zip [选项] aaa.zip aaa.txt : 将aaa.txt 文件压缩为aaa.zip压缩包
常用选项: -r 递归压缩,也就是压缩一个目录,如果是压缩一个目录,不带上-r的话,最后压缩包内就只有一个你压缩的文件夹,没有文件夹里面的内容。
- unzip [选项] aaa.zip : 将aaa.zip解压到当前目录下
常用选项: -d<目录> 即置顶解压后文件的存放目录,不写该参数,默认在当前目录下面
应用案列
- 将文件aaa.txt 进行压缩
[root@lk01 test]# ls
aaa.txt testDir
[root@lk01 test]# zip aaa.zip aaa.txt
adding: aaa.txt (stored 0%)
[root@lk01 test]# ls
aaa.txt aaa.zip testDir
我们可以看到使用zip对文件进行压缩之后,原文件仍然是会继续存在的。
2.将aaa.zip 文件进行解压
[root@lk01 test]# ls
aaa.txt aaa.zip testDir
[root@lk01 test]# unzip aaa.zip
Archive: aaa.zip
replace aaa.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
extracting: aaa.txt
[root@lk01 test]# ls
aaa.txt aaa.zip testDir
可以看到,因为原文件aaa.txt还在该目录,因此解压有一个过程问你是否代替原有的aaa.txt,并且解压后zip文件还是会存在。
- 现在test目录下面有一个文件夹testDir,testDir中有一个文件ccc.txt,现在需要将testDir跟里面的所有文件一起压缩到testDir.zip中
[root@lk01 test]# ls
aaa.txt aaa.zip testDir testDirNew
[root@lk01 test]#
[root@lk01 test]#
[root@lk01 test]#
[root@lk01 test]# ls
aaa.txt aaa.zip testDir testDirNew
[root@lk01 test]# ls testDir
ccc.txt
[root@lk01 test]# zip -r testDir.zip testDir/
adding: testDir/ (stored 0%)
adding: testDir/ccc.txt (stored 0%)
[root@lk01 test]# ls
aaa.txt aaa.zip testDir testDirNew testDir.zip
- 解压testDir.zip 到test目录下面的testDirNew中
[root@lk01 test]# unzip -d testDirNew/ testDir.zip
Archive: testDir.zip
creating: testDirNew/testDir/
extracting: testDirNew/testDir/ccc.txt
[root@lk01 test]#
[root@lk01 test]# ls testDirNew/
testDir
[root@lk01 test]# ls testDirNew/testDir/
ccc.txt
可以尝试下看看你不带上 -d testDirNew/ 是什么情况
bzip2
据说 bzip2 出来就是为了替换 gzip 并提供更好的压缩比例,其用法基本上跟gzip一致。压缩比也要好于gzip。
基本用法
- bzip2 [-cdkzv#] 文件名 : 根据参数不同可将文件进行压缩、解压等操作
- bzcat 文件名.bz2 : 同zcat一样,查看压缩文件解压后文件的内容
常用选项
选项 | 含义 |
---|---|
-c | 将解压的数据输出到屏幕上,可以通过数据流重定向来处理 |
-d | 解压缩参数,加上-d之后gzip可以进行解压操作 |
-k | 保留源文件,而不会删除源文件 |
-z | 压缩的参数,可以不加 |
-v | 可以显示出原文件/压缩文件的压缩比等信息 |
-# | 为数字的意思,-1最快,但是压缩比最差,-9最慢,但压缩比最好,默认-6 |
应用案例
1.使用 bzip2 压缩文件aaa.txt,并保留源文件。
[root@lk_kxz bzip2]# ls
aaa.txt
[root@lk_kxz bzip2]# bzip2 -k aaa.txt
[root@lk_kxz bzip2]# ls
aaa.txt aaa.txt.bz2
2.将压缩文件aaa.txt.bz2中的内容读出来。
[root@lk_kxz bzip2]# bzcat aaa.txt.bz2
asdasd
3.解压压缩文件aaa.txt.bz2。
[root@lk_kxz bzip2]# bzip2 -d aaa.txt.bz2
bzip2: Output file aaa.txt already exists.
因为源文件仍然存在因此输出了这句话。
4.还有一种保留源文件的压缩方式,以最佳压缩比将压缩内容输出到一个新的压缩文件里面,不过这种方式需要自己指定压缩文件的名字。
[root@lk_kxz bzip2]# bzip2 -9 -c aaa.txt > aaa.bz2
[root@lk_kxz bzip2]# ls
aaa.bz2 aaa.txt
xz
尽管bzip2的压缩比例已经很好了,但是很多人仍然不满足,于是后面就又推出来xz这种更高级的压缩软件。这个软件的用法跟bzip2、gzip也是几乎一模一样。
基本用法
- xz [-dtlkc#] 文件名
- xcat 文件名.xZ
常用选项
选项 | 含义 |
---|---|
-c | 将解压的数据输出到屏幕上,可以通过数据流重定向来处理 |
-d | 解压缩参数 |
-t | 测试压缩文件完整性,看是否有错误 |
-l | 列出压缩文件的相关信息 |
-k | 保留源文件,而不会删除源文件 |
-# | 为数字的意思,-1最快,但是压缩比最差,-9最慢,但压缩比最好,默认-6 |
应用案例
- 用xz压缩文件aaa.txt
[root@lk01 playground]# xz aaa.txt
[root@lk01 playground]# ls
aaa.txt.xz
2.查看压缩文件aaa.txt.xz的基本信息
[root@lk01 playground]# xz -l aaa.txt.xz
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 60 B 4 B --- CRC64 aaa.txt.xz
3.输出压缩文件aaa.txt.xz的内容
[root@lk01 playground]# xzcat aaa.txt.xz
aaa
4.解压aaa.txt.xz文件
[root@lk01 playground]# xz -d aaa.txt.xz
[root@lk01 playground]# ls
aaa.txt bbb.txt.xz
最终整个压缩命令测试
分别于zip、gzip、bzip2、xz对文件aaa.txt,压缩四次并解压。
[root@lk01 playground]# zip aaa.zip aaa.txt
adding: aaa.txt (stored 0%)
[root@lk01 playground]# ls
aaa.txt aaa.zip bbb.txt.xz
[root@lk01 playground]# gzip aaa.zip
[root@lk01 playground]# ls
aaa.txt aaa.zip.gz bbb.txt.xz
[root@lk01 playground]# bzip2 aaa.zip.gz
[root@lk01 playground]# ls
aaa.txt aaa.zip.gz.bz2 bbb.txt.xz
[root@lk01 playground]# xz aaa.zip.gz.bz2
[root@lk01 playground]# ls
aaa.txt aaa.zip.gz.bz2.xz bbb.txt.xz
最终就得到了aaa.zip.gz.bz2.xz 这个套娃的文件,解压有的格式虽然可以互相解压,但是还是建议学习的时候用对应命令一层一层解压知道成为正常文件,那就去试试吧! 下一篇 基本功修炼之Linux-详解tar命令