【问题标题】:How can use invert grep after pipe?管道后如何使用反转grep?
【发布时间】:2015-11-11 15:56:02
【问题描述】:

我想列出文件服务器中的目录磁盘使用情况。 我也想忽略错误消息。这是我的命令:

du -sh * | grep -v "Permission denied" | sort -n

结果仍然包含权限被拒绝的行:

du: cannot access './myFile1/': Permission denied
du: cannot access './myFile2/': Permission denied
du: cannot access './myFile3/': Permission denied

我做错了什么?

【问题讨论】:

  • 有发送到stderr,也通过管道发送stderr。 2>&1

标签: bash grep


【解决方案1】:

这是因为“Permission denied”是通过标准错误发送的,而不是通过标准输出发送的。

如果您不想要此信息,只需将 stderr 重定向到 /dev/null 以使其静音:

du -sh * 2>/dev/null | sort -n

所有这些错误消息都会发生这种情况:

$ touch a
$ ls a asfasd
ls: cannot access asfasd: No such file or directory
a
$ ls a asfasd | grep cannot
ls: cannot access asfasd: No such file or directory
$ ls a asfasd 2>/dev/null  
a

【讨论】:

  • 是的,那个。我只是在打字,但速度很慢。 :-) 重定向比反向 grep 更好,因为您无需了解可能发生的各种错误。
猜你喜欢
  • 2021-09-10
  • 2014-07-09
  • 2011-01-20
  • 2020-05-09
  • 2020-07-22
  • 1970-01-01
  • 2014-06-03
  • 2012-08-16
  • 1970-01-01
相关资源
最近更新 更多