推荐给好友 上一篇 | 下一篇

shell实现拷贝进度条

特别感谢作者:idkey兄
:Q&Jl7Jd
?&nr%}Q\E@代码:BSD爱好者乐园e#cXd/~
#!/bin/shBSD爱好者乐园I#X2\QSFZk}/B
# Last modified: 2003年07月05日 星期六 00时09分44秒 [test]
|K%_%h0^E]+@BSD爱好者乐园'y-S1D5B#T%{8E]| V
SOURCE=$1BSD爱好者乐园f~;p A{&|@3Ex7j
TARGET=$2
m B'v[O)P3P_)]BSD爱好者乐园5l;m [6X Cj+Kp
#CP=./fack_cpBSD爱好者乐园)xX~3aAA
CP=cpBSD爱好者乐园NQ%V,ZdZd

/XEF_XSD$CP "$SOURCE" "$TARGET" &BSD爱好者乐园%L3a#j Jvg"wk3j/A
CPID=$!
X qmcP}E7VHf`
)[2A.z]~*i+Gehisalive(){
Dc|Ry?        out=`ps -p $1 2> /dev/null`
DBM5G/WU\4J6a        return $?BSD爱好者乐园~ hr6SiWW3i'R
}BSD爱好者乐园?%U0Z S%rL.S\1e

d'o8I;M+T:f:c7Cwhile [ 1 ]; do {BSD爱好者乐园:RS.G _q'w I
        SSIZE=`/bin/ls -l $SOURCE | gawk "{print \\\$5}"`BSD爱好者乐园Y#yFv3??~3le
        if [ -f $TARGET ]; thenBSD爱好者乐园Uw6l3z3AJ
                TSIZE=`/bin/ls -l $TARGET | gawk "{print \\\$5}"`
Ir8X/H5J        elseBSD爱好者乐园 [f m2Wq,e
                TSIZE="0"BSD爱好者乐园9WH7WgSs"n/AF
        fiBSD爱好者乐园 t.\l+h*b8p"U
        PERCENT=`echo "scale=2; $TSIZE/$SSIZE*100" | bc -l`
[ G4YCtg,Q[        RATE=`echo "scale=0; 63*$PERCENT/100" | bc -l`
%Z:U3Ee?~2{ m        BLUE="\\033[3;44m"
{3e-t(cd(e        NORMAIL="\\033[0;39m"
V.e Ow%`5gfBSD爱好者乐园L6r(Wz!Nu
        BAR=$BLUEBSD爱好者乐园|j1CmpQh-M
        i=0
&g:o0k ZKJ        while [ $i -le 62 ]; do
3Rg#wP*O(?                [ $i = $RATE ] && BAR=$BAR"\\033[7;39m"BSD爱好者乐园b8t&Z0hH-I?3S
                BAR=$BAR" "
r;Vc:Ux:B;}-R!`d+G                let i=$i+1
Qnp9`D        done
mL? d`NC$Qa] f        BAR=$BAR$NORMAILBSD爱好者乐园6n;},W4X)w#vo l
        echo -en "\r$BAR ${PERCENT}%"BSD爱好者乐园 A DQZ f1Q jx,c ga
        if ! isalive "$CPID"; then echo -en "\n"; exit; fiBSD爱好者乐园 }.^!~x1S/i7W8_t'| f
        sleep 1BSD爱好者乐园R"q0d ]L(Z~
}BSD爱好者乐园e.w5{Rt%Z j'@
done
[重要提醒]对本篇资料有疑问,请到论坛讨论,尽量使文章准确无误>>>
[版权声明]BSD爱好者乐园站内文章,如来源不是互联网,则均系原创或翻译之作,可随意转载,或以此为基础进行演译,但务必以链接形式注明原始出处和作者信息,否则属于侵权行为。另对本站转载他处文章,俱有说明,如有侵权请联系本人,本人将会在第一时间删除侵权文章。
TAG: shell 进度条 copy
 

评分:0

我来说两句

seccode