在 bash 或 *NIX 中的任何其他 shell 中编写脚本时,在运行需要几秒钟以上的命令时,需要一个进度条。
例如,复制一个大文件,打开一个大 tar 文件。
您推荐哪些方式向 shell 脚本添加进度条?
您可以通过覆盖一行来实现这一点。用于\r返回行首而不写入\n终端。
\r
\n
完成后写下\n以推进该行。
用于echo -ne:
echo -ne
这是一个演示:
echo -ne '##### (33%)\r' sleep 1 echo -ne '############# (66%)\r' sleep 1 echo -ne '####################### (100%)\r' echo -ne '\n'
在下面的评论中,puk 提到如果您从长行开始然后想写短行,则此“失败”:在这种情况下,您需要覆盖长行的长度(例如,使用空格)。