stdout&一堆行的stderr到/ dev / null

时间:2014-04-09 22:19:29

标签: bash redirect stdout

很抱歉,如果之前已经提出问题,或者很简单。我google了一下,找不到答案,我是新手。

我通常使用&>/dev/null为每个命令重定向stdout和stderr。 在我的一个代码中,我必须为10个连续的命令执行此操作,这很难看:)

   Command 1 &>/dev/null
   Command 2 &>/dev/null
   .
   .
   .
   Command 10 &>/dev/null

无论如何都要同时为所有这些程序执行此程序;例如

   Command 1 
   Command 2 
   .
   .
   .
   Command 10 
   **Redirect all of them together**

谢谢:)

3 个答案:

答案 0 :(得分:4)

用大括号围住它们

{
  Command 1
  Command 2
  .
  .
  .
  Command 10
} &>/dev/null

答案 1 :(得分:1)

我最喜欢@ BroSlow的答案。另一种重定向stdout和stderr的方法

echo before

# turn off stdout and stderr
# (but save their currect locations first)
exec 3>&1 1>/dev/null
exec 4>&2 2>/dev/null

echo no
echo error >&2
echo output

# restore stdout and stderr
# and close the temp file descriptors
exec 1>&3 3>&-
exec 2>&4 4>&-

echo after
echo after error >&2

你会看到“之前”和“之后”的东西,但不会看到中间的输出。

答案 2 :(得分:0)

不确定命令后的数字是命令或文件描述符编号的参数吗?你能解释一下吗?

#!/usr/bin/env bash
for i in {1..10}
do
  command $i &>/dev/null
done