【问题标题】:How to avoid unzip "archives were successfully processed." output如何避免解压缩“存档已成功处理”。输出
【发布时间】:2018-04-01 12:35:58
【问题描述】:

在 bash 中使用 unzip 命令时,会在终端中创建大量输出。使用-q 选项或-qq(“= even quieter” - UNZIP MAN)可以抑制某些输出。但是,总是在过程结束时,我仍然会收到类似10 archives were successfully processed 的消息(并且前面有一个空行)。

这条消息似乎来自 STDERR,因为当我将 STDOUT 输出到类似文件时

unzip -qq files2zip.zip 1> stdoutput.txt

它仍然输出到终端而不是文件。当我将 STDERR(即2> stderror.txt)输出到文件时,它确实会输出到文件中。

在我的脚本中,我希望在屏幕上显示错误,但我不希望出现此消息。那么有什么方法可以在不丢失错误输出的情况下抑制此消息(我不想将 stderr 输出到文件中)?

【问题讨论】:

  • 你有什么版本的unzip? Ubuntu 发行版上的 UnZip 6.00 by Debian 和 Red Hat 上的 UnZip 6.00 by Info-ZIP 都不会打印此消息。
  • man unzip 告诉我它是 v6.0。我在 Ubuntu 上,我想我只是使用 apt-get 安装了它(如果我没记错的话)。

标签: bash stdout unzip stderr


【解决方案1】:

你可以使用 proc sub

unzip -qq files2zip.zip 2> >(grep -v "were successfully processed")

【讨论】:

  • 谢谢,确实可以。我尝试了类似的东西,但没有得到正确的管道。那么第二个> 是干什么用的?有没有办法用 grep 去掉消息上方的空行?
  • @LuKas 2> 打开 STDOUT 文件描述符到后面的内容,>() 允许将此数据流发送到进程,就好像它是一个文件一样。见here
【解决方案2】:

除了标准错误和标准输出之外,没有第三个输出。因此,除了前一行之外,您可以做的最好的事情是从标准错误中过滤掉不需要的消息。请注意,这假设解压缩的特别结构化输出,这可能很容易中断。像这样的:

unzip file.zip 2> >(head --lines=-2)

【讨论】:

  • 但我确实希望在终端中显示(真正的)错误。
猜你喜欢
  • 2022-12-21
  • 2022-10-20
  • 1970-01-01
  • 2021-11-30
  • 2011-01-20
  • 1970-01-01
  • 2020-05-24
  • 2014-10-08
相关资源
最近更新 更多