压缩、解压缩

压缩格式:gz,bz2,xz,zip,z

compress

FILENAME.Z【这是中比较古来的压缩方式,现在不常用】,uncompress:解压.Z压缩文件

gzip

.gz,使用方法:gzip /PATH/FILENAME,压缩后会删除原文件,它对应的gunzip是解压.gz文件的,解压后也会删除原文件,不能压缩目录,如果指定的是目录它会把目录里的文件都压缩;gzip的选项:

  • -d:相当于gunzip,对文件解压缩

  • -#:1-9,指定压缩比,默认是6,压缩比越大就越慢,压缩出来的文件是最小的

gunzip

解压缩.gz压缩的文件

zcat

压缩文件查看不是用cat,而是用zcat;使用方法:zcat /PATH/FILENAME.gz,不解压的情况下查看文件的内容

bzip2

.bz2结尾,它比gzip有着更大的压缩比,使用格式与gzip近似,使用方式:bzip2 /PATH/FILENAME,压缩后也会删除原文件

  • -d:解压缩

  • -#:1-9,默认是6

  • -k:压缩时保留原文件【这个选项gzip没有】

bunzip2

解压缩.bz2结尾的压缩文件,bunzip2 /PATH/FILENAME

bcat

查看.bz2压缩的文件,bcat /PATH/FILENAME

xz

.xz,压缩比更大,使用方法与bzip2近似,xz /PATH/FILENAME

  • -d:解压缩

  • -#:1-9,默认6

  • -k:压缩保留原文件

unxz

解压缩.xz压缩文件

xzdec

也是解压缩,xzdec -dk /PATH/FILENAME > FILENAME,解压缩时保留原文件【xz -d和unxz都可以解压缩,但是xzdec解压缩会输出到屏幕,我们需要解压缩时重定向到文件就可以了。】

  • -d:默认就是该选项,解压缩

  • -c:解压缩输出到屏幕

  • -k:解压缩保留原文件

xzcat

zip

既归档又压缩的工具,可以压缩目录,压缩后不删除原文件,但是压缩比很小,压缩算法是deflated

使用方法:zip FILENAME.zip FILENAME1,FILENAME2...

unzip

archive:归档

把一些文件放到一块,打包一下叫做归档,归档不一定压缩,上面的zip是既压缩又归档

tar归档

  • -c:指定要归档的文件

  • -f FILE.tar:指定归档后的文件名

  • -x:展开归档

  • --xattrs:归档时,保留文件的扩展属性信息【如:默认归档不会保留acl,可以使用该选项保留acl】

  • -t:不展开归档直接查看归档了哪些文件

  • -zcf:归档并调用gzip压缩

  • -zxf:调用gzip解压缩,并展开归档,-z可省略

  • -jcf:归档并调用bzip2压缩

  • -jxf:bzip2解压并展开归档,-j可省略

  • -Jcf:归档并调用xz压缩【有的版本可能不支持】

  • -Jxf:xz解压缩,并展开归档

另外,上面的解压缩有多种,我们还需要去判断该用那种类型去解压缩,其实当使用tar -xf 展开归档时,它会智能判断用那种解压方式去解压,注意它不适用xz压缩的

它们都对应-ztf,-jtf,-Jtf,不解压查看归档文件内容

[root@localhost ~]# tar -c *.txt -f gui.tar【归档】
[root@localhost ~]# ls
anaconda-ks.cfg  b.txt  gui.tar      install.log.syslog
a.txt            c.txt  install.log
[root@localhost ~]# rm -rf *.txt【删除原文件】
[root@localhost ~]# tar -xf gui.tar【展开归档】
[root@localhost ~]# ls
anaconda-ks.cfg  b.txt  gui.tar      install.log.syslog
a.txt            c.txt  install.log
[root@localhost ~]# tar -tf gui.tar 【不展开归档查看】
a.txt
b.txt
c.txt

[root@localhost ~]# tar -xf gui.tar.bz2【bz2压缩的可以智能判断用bzip2解压,并展开归档】
[root@localhost ~]# ls
anaconda-ks.cfg  b.txt  gui.tar.bz2  install.log.syslog
a.txt            c.txt  install.log
[root@localhost ~]# tar -xf gui.tar.xz【xz压缩不会智能判断】
tar: 它似乎不像是一个 tar 归档文件
tar: 由于前次错误,将以上次的错误状态退出
[root@localhost ~]# tar -Jxf gui.tar.xz

cpio归档

read

read让用户键盘输入(C语言scanf)

[root@localhost ~]# read NAME【一个变量一个值】
jiakang
[root@localhost ~]# echo $NAME
jiakang
[root@localhost ~]# read NAME【一个变量,两个值】
jiakang zhangsan
[root@localhost ~]# echo $NAME
jiakang zhangsan
[root@localhost ~]# read NAME SEX【两个变量两个值】
jiakang man
[root@localhost ~]# echo $NAME
jiakang
[root@localhost ~]# echo $SEX
man
[root@localhost ~]# read NAME SEX【两个变量三个值】
jiakang man woman        
[root@localhost ~]# echo $NAME
jiakang
[root@localhost ~]# echo $SEX
man woman
[root@localhost ~]# read NAME SEX【两个变量一个值】
jiakang   
[root@localhost ~]# echo $NAME
jiakang
[root@localhost ~]# echo $SEX【空值】

[root@localhost ~]# 

通过上面的代码,结论就是:值比变量多,多余的值最后被赋给一个变量;值比变量少,最后的变量赋空值

  • -p “提示”:给出输入提示

  • -t 时间 :多少秒没有输入,脚本自动往下执行

[root@localhost ~]# vi read.sh
[root@localhost ~]# chmod +x read.sh
[root@localhost ~]# cat read.sh
#!/bin/bash
#
echo "请输入两个值:"
read A B
echo $[$A+$B]
[root@localhost ~]# ./read.sh
请输入两个值:
2 3
5

[root@localhost ~]# ./read.sh
输入两个值2 5  
计算结果是:7
[root@localhost ~]# cat read.sh
#!/bin/bash
#
#echo -n  "请输入两个值:"
read -p "输入两个值" A B
echo "计算结果是:$[$A+$B]"

博客地址:http://www.51aixue.cn/2017/04...


Big_fat_cat
207 声望10 粉丝