• 一次性分清zip、gzip、bzip2、tar命令


    归类

    img

    我们把这几个命令归类为几种能力,一个是解压缩能力一个是打拆包能力。

    我这里打包的意思是不使用压缩算法对文件进行压缩,只是简单的把多个文件归档为一个文件。而拆包则是它的逆过程。

    压缩则是大家熟知的将文件以某种压缩算法对内容进行缩减,解压则是它的逆过程。

    zip与unzip命令

    zip命令用于将文件压缩为 .zip 格式的文件,之所以将他定义为可打包拆包是因为他可以支持多文件的压缩,而其他的 gzipbzip2 只能对单文件进行压缩,也就是说如果要压缩多文件,需要先经过打包过程变成单文件再压缩,.zip 格式的文件默认将打包和压缩放在一起了,而 zip 命令也不支持单独的打包再压缩。

    tar命令

    不加入 -z-j 参数,加入 -c 表示对文件或目录进行归档。

    所以tar命令是支持单独的归档功能的,具体的压缩算法可以通过参数指定可以是 gzip 也可以是 bzip2 或其他。

    使用方式

    zip

    命令格式

    zip [-r] [压缩后文件名] [文件或目录]
    
    • 1

    命令描述

    • zip命令用来对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。

    选项

    • -r: 递归处理,将指定目录下的所有文件和子目录一并处理,用于压缩目录
    • -x:压缩时排除符合条件的文件
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ zip a.zip a.txt #压缩文件
      adding: a.txt (stored 0%)
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    abc  a.txt  a.zip
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ touch abc/tmp.txt
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ zip -r abc.zip abc/ -x abc/tmp.txt #压缩文件夹并忽略某些文件
      adding: abc/ (stored 0%)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    unzip

    命令格式

    unzip [选项] 文件名
    
    • 1

    命令描述

    unzip命令用于解压缩由zip命令压缩的“.zip”压缩包。

    选项

    • -n:解压缩时不要覆盖原有的文件;
    • -o:不必先询问用户,unzip执行后覆盖原有的文件;
    • -d <目录>:指定文件解压缩后所要存储的目录(不指定目录,默认解压到当前目录)
    • 可配合tar命令对 tar.gz 文件进行解压缩和拆包 tar -zxvf 文件名

    示例

    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ unzip abc.zip -d ~ #解压到指定目录
    Archive:  abc.zip
       creating: /home/ljb/abc/
    
    • 1
    • 2
    • 3

    gzip

    命令格式

    gzip [文件]
    
    • 1

    命令描述

    gzip 压缩过后,其名称后面会多处 .gz 扩展名。

    注意:gzip 只能压缩文件,不能压缩文件夹,压缩后原文件会被删除。

    gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip压缩常常用在http的网络请求中。

    示例

    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ touch b.txt
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    abc  abc.zip  a.txt  a.zip  b.txt
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ gzip b.txt #压缩后生产b.txt.gz,原本的文件不见了
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    abc  abc.zip  a.txt  a.zip  b.txt.gz
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    gunzip

    命令格式

    gunzip [文件]
    
    • 1

    命令描述

    gunzip命令用来解压缩 xxx.gz 文件。

    示例

    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    abc  abc.zip  a.txt  a.zip  b.txt.gz
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ gunzip b.txt.gz
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls #解压缩成功,得到b.txt文件
    abc  abc.zip  a.txt  a.zip  b.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5

    bzip2

    命令格式

    bzip2 [选项] [文件]
    
    • 1

    命令描述

    • bzip2命令用于压缩 .bz2 格式的压缩包,是gzip的升级版本,可以保留原文件。
    • bzip2的压缩比比较高,可用于压缩较大文件。
    • bzip2也是只对文件进行压缩,如果相对目录进行压缩的话,可以用其他命令打包成一个文件(如tar)。

    选项

    -k(keep):保留原文件(不删除原文件)

    示例

    # bzip2 压缩文件
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ touch c.txt
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ bzip2 -k c.txt
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    abc  abc.zip  a.txt  a.zip  b.txt  c.txt  c.txt.bz2
    
    # 配合使用tar 命令,完成打包压缩(后面会讲tar命令的使用)
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ mkdir music
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ tar -jcvf music.tar.bz2 music/
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    abc  abc.zip  a.txt  a.zip  b.txt  c.txt  c.txt.bz2  music  music.tar.bz2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    bunzip2

    命令格式

    bunzip2 [选项] [文件]
    
    • 1

    命令描述

    • 解压缩 .bz2 格式的压缩文件;
    • gunzip 的升级版,可以使用-k保留原文件;
    • 可以配合使用tar命令,完成解压缩解包: tar -jxvf 文件名

    选项

    -k(keep):保留原文件(不删除原文件)

    示例

    #删除只剩下c.txt.bz2
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ rm -rf !(c.txt.bz2)
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    c.txt.bz2
    #解压bz2文件
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ bunzip2 c.txt.bz2
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    c.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    tar

    命令格式

    tar [选项] [压缩后文件名] [目录]
    
    • 1

    命令描述

    打包目录,将目录打包成一个文件,同时可以压缩,可以自由选择压缩算法。

    使用tar命令时,如果想要打包并压缩一个目录,可以有两种方法进行:

    1. 先利用 tar 命令打包目录为一个文件,然后使用 gzipbzip2 压缩。
    2. 直接利用 tar 命令打包并压缩 (简单方便,推荐使用)。

    解压时也有两种方式:

    1. 先使用 gunzipbunzip2 解压缩,再使用 tar 解包.
    2. 直接利用tar命令解压缩并解包 (简单方便,推荐使用)

    选项

    • -c:打包
    • -x:拆包
    • -v:显示详细信息
    • -f:指定文件名
    • -z:表示使用 gzip 进行解压缩,压缩后的拓展名为 .tar.gz,这个拓展名在下载Linux相关安装包时很常见。
    • -j:表示使用 bzip2 进行解压缩,压缩后拓展名为 .tar.bz2

    一般来说,-vf 参数肯定会带上的,根据打包/拆包选择-c或-x,根据使用的压缩算法选择 -z 或 -j。

    示例

    # 1、2为打包压缩的两种方法
    # 1. 使用 tar -cvf 打包,然后使用gzip压缩
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ mkdir movie
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    movie
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$# tar -cvf movie.tar movie/
    movie/
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    movie  movie.tar
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ gzip movie.tar
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    movie  movie.tar.gz
    
    # 2. 使用 tar -zcvf 打包并压缩
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ tar -zcvf movie2.tar.gz movie
    movie/
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    movie  movie2.tar.gz  movie.tar.gz
    
    # 3、4为解压缩并解包的两种方法
    
    # 3. 先使用gunzip解压缩,然后 tar -xvf解包
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    movie  movie2.tar.gz  movie.tar.gz
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ rm -rf movie
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    movie2.tar.gz  movie.tar.gz
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ gunzip movie.tar.gz
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    movie2.tar.gz  movie.tar
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ tar -xvf movie.tar
    movie/
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    movie  movie2.tar.gz  movie.tar
    
    # 4. 使用tar -zxvf 解压缩并解包
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    movie  movie2.tar.gz  movie.tar
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ rm -rf movie
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ tar -zxvf movie2.tar.gz
    movie/
    ljb@Wangzhe0cnmdUTF-8:/mnt/d/linux_shell$ ls
    movie  movie2.tar.gz  movie.tar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
  • 相关阅读:
    初识Java 6-1 复用
    LabVIEW调用C/C++ DLLs
    电解电容寿命与哪些因素有关?
    回归分析:多项式回归与广义线性回归,非线性问题的拟合
    SpringMVC详细复习资料(SpringMVC注解式开发,SpringMVC拦截器,SSM整合)
    LeetCode 150.逆波兰表达式求值
    洛谷P1064[NOIP2006 提高组] 金明的预算方案题解
    如何基于Angular从.ts获取鼠标响应的屏幕坐标,并传递至.html的Style中
    EtherCAT转EtherNET/IP协议网关控制EtherCAT伺服驱动器的方法
    .Net Web API 006 Controller上传大文件
  • 原文地址:https://blog.csdn.net/m0_50945504/article/details/128179937