这个shell命令是什么意思“exec 3>& 1>>(logger -t”OKOK“)”

时间:2012-08-30 10:17:05

标签: linux bash

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

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

它究竟意味着什么?

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

然而,什么是3>&1

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

2 个答案:

答案 0 :(得分:5)

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

  

为每个打开的文件分配一个文件描述符。 stdin,stdout和stderr的文件描述符分别为0,1和2。 要打开其他文件,仍会有描述符3到9 。将这些附加文件描述符之一分配给stdin,stdout或stderr作为临时重复链接有时很有用。这简化了复杂重定向和重新排列后恢复正常的方法

了解有关IO redirection page的更多信息。

答案 1 :(得分:0)

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