如何将在bash上执行的所有命令redirect到/ dev / null?
很明显,对于我们必须做的一个命令:
command > /dev/null 2>&1
如何进一步执行所有命令?
只需启动一个新的shell:
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指出的那样,如果你在一个交互式shell中这样做,你甚至不会再看到你的提示,因为shell会打印到标准错误。 我认为这是用于脚本,因为忽略交互式运行命令的所有输出没有太大的意义:)
对于脚本或其他实际目的,将命令分组是一个很好的解决方案。 检查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.