想知道这个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 最终会耗尽内存并崩溃。
要查看关闭 shell 的错误消息,您需要运行子 shell。
$ sh
$ kill -9 $$
Killed
$
$ sh
$ yes $(yes yes)
sh: xrealloc: cannot allocate 18446744071562067968 bytes
$
Run Code Online (Sandbox Code Playgroud)