В настоящее время у меня есть небольшой кусочек bash:
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.
}
Он работает несколько, показывает индикатор выполнения, идущий от 0 до 100, что приятно.Тем не менее, это не будет правильно, если вы создадите много маленьких файлов, и, что еще хуже, байты / с и общее количество байтов, показанных 'bar', неверны.
Я призываю вас улучшить мойсценарий;это не должно быть сложно!;)