在 linux 的命令行输出进度条

linux 有些个命令比如 wget 会显示一个进度条。终于知道了一个办法弄出这个效果。其实也很简单:
for ($i = 0; $i <= 50; $i++) {
  printf(“progress: [%-50s] %d%%r”, str_repeat(‘#’,$i), $i * 2);
  usleep(1000 * 100);
}
echo “n”;
echo “Done.n”;

每次用 r 结尾就是了。n 是 new line,r 是 return 。也就是回到行首。

bash 版:

b=”
for ((i=0;$i<=100;i+=2))
do
  printf “progress: [%-50s] %d%%r” $b $i
  sleep 0.1
  b+=’#’
done
echo

9 thoughts on “在 linux 的命令行输出进度条

  1. 花开

    难道是版本的问题?
    b+=’#’
    这种写法,bash解释不了啊。
    即使是
    b=0
    然后
    b+=1
    也还是解释不了。必须写成
    let b+=1
    或者
    ((b+=1))

    Reply
  2. surfchen

    top可没这么简单。像iptraf,vim更是复杂,有个叫ncurses的lib专门做这个事情的。
    你要像top那样清屏,也不简单阿,clear不会清除屏幕的buffer,只是把整个屏幕往下拉而已。

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.