yes $(yes yes) 有什么作用?

hei*_*991 24 command

想知道这个yes命令有什么用,我偶然发现了这个评论,并试图执行

yes $(yes yes)
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该只是打印出无限的 序列yes,但它什么都不输出,几秒钟后我的图形终端就会崩溃。(如果我在 tty1 上执行它,我会在一段时间后看到登录提示。)

这里发生了什么?

mic*_*has 25

运行应该已经足够了

 echo $(yes yes)
Run Code Online (Sandbox Code Playgroud)

$(...)直到它完成,并能捕获所有输出运行的内部命令。- 现在由于yes运行时间长并产生大量输出,bash 最终会耗尽内存并崩溃。


sou*_*edi 6

要查看关闭 shell 的错误消息,您需要运行子 shell。

$ sh
$ kill -9 $$
Killed
$

$ sh
$ yes $(yes yes)
sh: xrealloc: cannot allocate 18446744071562067968 bytes
$
Run Code Online (Sandbox Code Playgroud)

  • 1600 万千兆字节,是吗?戈登·摩尔潜伏在角落里,说道:“嗯……我的意思是,还没有完全……” (3认同)