有时,在 shell 脚本中,我会看到类似
echo yes 1>&5
我知道它会重定向到某个地方,但我想知道更多细节。
更具体地说,1、>、&、5 是什么意思?
如果您能逐个解释的话我将非常感激。
或者任何可以解释的指针。
答案1
在网上搜索了一下后,我发现了这一点。
n>&m means redirect FD n to the same places as FD m. Eg, 2>&1 means send STDERR to the same place that STDOUT is going to.
STDIN is FD 0, while STDOUT is FD 1, and STDERR is FD 2
參考文獻:http://www.linuxsa.org.au/tips/io-redirection.html
有时会使用文件描述符 5,因为它是编号最小的文件描述符,从未真正用于其他用途(FD 4/dev/tty
在某些非常古老的 Unix 上,而 FD 3 在其他 Unix 中有各种非标准的系统特定用途)。尽管 3 和 4 在过去 20 多年中都没有使用过,但您注意到 FD 5 出现可能只是巧合(或传统)。
至于使用它的原因。通过使用文件描述符,脚本编写者无需实际写入文件,这可以节省他的时间并使脚本更简洁(不会意外遗留文件)。此外,它还允许您通过将流重定向到不同位置等来做所有很酷的事情。