📅  最后修改于: 2023-12-03 14:59:30.277000             🧑  作者: Mango
在 Shell 脚本编写中,我们经常需要使用 echo
或 printf
等命令将结果输出到屏幕上。但是有些时候,我们可能会希望在输出时不产生任何声音。本文将介绍在 Bash 中如何实现静音输出。
Bash 中可以使用重定向符号 >
将输出重定向到某个文件或者设备中。我们可以将重定向符号的右边设为 /dev/null
,代表将输出重定向到“无”,即丢弃所有输出。
echo "本条消息不会被显示" > /dev/null
上述命令的输出将被重定向到 /dev/null
中,因此不会在屏幕上显示任何东西。在 Shell 中,/dev/null
就像黑洞一样,将一切输入都吞噬掉,不会有任何反应。
在 Bash 中,任何命令的输出都可以分为标准输出和标准错误输出两种类型。默认情况下,这两种输出都会被显示在屏幕上。
我们可以将这两种输出分别重定向到不同的设备中,实现静音输出。
# 重定向标准输出到 /dev/null
command >/dev/null
# 重定向标准错误输出到 /dev/null
command 2>/dev/null
# 同时重定向标准输出和标准错误输出到 /dev/null
command >/dev/null 2>&1
上述命令中,>
符号用于重定向标准输出,2>
符号用于重定向标准错误输出。2>&1
则表示将标准错误输出重定向到标准输出的位置,即将两种输出都重定向到 /dev/null
中。
除了使用重定向方式外,Bash 还提供了一种更方便的方式实现静音输出。我们可以使用 Shell 内置的变量 >/dev/null 2>&1
来将所有输出都静音。
#!/bin/bash
# 模拟需要输出的命令
echo "hello"
ls /
echo "world"
上述脚本中,包含了三个输出语句。如果我们想将所有输出都静音,可以将脚本改为:
#!/bin/bash
# 将所有输出都重定向到 /dev/null
exec >/dev/null 2>&1
# 模拟需要输出的命令
echo "hello"
ls /
echo "world"
exec >/dev/null 2>&1
命令将所有输出都重定向到 /dev/null
中,因此执行脚本时不会有任何输出。
本文介绍了在 Bash 中实现静音输出的三种方式:使用重定向符号将输出重定向到 /dev/null
、重定向标准输出和标准错误输出、以及使用 Shell 内置变量 >/dev/null 2>&1
。这些方法均能有效实现静音输出,可以帮助程序员更好地掌控输出信息。