所以我想了解有关文件描述符及其重定向的更多信息。目前我正在探索一种边缘情况1>&0
,但我不太明白那里发生了什么。
$ echo hello 1>&0
hello
因此,在这种情况下,hello
即使我将标准输出重定向到标准输入,也会打印出来。我预计不会打印任何内容。
你能解释一下为什么hello
要打印吗?
答案1
描述符0
和1
都以读+写模式连接到您的终端,因此此重定向不会改变任何内容。在 Linux 上,您可以在 下找到所有当前描述符/proc/self/fd
,例如在我的例子中:
$ ls -l /proc/self/fd
lrwx------ 1 jimmij jimmij 64 Jan 3 17:42 0 -> /dev/pts/2
lrwx------ 1 jimmij jimmij 64 Jan 3 17:42 1 -> /dev/pts/2
lrwx------ 1 jimmij jimmij 64 Jan 3 17:42 2 -> /dev/pts/2
lr-x------ 1 jimmij jimmij 64 Jan 3 17:42 3 -> /proc/5263/fd
正如您所看到的0
,1
和2
都链接到伪终端/dev/pts/2
。