Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78703
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 434
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-23 09:31
个人简介

天行健,君子以自强不息;地势坤,君子以厚德载物

文章分类
文章存档

2018年(11)

2017年(30)

我的朋友

分类: LINUX

2017-06-04 11:11:17

Linux压缩及归档
压缩格式:gz、bz2,xz,zip,Z

1、gzip:
    gzip: .gz
        gzip /PATH/TO/SOMEFILE:压缩完成后会删除原文件(只能压缩文件,不能压缩目录)
            例:[root@Ourlab ~]# gzip ./compresstest
            -d:相当于gunzip解压缩文件
                例:[root@Ourlab ~]# gzip -d ./compresstest.gz
            -#:指定压缩比,#取值1-9,默认是6
                例:[root@Ourlab ~]# gzip -9 ./compresstest
    gunzip:
        gunzip /PATH/TO/SOMEFILE.gz :解压缩完成后会删除原文件
            例:[root@Ourlab ~]# gunzip ./compresstest.gz
    zcat:在不解压缩情况下查看压缩文件
        zcat /PATH/TO/SOMEFILE.gz
        例:[root@Ourlab ~]# zcat ./compresstest.gz
2、bzip2
    bzip2: .bz2
    比gzip 有着更大压缩比的压缩工具,使用格式近似
        bizp2 /PATH/TO/SOMEFILE
            -d:解压缩完成后会删除原文件
            -#:指定压缩比,#取值1-9,默认是6
            -k:压缩时保留原文件,与-d 配合使用解压缩时保留原文件
        bunzip2
            bunzip2 /PATH/TO/SOMEFILE
        bzcat:在不解压缩情况下查看压缩文件
3、xz
    xz : .xz
        xz /PATH/TO/SOMEFILE
            -d:解压缩完成后会删除原文件
            -#:指定压缩比,#取值1-9,默认是6
            -k:压缩时保留原文件,与-d 配合使用解压缩时保留原文件
        unxz:解压缩完成后会删除原文件
            unxz /PATH/TO/SOMEFILE
        xzcat:在不解压缩情况下查看压缩文件
4、zip:既归档又压缩的工具,具备压缩目录文件
    zip FILENAME.zip  FILE1 FILE2.....:压缩后不删除原文件
    
    unzip:解压缩完成后保留原文件

5、tar:归档工具不压缩
    -c:创建归档文件
    -f FILE.tar:操作的归档文件(与其他功能项配合使用)
        例:[root@Ourlab ~]# tar -cf test.tar test*.txt
    -x:展开归档
        例:[root@Ourlab ~]# tar -xf test.tar
    --xattrs:归档时,保留文件的扩展属性信息
    -t:不展开归档,直接查看归档了哪些文件
        例:[root@Ourlab ~]# tar -tf test.tar
    -zcf:归档并调用gzip压缩
    -zxf:调用gzip解压缩并展开归档,-z选项可省略
    
    -jcf:归档并调用bzip2压缩
    -jxf:调用bzip2解压缩并展开归档
    
    -Jcf:归档并调用xz压缩
    -Jxf:调用xz解压缩并展开归档

6、cpio:归档工具

7、read:同时多个赋值
    例:[root@Ourlab ~]# read NAME AGE
        XIAOXIAO    24
        [root@Ourlab ~]# echo $NAME
        XIAOXIAO
        [root@Ourlab ~]# echo $AGE
        24
    -p "PROMPT":给出提示
        例:[root@Ourlab ~]# read -p "duogefuzhi:" NAME AGE
            duogefuzhi:XIAOXIAO  18
            [root@Ourlab ~]# echo $NAME
            XIAOXIAO
            [root@Ourlab ~]# echo $AGE
            18
        例:写一个脚本SUM.sh,实现输入两个数值,实现求和:
        #!/bin/bash
        #
        read -p "IInput two intergers:" A B
        echo "$A plus $B is:$[$A+$B]"
    -t:指定超时时间
        例:写一个脚本SUM2.sh,实现输入    A、B两个数值且规定超时时长为5秒钟,超时则退出,
        若A为空则将A赋值为100,若B为空则将B赋值为1000,并实现求和:
        #!/bin/bash
        #
        read -t 5 -p "Input two integers:" A B
        [ -z $A ] && A=100
        [ -z $B ] && B=1000
        echo "$A plus $B is:$[$A+$B]"    
8、while循环:适用于循环次数未知的场景
    语法:
        while CONDITION; do
            statement
            .....
        done
    例:计算100以内所有正整数的和;
    while.sh脚本
    #!/bin/bash
    #
    declare -i I=1
    declare -i SUM=0

    while [ $I -le 100 ]; do
        let SUM+=$I
        let I++
    done
    echo $SUM
    例:写一个脚本translate.sh,从键盘输入一段文字,脚本能够自动将小写字母转换为大写字母;
    #!/bin/bash
    #
    read -p "Input someting :" STRING

    while [ $STRING != 'quit' ]; do
        echo $STRING | tr 'a-z' 'A-Z'
        read -p "Input someting:" STRING
    done
9、echo:
    -e:允许后面的输出进行转义,可以使输出文本警示作用
        例:输出文本,使Hello加粗显示
        [root@Ourlab ~]# echo -e "\033[1mHello\033[0m,world."
        或
        [root@Ourlab ~]# echo -e "\033[1;1mHello\033[0m,world."
        例:输出文本,使Hello红色字体显示
        [root@Ourlab ~]# echo -e "\033[31mHello\033[0m,world."
        例:输出文本,使Hello绿色字体显示
        [root@Ourlab ~]# echo -e "\033[32mHello\033[0m,world."
        例:输出文本,使Hello黄色字体显示
        [root@Ourlab ~]# echo -e "\033[33mHello\033[0m,world."
        例:输出文本,使Hello蓝色字体显示
        [root@Ourlab ~]# echo -e "\033[34mHello\033[0m,world."
        例:输出文本,使Hello紫色字体显示
        [root@Ourlab ~]# echo -e "\033[35mHello\033[0m,world."
        例:输出文本,使Hello青色字体显示
        [root@Ourlab ~]# echo -e "\033[36mHello\033[0m,world."
        例:输出文本,使Hello灰色字体显示
        [root@Ourlab ~]# echo -e "\033[37mHello\033[0m,world."
        例:输出文本,使Hello红色背景显示
        [root@Ourlab ~]# echo -e "\033[41mHello\033[0m,world."
        例:输出文本,使Hello红色背景,绿色字体显示
        [root@Ourlab ~]# echo -e "\033[32;41mHello\033[0m,world."
        例:输出文本,使Hello红色背景,绿色字体并加粗显示
        [root@Ourlab ~]# echo -e "\033[1;32;41mHello\033[0m,world."
        
练习1:写一个脚本,从键盘让用户输入几个文件,脚本能够将此几个文件归档压缩成一个文件;
#!/bin/bash
#
read -p "Three files:" FILE1 FILE2 FILE3
read -p "Destination:" DEST
read -p "Compress[gzip|bzip2|xz]:" COMP

case $COMP in
gzip)
    tar -zcf ${DEST}.tar.gz $FILE1 $FILE2 $FILE3
    ;;
bzip2)
    tar -jcf ${DEST}.tar.bz2 $FILE1 $FILE2 $FILE3
    ;;
xz)
    tar -Jcf ${DEST}.tar.xz $FILE1 $FILE2 $FILE3
   ;;
*)
    echo "Unknown."
    exit 9
    ;;
esac

练习2:每隔5秒查看hadoop用户是否登录,如果登录,显示其登录并退出;否则,显示当前时间,并说明hadoop尚未登录:
#!/bin/bash
#
who | grep "hadoop" &> /dev/null
RETVAL=$?

while [ $RETVAL -ne 0 ]; do
    echo "`date`,hadoop is not loged."
    sleep 5
    who | grep "hadoop" &> /dev/null
    RETVAL=$?
done

echo "hadoop is logged in."

练习3:写一个脚本:showdisk1.sh
1) 显示一个菜单给用户:
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
*) quit.
2) 当用户给定选项后显示相应的内容;
 
 #!/bin/bash
#
cat << EOF
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
*) quit.
EOF

read -p "Your choice:" CHOICE

case $CHOICE in
d|D)
   echo "Disk usage:"
   df -Ph ;;
m|M)
   echo "Memory usage:"
   free -m | grep "Mem" ;;
s|S)
   echo "Swap usage:"
   free -m | grep "Swap" ;;
*)
   echo "Unknown."
   exit 9;;
esac

扩展:写一个脚本showdisk2.sh
    当用户选择完成,显示相应信息后,不退出;而让用户再一次选择,再次显示相应内容;除了用户使用quit;

#!/bin/bash
#
cat << EOF
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
*) quit.
EOF

read -p "Your choice:" CHOICE

while [ $CHOICE != 'quit' ]; do
    case $CHOICE in
       d|D)
        echo "Disk usage:"
        df -Ph ;;
       m|M)
        echo "Memory usage:"
        free -m | grep "Mem" ;;
       s|S)
        echo "Swap usage:"
        free -m | grep "Swap" ;;
       *)
        echo "Unknown.";;
    esac

read -p "Again,your choice:" CHOICE
done
阅读(1011) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~