如何向shell脚本添加进度条?

如何向shell脚本添加进度条?

当在*nix中使用bash或任何其他shell编写脚本时,当运行一个需要超过几秒钟的命令时,需要一个进度条。

例如,复制一个大文件,打开一个大tar文件。

您建议以何种方式向shell脚本添加进度条?


长风秋雁
浏览 1916回答 3
3回答

白衣非少年

您可以通过覆盖一行来实现这一点。使用\r回到行的开头而不写\n去终点站。写\n当你完成了推进这条线的任务。使用echo -ne致:非印刷\n和来识别转义序列,比如\r.下面是一个演示:echo -ne '#####                     (33%)\r'sleep 1echo -ne '#############             (66%)\r'sleep 1echo -ne '#######################   (100%)\r'echo -ne '\n'在下面的评论中,PUK提到了这个“失败”,如果您以一条长行开始,然后想写一条短行:在本例中,您需要覆盖长行的长度(例如,用空格)。

墨色风雨

一些帖子展示了如何显示命令的进度。为了计算它,你需要看看你取得了多大的进步。在BSD系统上,一些命令,例如dd(1),接受SIGINFO信号,并将报告他们的进展。在linux系统上,一些命令将以类似的方式响应。SIGUSR1..如果该工具可用,则可以通过管道输入。dd若要监视处理的字节数,请执行以下操作。或者,您可以使用lsof以获取文件读取指针的偏移量,从而计算进度。我写了一个命令pMonitor,它显示处理指定进程或文件的进度。有了它,您可以做一些事情,如以下所示。$ pmonitor -c gzip/home/dds/data/mysql-2015-04-01.sql.gz 58.06%Linux和FreeBSD shell脚本的早期版本出现在我的博客.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python