function adb_push {
# NOTE: 65544 is the max size adb seems to transfer in one go
TOTALSIZE=$(ls -Rl "$1" | awk '{ sum += sprintf("%.0f\n", ($5 / 65544)+0.5) } END { print sum }')
exp=$(($TOTALSIZE * 7)) # 7 bytes for every line we print - not really accurate if there's a lot of small files :(
# start bar in the background
ADB_TRACE=adb adb push "$1" "$2" 2>&1 | unbuffer -p awk '/DATA/ { split($3,a,"="); print a[2] }' | unbuffer -p cut -d":" -s -f1 | unbuffer -p bar -of /dev/null -s $exp
echo # Add a newline after the progressbar.
}
4条答案
按热度按时间7fyelxc51#
看起来最新的
adb
有进度支持。然而,上面的答案也适用于没有进度选项的
adb install
。我修改了第一个答案的脚本,使其工作方式如下:在
PATH
中的某个位置创建adb-install.sh
,并运行adb-install.sh <apk to install>
而不是adb install -f <apk to install>
fsi0uk1n2#
现在我有一个小小的抨击:
它可以工作,它显示一个从0到100的进度条,这很不错。但是,如果你处理很多小文件,它就不正确了,更糟糕的是,“bar”显示的字节/秒和总字节数不正确。
我要求你改进我的剧本这应该不难!)
xbp102n03#
这是我的解决方案,它将显示一个简单的进度条和当前的数字进度
用途
progress_adb.sh
在Ubuntu 14.04上进行测试
目录支援
屏幕大小改变时进度条大小改变
7jmck4yq4#
我可以给予你一个建议:
返回任何命令的日志,例如copy命令,如下所示:
在这里,您可以使用ls -a获得之前的总字节长度,然后使用grep或awk解析adb的输出,递增内部计数器并将当前进度发送到bar实用程序。
成功后,请在此处发布脚本。