我正在构建一个 shell 脚本来自动配置具有最佳设置的特定计算机。我想隐藏此脚本中除回显输出之外的所有输出。是否可以?
答案1
开始你的脚本:
exec 3>&1 1>/dev/null 2>&1
这会将 stdout 的原始文件描述符保存到 &3,然后将 stdout 和 stderr 重定向到 /dev/null。每当您想要打印某些内容时,请将其输出重定向到 &3,例如:
echo "This message won't be output"
echo "But this one will" >&3
如果你想隐藏这个细节,你可以定义一个与 fd 3 相呼应的函数:
say() {
echo >&3 "$@"
}
say "This goes to the log"
答案2
/dev/null
您可以通过添加将标准输出重定向到
1>/dev/null
在将产生输出的脚本的每一行的末尾。
您可以通过添加相同的方式重定向错误
2>/dev/null
大多数命令还可以选择关闭控制台的正常输出,例如-q
类似的东西。检查您使用的命令的联机帮助页。