我想在我的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
或类似的东西