【问题标题】:Avoid writing progress bars to file in linux避免在linux中将进度条写入文件
【发布时间】:2016-01-04 14:48:13
【问题描述】:

我有一个打印输出的进程,但这个输出还包括加载条。

我想将此输出写入文件并显示此输出。

通常我可以这样做:

./my_process.sh | tee -a my_log_file.txt

./my_process.sh >> my_log_file.txt
tail -f my_log_file.txt

这会将所有内容打印到我的终端,但它也会将所有内容打印到日志文件,包括进度条的每个步骤!

我想从打印到日志文件中排除进度条迭代。

出于我的目的,任何带有回车的行都可以从日志文件中排除。如何排除回车行附加到日志文件,同时仍将它们打印到终端上的标准输出?

【问题讨论】:

  • @mgoldwasser:您应该编辑您的问题以告知您的脚本正在调用的其他程序,或者甚至提供您的脚本的代码。
  • 我猜这些条来自wget(或一些ftp客户端),这是相关的。 IIRC,有一些选项可以禁用wget 中的进度条;所以我相信你应该告诉你的脚本调用的是哪个程序
  • @basile-starynkevitch 同样,禁用进度条也行不通,因为我仍在尝试将它们写入终端。

标签: linux bash stdout


【解决方案1】:

您可以在登录前过滤 tee

例如

$ echo -e "progress_ignore\r\nlog this\nprogress_ignore\r" | tee >(awk '!/\r/' >> output.log)
progress_ignore
log this
progress_ignore

$ cat output.log
log this

【讨论】:

  • 谢谢!值得一提的是,如果有人在输出文件中需要 stderr,则以下更改可能会起作用:echo -e "progress_ignore\r\nlog this\nprogress_ignore\r" 2>&1 | tee >(awk '!/\r/' >> output.log)
  • 我怎么能nohup这个?
  • 对于长时间运行的程序,让 awk 交互帮助了我。同样在我的情况下,退格键正在处理进度条:$RUN |& tee >(awk -W interactive "!/\b/" >> output.log)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
  • 2015-03-25
  • 1970-01-01
相关资源
最近更新 更多