如何禁止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)
$ 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)