下面是转载的一段sh脚本:
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Usage: $0 file"
exit 1
fi
TSIZE=0
for FSIZE in $(tar tvvf $1 | awk '{print $3}'); do
if [ "$FSIZE" = "${FSIZE//[^0-9]/}" ]; then
TSIZE=$((TSIZE+FSIZE))
fi
done
[ $TSIZE -eq 0 ] && exit 1
MSG="Extracting..."
PROG_POS=$((${#MSG}+1))
PERC_POS=$((${#MSG}+53))
echo $MSG
PREV=-1
NSIZE=0
for FSIZE in $(tar xvvf $1 | awk '{print $3}'); do
if [ "$FSIZE" = "${FSIZE//[^0-9]/}" ]; then
NSIZE=$((NSIZE+FSIZE))
PERCENT=$((NSIZE*100/TSIZE))
if [ $PERCENT -ne $PREV ]; then
PLUS=$((PERCENT/2))
PROGRESS=$(printf "%.${PLUS}d" | tr '0' '+')
echo -e "\e[A\e[${PROG_POS}G${PROGRESS}=>"
echo -e "\e[A\e[${PERC_POS}G${PERCENT}%"
PREV=$PERCENT
fi
fi
done
需要改动的地方可以自己修改。