我的Bash脚本调用了许多命令,其中大多数命令都会输出一些内容。我想全部让他们沉默。现在,我将在大多数命令调用的末尾添加&>/dev/null
,如下所示:
some_command &>/dev/null
another_command &>/dev/null
command3 &>/dev/null
有些命令仍然带有--quiet
之类的标志,我仍然需要为所有这些标志制定工作,而我宁愿默认使所有这些标志静音 >,并且仅允许显式输出,例如通过echo
。
答案 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"