找不到/ dev / tcp


21

当我尝试运行以下命令时:

echo -e "GET / HTTP/1.1\n\n" | /dev/tcp/74.125.225.19/80

我收到以下错误消息:

bash: /dev/tcp/74.125.225.19/80: No such file or directory

以下命令可以正常工作,因此问题涉及到我的使用方式/dev/tcp

echo -e "GET / HTTP/1.1\n\n" | nc 74.125.225.19 80

我在Ubuntu 13.04中,因此该功能应该在我的系统上。我究竟做错了什么?/dev/tcp正确使用的规则是什么?


Answers:


34

您必须在重定向中使用它:

Bash专门用于重定向时会处理多个文件名,如下表所示:

...

/ dev / tcp / host / port

如果host是有效的主机名或Internet地址,而port是整数端口号或服务名,则Bash尝试打开相应的TCP套接字。

所以:

printf "GET / HTTP/1.1\n\n" > /dev/tcp/74.125.225.19/80

是正确的使用方式。

/dev/tcp/74.125.225.19/80在管道中使用时,由于该文件不存在,因此bash尝试运行名为的命令/dev/tcp/74.125.225.19/80并报告错误。


在版本2.04中添加了处理/dev/tcp/host/port/dev/udp/host/port重定向功能bash

您需要bash使用--enable-net-redirectionsoption 进行编译。


我知道,因此/dev/tcp被视为“文件”而不是脚本。
IQAndreas 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.