Answers:
只需添加@ jw013的好答案,它可能有助于认识到它与
{
cat -n
cat -n
} < infile
< file的缩写0< file,即使用文件描述符0而不是3。
为了使事情变得混乱,这个版本:
exec 3< infile
cat -n /dev/fd/3
cat -n /dev/fd/3
行为不同取决于你在运行它的操作系统和对类型的infile(常规文件VS管VS设备...)
在Solaris和大多数商业Unices上,an 大致open("/dev/fd/3")等于a dup(3)(因此< /dev/fd/3与大约相同<&3),而在Linux上,对于常规文件,它/dev/fd/3被实现为原始文件的符号链接,因此open("/dev/fd/3")从头开始重新打开它(并可能与fd 3的标志不同)。