linux cp 进度信息,Linux cp_显示进度

#!/bin/bash

PARAM_LIST=$*

PARAM_NUM=$#

TOTAL_SIZE=0

for((i = 0; i 

do

[ ! -r $1 ] && echo "Cannot read $1." && exit 1

SIZE=`du -s $1 | awk '{print $1}'`

((TOTAL_SIZE = TOTAL_SIZE + SIZE))

shift

done

TARGET=$1

START_TIME=`date +%s.%N`

cp -a $PARAM_LIST &

echo -ne "Total size: $TOTAL_SIZE KB - %"

while true

do

LEN_PERCENT=${#PERCENT}

for((i = 0; i <= LEN_PERCENT; i++))

do

echo -ne "\b"

done

COPIED=`du -s $TARGET | awk '{print $1}'`

((PERCENT = COPIED * 100 / TOTAL_SIZE))

echo -ne "$PERCENT%"

((PERCENT == 100)) && END_TIME=`date +%s.%N` && break

done

MB_SECOND=`echo $TOTAL_SIZE/1024/\($END_TIME-$START_TIME\)|bc`

echo " - SPEED: $MB_SECOND MB/s"

+++++++++++++++++++++++++++++++++++++++++++++++++++++

首先将如下脚本放置在/usr/bin下,

要使用cp指令�,以大写CP指令,代替小写cp. (当然你可以自己修改脚本定制适合自己的命令)

脚本�容:

#!/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"; then echo -en "\n"; exit; fi    sleep 1}done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值