linux的压缩和解压缩

压缩和解压缩工具和bash脚本编程;

压缩比

目的:时间 换 空间
    CPU的时间 --> 磁盘空间
    
compress/uncompress, .Z
gzip/gunzip,  .gz
bzip2/bunzip2,  .bz2
xz/unxz,  .xz
lzma/unlzma, lzma
zip/unzip
tar, cpio

1、gzip/gunzip/zcat

gzip, gunzip, zcat - compress or expand files

gzip  [OPTION]...  FILE...
    -d:解压缩,相当于gunzip;
    -#:指定压缩比,默认是6;数字越大压缩比越大(1-9);
    -c:将压缩结果输出至标准输出;
        gzip  -c  FILE > /PATH/TO/SOMEFILE.gz
        

2、bzip2/bunzip2/bzcat


bzip2  [OPTION]...  FILE...
    -d:解压缩
    -#:指定压缩比;默认是6;数字越大压缩比越大(1-9);
    -k:keep,保留原文件;
        

3、xz/unxz/xzcat

  lzma/unlzma/lzcat
  
xz  [OPTION]...  FILE...
    -d:解压缩
    -#:指定压缩比;默认是6;数字越大压缩比越大(1-9);
    -k:保留原文件;
    

归档:tar, cpio


tar命令:
    tar  [OPTION]...  FILE...
    
    (1) 创建归档
        -c -f /PATH/TO/SOMEFILE.tar  FILE... 
        -cf /PATH/TO/SOMEFILE.tar  FILE... 
        
    (2) 展开归档
        -xf  /PATH/FROM/SOMEFILE.tar 
        -xf  /PATH/FROM/SOMEFILE.tar  -C  /PATH/TO/SOMEDIR
        
    (3) 查看归档文件的文件列表
        -tf  /PATH/TO/SOMEFILE.tar
        
归档完成后通常需要压缩,结果此前的压缩工具,就能实现压缩多个文件了;
    (4) 归档压缩
        -z:gzip2
            -zcf   /PATH/TO/SOMEFILE.tar.gz  FILE...
            解压缩并展开归档:-zxf  /PATH/TO/SOMEFILE.tar.gz
            
        -j:bzip2
            -jcf
            -jxf
            
        -J: xz
            -Jcf
            -Jxf
            

zip:

zip/unzip
    后缀名:.zip

bash的测试类型

bash的测试类型:
数值测试
字符串测试
文件测试

数值测试:数值比较

-eq:是否等于; [ $num1 -eq $num2 ]
-ne:是否不等于;
-gt:是否大于;
-ge:是否大于等于;
-lt:是否小于;
-le:是否小于等于;

字符串测试:

==:是否等于;
>:是否大于;
<:是否小于;
!=:是否不等于;
=~:左侧字符串是否能够被右侧的PATTERN所匹配;

-z "STRING":判断指定的字串是否为空;空则为真,不空则假;
-n "STRING":判断指定的字符串是否不空;不空则真,空则为假;

注意:
    (1) 字符串要加引用;
    (2) 要使用[[ ]];
    

文件测试:

存在性测试
    -a  FILE
    -e  FILE
        文件的存在性测试,存在则为真,否则则为假;
存在性及类型测试
    -b  FILE:是否存在并且为 块设备 文件;
    -c  FILE:是否存在并且为 字符设备 文件;
    -d  FILE:是否存在并且为 目录文件;
    -f  FILE:是否存在并且为 普通文件;
    -h  FILE或 -L  FILE:是否存在并且为 符号链接文件;
    -p FILE:是否存在且为 命名管道文件;
    -S  FILE:是否存在且为 套接字文件;
文件权限测试:
    -r  FILE:是否存在并且 对当前用户可读;
    -w  FILE:是否存在并且 对当前用户可写;
    -x  FILE:是否存在并且 对当前用户可执行;
特殊权限测试:
    -u  FILE:是否存在并且 拥有suid权限;
    -g  FILE:是否存在并且 拥有sgid权限;
    -k  FILE:是否存在并且 拥有sticky权限;
文件是否有内容:
    -s  FILE:是否有内容;
时间戳:
    -N FILE:文件自从上一次读操作后是否被修改过;
从属关系测试:
    -O  FILE:当前用户是否为文件的属主;
    -G  FILE:当前用户是否属于文件的属组;
双目测试:
    FILE1  -ef  FILE2:FILE1与FILE2是否指向同一个文件系统的相同inode的硬链接;
    FILE1  -nt  FILE2:FILE1是否新于FILE2;
    FILE1  -ot  FILE2:FILE1是否旧于FILE2;