Linux中如何让cp命令显示进度条及完成百分比?

blogdaren 2011-05-24 抢沙发 3331人次

新建一个脚本 /usr/bin/mycp,脚本内容如下:

#!/bin/bash
SOURCE=$1 
TARGET=$2

#CP=./fack_cp 
CP=cp

$CP "$SOURCE" "$TARGET" & 
CPID=$!

isalive() 
{
    out=`ps -p $1 2> /dev/null`
    return $?
}

while [ 1 ]; do 
{
    SSIZE=`/bin/ls -l $SOURCE | awk "{print \\\$5}"`
    if [ -f $TARGET ]; then
        TSIZE=`/bin/ls -l $TARGET | awk "{print \\\$5}"`
    else
        TSIZE="0"
    fi
    PERCENT=`echo "scale=2; $TSIZE/$SSIZE*100" | bc -l`
    RATE=`echo "scale=0; 63*$PERCENT/100" | bc -l`
    BLUE="\\033[3;44m"
    NORMAIL="\\033[0;39m"

    BAR=$BLUE
    i=0
    while [ $i -le 62 ]; do
        [ $i = $RATE ] && BAR=$BAR"\\033[7;39m"
        BAR=$BAR" "
        let i=$i+1
    done
    BAR=$BAR$NORMAIL
    echo -en "\r$BAR ${PERCENT}%"
    if ! isalive "$CPID

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:Linux中如何让cp命令显示进度条及完成百分比?

发表评论:

您的昵称:
电子邮件:
个人主页: