当前位置:   article > 正文

tar解压过程中在console显示简易进度条_tar 解压显示百分比

tar 解压显示百分比

本脚本用于在tar命令解压文件过程中,在console中显示简易的进度条,是根据解压出的文件总的大小和当前已经解压的文件大小来进行进度的显示,程序比较简易,普适性不是太强,很多变量可以以参数形式传递,这里不加优化,仅供作为笔记和参考而已

  1. #!/bin/sh
  2. #显示进度的总格数
  3. total_process=100
  4. #当前进度格数
  5. current_process=0
  6. #百分比
  7. percent=0
  8. #文件大小
  9. total_size=455000
  10. #当前文件大小
  11. current_size=0
  12. #用于记录上一次的进度
  13. old_process=0
  14. print_progress ()
  15. {
  16. incomplete_process=$((${total_process}-${current_process}))
  17. if [ ${incomplete_process} -lt 0 ]; then
  18. incomplete_process=0
  19. current_process=${total_process}
  20. percent=100
  21. fi
  22. #输出已升级部分,用>表示
  23. printf "\rProgress:[%.${current_process}d" | tr '0' '>'
  24. #输出未升级部分,用' '表示
  25. printf "%.${incomplete_process}d]" | tr '0' ' '
  26. #输出当前百分比
  27. printf "${percent}%%"
  28. }
  29. display ()
  30. {
  31. while true
  32. do
  33. #统计当前已解压文件大小
  34. current_size=$(du -s target | awk '{printf $1}')
  35. percent=$((${current_size}/(${total_size}/100)))
  36. # echo ${percent}
  37. current_process=$((${percent}\*${total_process}/100))
  38. # echo ${current_process}
  39. if [ ${current_process} -eq 0 ]; then
  40. print_progress
  41. elif [ ${current_process} -ne ${old_process} ]; then
  42. print_progress
  43. old_progress=${current_process}
  44. fi
  45. #以tar进程结束来结束本进程
  46. ps -ef | grep "tar jxvf" | grep -v "grep" > /dev/null
  47. if [ $? -ne 0 ]; then
  48. echo "Update Over"
  49. break
  50. fi
  51. done
  52. }
  53. tar jxvf file.tar.gz -C ./target > /dev/null &
  54. display


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/334981
推荐阅读
相关标签
  

闽ICP备14008679号