📜  bash 静音输出 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:59:30.277000             🧑  作者: Mango

Bash 静音输出 - Shell-Bash

在 Shell 脚本编写中,我们经常需要使用 echoprintf 等命令将结果输出到屏幕上。但是有些时候,我们可能会希望在输出时不产生任何声音。本文将介绍在 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 中。

使用 Shell 内置变量

除了使用重定向方式外,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。这些方法均能有效实现静音输出,可以帮助程序员更好地掌控输出信息。