如何将 bash 上执行的所有命令重定向到 /dev/null ?
很明显,对于一个命令,我们必须这样做:
command > /dev/null 2>&1
所有将进一步执行的命令怎么样?
只需启动一个新的外壳:
bash >/dev/null 2>&1
现在你可以盲目地输入命令:) 如果你想离开那个模式类型:exit
但是盲目地输入命令通常不会是你想要的。所以我建议创建一个文本文件,例如script.sh
,将您的命令放入其中:
command1 foo
command2 bar
而不是使用执行它:
bash script.sh >/dev/null 2>&1
该脚本中所有命令的输出现在将重定向到 /dev/null
exec
不带命令使用:
exec > /dev/null 2>&1
正如 hex2mgl 指出的那样,如果您在交互式外壳中执行此操作,您甚至不会再看到您的提示,因为外壳会将其打印到标准错误中。我认为这是针对脚本的,因为忽略交互式运行的命令的所有输出没有多大意义:)
对于脚本或其他实际目的,对命令进行分组是一个很好的解决方案。检查http://www.gnu.org/software/bash/manual/html_node/Compound-Commands.html 它具体说Any redirections (see Redirections) associated with a compound command apply to all commands within that compound command unless explicitly overridden.