如何压缩命令的错误信息?

Pet*_*ter 35 linux bash

如何禁止shell命令的错误消息?

例如,如果jpg目录中只有文件,则运行ls *.zip会显示错误消息:

   $ ls *.zip
   ls: cannot access '*.zip': No such file or directory
Run Code Online (Sandbox Code Playgroud)

有没有选项可以抑制此类错误消息?我想在bash脚本中使用此命令,但我想隐藏所有错误.

AJe*_*iss 54

大多数Unix命令(包括ls)会将常规输出写入stdout并将错误消息写入stderr,因此您可以使用bash重定向来丢弃错误消息,同时保留常规输出:

ls *.zip 2> /dev/null
Run Code Online (Sandbox Code Playgroud)


Bri*_*new 9

$ ls *.zip 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

将stderr上的任何错误消息重定向到/ dev/null(即你不会看到它们)

请注意,返回值(给定$?)仍将反映发生错误.


小智 7

要抑制错误消息并返回退出状态,请附加|| true. 例如:

$ ls *.zip && echo hello
ls: cannot access *.zip: No such file or directory
$ ls *.zip 2>/dev/null && echo hello
$ ls *.zip 2>/dev/null || true && echo hello
hello

$ touch x.zip
$ ls *.zip 2>/dev/null || true && echo hello
x.zip
hello
Run Code Online (Sandbox Code Playgroud)

  • @gone 不,`true || ls` 将首先运行 `true`,对结果感到满意,甚至不会考虑运行 `ls` (4认同)