为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

长风秋雁 2019-07-04 10:19:09
如何向shell脚本添加进度条?当在*nix中使用bash或任何其他shell编写脚本时,当运行一个需要超过几秒钟的命令时,需要一个进度条。例如,复制一个大文件,打开一个大tar文件。您建议以何种方式向shell脚本添加进度条?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

您可以通过覆盖一行来实现这一点。使用\r回到行的开头而不写\n去终点站。

\n当你完成了推进这条线的任务。

使用echo -ne致:

  1. 非印刷

    \n

  2. 来识别转义序列,比如

    \r.

下面是一个演示:

echo -ne '#####                     (33%)\r'

sleep 1

echo -ne '#############             (66%)\r'

sleep 1

echo -ne '#######################   (100%)\r'

echo -ne '\n'

在下面的评论中,PUK提到了这个“失败”,如果您以一条长行开始,然后想写一条短行:在本例中,您需要覆盖长行的长度(例如,用空格)。


查看完整回答
反对 回复 2019-07-04
?
墨色风雨

TA贡献1853条经验 获得超6个赞

一些帖子展示了如何显示命令的进度。为了计算它,你需要看看你取得了多大的进步。在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脚本的早期版本出现在我的博客.


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 1915 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信