Answers:
这是外壳程序的功能,而不是操作系统的功能。
因此,例如,在Solaris 10上ksh88
,将其作为shell:
% cat < /dev/tcp/localhost/22
ksh: /dev/tcp/localhost/22: cannot open
但是,如果我们切换到bash
:
% bash
bash-3.2$ cat < /dev/tcp/localhost/22
SSH-2.0-Sun_SSH_1.1.5
因此,bash
解释/dev/tcp
但ksh88没有。
在Solaris 11 ksh93
作为shell上:
% cat < /dev/tcp/localhost/22
SSH-2.0-Sun_SSH_2.2
因此,我们可以看到它非常依赖所使用的外壳。
/dev/tcp/...
不是其中之一)。
要添加,请从Bash Info节点添加:
Bash在重定向中使用多个文件名时会特别处理它们,如下表所述。如果运行Bash的操作系统提供了这些特殊文件,则bash将使用它们;否则,bash将使用它们。否则,它将使用下面描述的行为在内部模拟它们。
'/ dev / fd / FD'如果FD是有效的整数,则文件描述符FD被复制。
'/ dev / stdin'文件描述符0被复制。
'/ dev / stdout'复制了文件描述符1。
'/ dev / stderr'文件描述符2被复制。
'/ dev / tcp / HOST / PORT'如果HOST是有效的主机名或Internet地址,而PORT是整数端口号或服务名,则Bash尝试打开相应的TCP套接字。
'/ dev / udp / HOST / PORT'如果HOST是有效的主机名或Internet地址,而PORT是整数端口号或服务名,则Bash尝试打开相应的UDP套接字。