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

Kit*_* Ho 4 linux bash

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

exec 3>&1 > >(logger -t "OKOK")
Run Code Online (Sandbox Code Playgroud)

它究竟意味着什么?

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

但是,是什么3>&1

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

fdu*_*uff 5

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

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

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