如何抑制命令的输出



我想在我的shell脚本中运行一些命令

示例:

#! / bin / bash]
rm / home / user
return: rm: can not lstat `/ home / user ': No such file or directory

我会把命令放在不可见的不返回!

为了抑制命令的标准输出,传统方法是使用somecommand arg1 arg2 > /dev/null将输出发送到NULL设备。为了抑制错误输出,可以将标准错误重定向到同一位置:somecommand arg1 arg1 > /dev/null 2>&1

您的直接错误来自路径中的不正确间距,应该是路径中没有空格的rm /home/whatever,假设您在DIR名称中没有实际空间(在这种情况下,您将需要正确引用或逃脱)

关于抑制输出。在这里重定向stdout有点奇怪。

$ touch test.txt
$ rm test.txt > /dev/null 2>&1
^ interactive rm is actually asking if you really want to delete the file here, but not printing the message

如果您只想收到错误消息,只需将stderr(文件描述符2)重定向到/dev/null

$ rm test.txt 2> /dev/null

$ rm test.txt 2>&-

如果您希望它不提示do you really want to delete键入消息,请使用force flag -f

$ rm -f test.txt 2> /dev/null

$ rm -f test.txt 2>&-

要删除一个目录,您要么需要rmdir,如果它是空的,则使用递归-r标志,但是,这将擦除所有内容/home/home/用户,因此您真的需要在这里小心。

除非您以--verbose模式运行它,否则我无法想到它需要关闭rm命令的stdout。

也从Bash 4开始,如果您想将Stdout和Stderr重定向到同一位置,则只需使用rm whatever &> /dev/null或类似的东西

相关内容

  • 没有找到相关文章

最新更新