linux下tar等打包压缩工具及while语句编写脚本(九)

1.压缩与解压缩命令概念

 压缩格式有:gz, bz2, xz, zip, Z等

2.compress压缩命令, 后缀以.Z结尾

    命令格式:compress 文件名   压缩完成后会删除原文件

  uncompress解压缩命令

    命令格式:uncompress 文件名.Z  压缩完成后会删除原文件

3.gzip压缩命令:后缀以.gz结尾

  gzip 文件名:压缩完成后会删除原文件

    -d: 解压文件 相当于gunzip

    -#:1-9,指定压缩比,默认是6;

 gunzip解压缩命令:

     gunzip 文件名.gz  压缩完成后会删除原文件

     zcat 文件名.gzz  不解压的情况,查看文本文件的内容

4.bzip2压缩命令,后缀以.bz2结尾

 bzip2 文件名:默认情况压缩完成后会删除原文件

   -d:解压文件 相当于bunzip2

   -#: 1-9,默认是6

   -k: 压缩时保留原文件

bunzip2 文件名.bz2

 bzcat:不解压的情况,查看文本文件的内容

   总结:相比gzip有着更大压缩比的压缩工具

5.xz命令: 后缀以.xz结尾

 xz 文件名 默认情况压缩完成后会删除原文件

   -d 解压文件 相当于unxz

   -#: 1-9, 默认是6

   -k: 压缩时保留原文件

 unxz 文件名.xz  对应解压缩命令

 xzdec 解压文件

 xzcat 不解压的情况,查看文本文件的内容

6.zip: 既归档又压缩的工具

  格式:zip 文件名.zip 文件...目录... 压缩后不删除原有文件

  unzip 文件名.zip

7.tar: 打包归档工具,后缀以.tar结尾

     -c: 创建归档文件

    -f FILE.tar: 操作的归档文件

     -x: 展开归档

 --xattrs: 归档时,保留文件的扩展属性信息

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

     -v:显示详细信息

     -r:追加打包文件

     -C:解压文件至指定目录中

    -zcf: 打包并调用gzip压缩

    -zxf: 解压缩gzip文件并展开归档,-z选项可省略

    -jcf: 打包并调用bzip2压缩

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

    -Jcf: 打包并调用xz压缩(Redhat6支持)

    -Jxf: 解压缩xz文件并展开归档,-J选项可省略

实例如下:

            tar cvf /soft/sys.tar /etc/sysconfig/  /etc/passwd  打包文件

            tar tvf /soft/sys.tar    查看已打包文件

            tar rvf /soft/sys.tar /etc/shadow  對此tar包追加文件

            tar xvf /soft/sys.tar  解開文件至當前目錄相對路徑

            tar cvzf /soft/sys.tar.gz /etc/sysconfig /etc/passwd 創建打包并gzip壓縮

            tar cvjf /soft/sys.tar.bz2 /etc/sysconfig /etc/passwd 創建打包并bzip2壓縮

            tar xvzf /soft/sys.tar.gz   gzip解壓文件

            tar xvjf /soft/sys.tar.bz2  bzip2解壓文件

            tar tvzf /soft/sys.tar.gz   查看已已壓縮文件

            tar tvjf   /soft/sys.tar.bz2  查看已已壓縮文件

            tar xvzf  /soft/sys.tar.gz   –C /tmp/  全部解壓至指定目錄下

           tar xvjf    /soft/sys.tar.bz2   etc/passwd 只解壓指定的文件

8.cpio: 打包工具

9.while语句

 while循环:需设定退出循环条件

 语法: while 条件; do

  语句1

   ...

  done

实例:每隔1分钟查看willow用户是否登录?如果登录,显示其登录和时间并退出;

    否则,显示当前系统时间,并提示相关信息

#!/bin/bash

w | grep "willow" &> /dev/null

RETVAL=$?

while [ $RETVAL -ne 0 ]; do

  echo "`date`, willow is not login this system." 

  sleep 60

  who | grep "willow" &> /dev/null

  RETVAL=$?

done

echo "Warning: willow is logging at the `date`"