6

我在一些源代码中找到了以下 bash 命令。

exec 3>&1 > >(logger -t "OKOK")

它到底是什么意思?

据我所知,它将这些日志重定向到系统日志。

然而,什么是3>&1

我以前从未见过 3 的文件描述符。

4

2 回答 2

5

确实不寻常,但确实存在:

每个打开的文件都被分配一个文件描述符。stdin、stdout 和 stderr 的文件描述符分别为 0、1 和 2。为了打开其他文件,还有描述符 3 到 9。有时将这些附加文件描述符之一分配给 stdin、stdout 或 stderr 作为临时重复链接很有用。这简化了复杂重定向和重新洗牌后恢复正常的过程

在IO 重定向页面上了解更多信息。

于 2012-08-30T10:21:32.193 回答
0

从这一行开始,打印到 STDOUT 的所有内容都将由logger. 原来的 STDOUT 已保存在 fd3 中,因此您可以稍后(如果需要)恢复正常的 STDOUT。有关详细信息,请参阅高级 BASH 脚本指南

于 2012-08-30T10:39:58.160 回答