如何在Bash脚本中使所有命令的输出静音?

时间:2020-10-12 21:25:21

标签: bash

我的Bash脚本调用了许多命令,其中大多数命令都会输出一些内容。我想全部让他们沉默。现在,我将在大多数命令调用的末尾添加&>/dev/null,如下所示:

some_command &>/dev/null
another_command &>/dev/null
command3 &>/dev/null

有些命令仍然带有--quiet之类的标志,我仍然需要为所有这些标志制定工作,而我宁愿默认使所有这些标志静音 >,并且仅允许显式输出,例如通过echo

2 个答案:

答案 0 :(得分:16)

您可以使用exec命令来重定向脚本其余部分的所有内容。

您可以使用3>&1将旧的stdout流保存在FD 3上,因此,如果要查看输出,可以将输出重定向到该输出。

exec 3>&1 &>/dev/null
some_command
another_command
command_you_want_to_see >&3
command3

答案 1 :(得分:0)

您可以创建一个函数:

run_cmd_silent () {
    # echo "Running: ${1}"
    ${1} > /dev/null 2>&1
}

您可以删除注释行以打印您运行的实际命令。

现在您可以像这样运行您的命令,例如:

run_cmd_silent "git clone git@github.com:prestodb/presto.git"