压缩、解压缩文件及while循环

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


压缩算法:算法不同,压缩比也会不同

gzip: .gz

  gzip: /path/to/somefile:压缩完成后悔删除原文件

      -d:解压缩  相当于gunzip

      -#:1-9,指定压缩比,默认是6      eg:gzip -9 test

gunzip:

  gunzip /path/to/somefile.gz:解压完成后会删除源文件


zcat /path/to/somefile.gz 在不解压的情况下查看文件内容

bzip2:.bz2

比gzip有着更大的压缩比的工具,使用格式近似

bzip2 /path/to/somefile

 -d:解压缩

 -#:1-9,默认是6

 -k:压缩时保留原文件

bunzip2 /path/to/somefile.bz2

bzcat:不解压直接查看

xz: .xz

xz /path/to/somefile

 -d

 -#:1-9 ,默认是6

 -k:压缩时保留原文件

  unxz:解压缩

xzcat

zip:

   zip filename.zip file1 file2...多个文件既归档又压缩,压缩后不删除原文件

   unzip filename.zip

archive:归档


tar:归档工具,只归档,不压缩 .tar

-c 创建归档文件

-f file.tar 操作的归档文件

-x:展开(还原)归档

--xattrs:归档时保留文件的扩展属性信息(备份时很关键)

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


-zcf:归档并调用gzip压缩

-zxf:调用gzip解压缩并归档

-z选项可以省略tar -xf file.tar...


-jcf:biz2

-jxf

-Jcf:xz

-Jxf:


cpio:归档工具,更古老,功能与tar类似


练习:写一个脚本

从键盘让用户输入几个文件,脚本能够将此几个文件归档压缩成一个文件

read:

  -p "prompt提示":给出提示

#!/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 -cf ${DEST}.tar $FILE1 $FILE2 $FILE3

  xz ${DEST}.tar;;

*)

  echo "Unknow."

  exit9;;

esac


while循环:适用于循环次数未知的场景,必须有退出条件

语法

while condition;do

statement

...

done

计算100以内所有正整数的和

#!/bin/bash

declare -i I=1

declare -i SUM=0


while [ $I -le 100 ];do

  let SUM+=$I

  let I++

done


echo $SUM


每5秒钟检查一下hadoop是否登录:

#!/bin/bash

#

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

RETVAL=$?


while [ $RETVAL -ne 0 ]; do

  echo "`date`, hadoop is not log."

  sleep 5

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

  RETVAL=$?

done

echo "hadoop is logged in."


练习:写一个脚本

1)显示一个菜单给用户:

d|D) show disk usages.

m|M) show memory usages.

s|S) show swap usages

*) quit.

2)扩展:当用户选择完成后,显示相应信息后,不退出;

而让用户再一次选择,再次显示相应内容,除了用户使用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

echo -n -e "\033[31mYour choice:\033[0m" #-e显示颜色

read 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 "unknow."

esac

read -p "agian,your choice:" CHOICE

done


echo -e :


你可能感兴趣的:(压缩,while,源文件)