stdout / stderr重定向无法防止/ dev / tcp / host / port重定向错误

萨布丽娜

这是正常的重定向。

user@linux:~$ randomcommand
randomcommand: command not found
user@linux:~$ 

2>

user@linux:~$ randomcommand 2> /dev/null
user@linux:~$ 

&>

user@linux:~$ randomcommand &> /dev/null
user@linux:~$ 

但是,当我尝试使用如下所示的不同命令执行相同操作时,它不起作用。

&>

user@linux:~$ > /dev/tcp/127.0.0.1/22 &> /dev/null && echo open || echo closed
bash: connect: Connection refused
bash: /dev/tcp/127.0.0.1/22: Connection refused
closed
user@linux:~$ 

2>

user@linux:~$ > /dev/tcp/127.0.0.1/22 2> /dev/null && echo open || echo closed
bash: connect: Connection refused
bash: /dev/tcp/127.0.0.1/22: Connection refused
closed
user@linux:~$ 

这些语法有什么问题以及如何解决?

斯蒂芬·查泽拉斯(Stephane Chazelas)

bash处理> /dev/tcp/localhost/22重定向时输出错误,并且此时stderr尚未被重定向。只需更改这两个重定向的顺序即可:

if 2> /dev/null > /dev/tcp/127.0.0.1/22; then
  echo open
else
  echo closed
fi

请注意,这些/dev/tcp/host/port不是真实文件。bash(或ksh该功能的来源)检测到您正在尝试重定向到那些特殊文件的事实(您会注意到,如果将其更改为它/dev/./tcp/dev//tcp不再起作用),而不是打开这些文件,而是创建一个TCP套接字并尝试connect()在主机和端口上使用它。connect失败的时候bash报告一个错误。

zshztcpzsh/net/tcp模块中有一个内置命令来代替它,这使它更加直观,并且还允许服务器端连接之类的更多功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

静默/ dev / tcp / host / port重定向错误

来自分类Dev

将stdout / stderr从child_process重定向到/ dev / null或类似的东西

来自分类Dev

如何将部分stderr和stdout重定向到/ dev / null

来自分类Dev

使用/ bin / sh将stderr和stdout都重定向到/ dev / null

来自分类Dev

Bash重定向不适用于容器创建:“无法创建/ dev / tcp / <ip> / <port>:不存在的目录”

来自分类Dev

bash重定向到/ dev / stdout:不是目录

来自分类Dev

无法将stdout / stderr重定向到日志文件

来自分类Dev

无法在后台重定向stdout和stderr

来自分类Dev

重定向命令后重定向stdout和stderr

来自分类Dev

重定向命令后重定向stdout和stderr

来自分类Dev

nc的STDOUT和STDERR重定向

来自分类Dev

使用变量的Stdout和Stderr重定向

来自分类Dev

动态更改STDOUT和STDERR重定向

来自分类Dev

重定向特定行的stdout和stderr

来自分类Dev

nc的STDOUT和STDERR重定向

来自分类Dev

永久将stderr重定向到stdout

来自分类Dev

当stdout和stderr都重定向到/ dev / null时,GnuPG如何输出到控制台

来自分类Dev

重定向cronjobs的STDOUT

来自分类Dev

将stdout和stderr重定向到文件,并将stderr重定向到stdout

来自分类Dev

将stdout和stderr重定向到文件,并将stderr重定向到stdout

来自分类Dev

将错误重定向到/ dev / null

来自分类Dev

bash:将stderr重定向到文件,将stdout + stderr重定向到屏幕

来自分类Dev

Git克隆:将stderr重定向到stdout,但保持将错误写入stderr

来自分类Dev

/ dev / tcp / host / port,/ dev / udp / host / port这是什么内核模块?

来自分类Dev

将stdout和stderr一起重定向VS重定向stdout,然后将stderr重定向到stdout的文件

来自分类Dev

将子进程的stdout / stderr重定向到文件

来自分类Dev

在C ++中将stdout和stderr重定向到单个文件

来自分类Dev

重定向STDERR和STDOUT以使用nohup登录

来自分类Dev

在Python的子进程/ Popen中将stdout重定向到stderr

Related 相关文章

  1. 1

    静默/ dev / tcp / host / port重定向错误

  2. 2

    将stdout / stderr从child_process重定向到/ dev / null或类似的东西

  3. 3

    如何将部分stderr和stdout重定向到/ dev / null

  4. 4

    使用/ bin / sh将stderr和stdout都重定向到/ dev / null

  5. 5

    Bash重定向不适用于容器创建:“无法创建/ dev / tcp / <ip> / <port>:不存在的目录”

  6. 6

    bash重定向到/ dev / stdout:不是目录

  7. 7

    无法将stdout / stderr重定向到日志文件

  8. 8

    无法在后台重定向stdout和stderr

  9. 9

    重定向命令后重定向stdout和stderr

  10. 10

    重定向命令后重定向stdout和stderr

  11. 11

    nc的STDOUT和STDERR重定向

  12. 12

    使用变量的Stdout和Stderr重定向

  13. 13

    动态更改STDOUT和STDERR重定向

  14. 14

    重定向特定行的stdout和stderr

  15. 15

    nc的STDOUT和STDERR重定向

  16. 16

    永久将stderr重定向到stdout

  17. 17

    当stdout和stderr都重定向到/ dev / null时,GnuPG如何输出到控制台

  18. 18

    重定向cronjobs的STDOUT

  19. 19

    将stdout和stderr重定向到文件,并将stderr重定向到stdout

  20. 20

    将stdout和stderr重定向到文件,并将stderr重定向到stdout

  21. 21

    将错误重定向到/ dev / null

  22. 22

    bash:将stderr重定向到文件,将stdout + stderr重定向到屏幕

  23. 23

    Git克隆:将stderr重定向到stdout,但保持将错误写入stderr

  24. 24

    / dev / tcp / host / port,/ dev / udp / host / port这是什么内核模块?

  25. 25

    将stdout和stderr一起重定向VS重定向stdout,然后将stderr重定向到stdout的文件

  26. 26

    将子进程的stdout / stderr重定向到文件

  27. 27

    在C ++中将stdout和stderr重定向到单个文件

  28. 28

    重定向STDERR和STDOUT以使用nohup登录

  29. 29

    在Python的子进程/ Popen中将stdout重定向到stderr

热门标签

归档