利用tar命令,根据文件名实现智能压缩,解压。
#!/bin/bash
####################################
# Smart package shell
####################################
aim_file=$1
function package(){
read -p "Input the package name." name
while [[ true ]]; do
read -p "Input the package type [gz/bz2]" tartype
case ${tartype} in
"gz" )
tar -czvf ./${name}.tar.${tartype} $aim_file
echo -e "\033[32mpackage complete.\033[0m"
exit 0
;;
"bz2" )
tar -cjvf ./${name}.tar.${tartype} $aim_file
echo -e "\033[32mpackage complete.\033[0m"
exit 0
;;
* )
echo -e "Only accept \033[031mgz\033[0m or \033[031mbz2\033[0m!Now,try again."
esac
done
}
function gzunpackage(){
while [[ true ]]; do
read -p "Input the aim directory." dir
if [[ -d $dir ]]; then
tar -xzvf $aim_file -C $dir
exit 0
else
echo "No such a directory,please input again!"
fi
done
echo -e "\033[32munpackage complete.\033[0m"
}
function bz2unpackage(){
while [[ true ]]; do
read -p "Input the aim directory." dir
if [[ -d $dir ]]; then
tar -xjvf $aim_file -C $dir
exit 0
else
echo "No such a directory,please input again!"
fi
done
echo -e "\033[32munpackage complete.\033[0m"
}
if [[ -e $aim_file ]]; then
if [[ ${aim_file##*.} = "gz" ]]; then
echo "This is a gz file."
gzunpackage
elif [[ ${aim_file##*.} = "bz2" ]]; then
echo "This is a bz2 file."
bz2unpackage
else
echo "We will package it to a gz file."
package
fi
else
echo "No such a file or directer."
fi