7

如何将 bash 上执行的所有命令重定向到 /dev/null ?

很明显,对于一个命令,我们必须这样做:

command > /dev/null  2>&1

所有将进一步执行的命令怎么样?

4

3 回答 3

5

只需启动一个新的外壳:

bash >/dev/null 2>&1

现在你可以盲目地输入命令:) 如果你想离开那个模式类型:exit

但是盲目地输入命令通常不会是你想要的。所以我建议创建一个文本文件,例如script.sh,将您的命令放入其中:

command1 foo 
command2 bar

而不是使用执行它:

bash script.sh >/dev/null 2>&1

该脚本中所有命令的输出现在将重定向到 /dev/null

于 2013-05-22T15:44:43.807 回答
3

exec不带命令使用:

exec > /dev/null 2>&1

正如 hex2mgl 指出的那样,如果您在交互式外壳中执行此操作,您甚至不会再看到您的提示,因为外壳会将其打印到标准错误中。我认为这是针对脚本的,因为忽略交互式运行的命令的所有输出没有多大意义:)

于 2013-05-22T15:48:35.647 回答
0

对于脚本或其他实际目的,对命令进行分组是一个很好的解决方案。检查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.

于 2013-05-22T15:47:28.130 回答