压缩格式: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 :