命令“:”有什么作用?

命令“:”有什么作用?

我正在阅读一些命令解释shell.com并找到一个有趣的命令:

:(){ :|:& };:

目前我正在使用OSX它,我能找到的唯一参考是在builtin手册页 ( man builtin) 上,但这没有帮助,因为它只说明它是外部命令、cshell 还是 sh 命令。

       Command       External    csh(1)    sh(1)
       !             No          No        Yes
       %             No          Yes       No
       .             No          No        Yes
       :             No          Yes       Yes

那么,执行有什么:作用呢?

在终端上我没有输出:

$ :
$

答案1

在本例中,:它不是命令,而是您定义的函数的名称。该命令:(){ :|:& };:就是所谓的“forkbomb” - 它是一个命令序列,定义了一个名为 的函数:,告诉 shell 该函数包括调用:、将输出通过管道传输到 的另一个实例:,以及将第二个实例置于后台。最终;:序列终止函数的定义,然后调用它。每次调用都会:导致另外两个副本:运行,其速度与 shell 生成它们的速度一样快。
这将导致耗尽所有系统资源,如果没有设置进程限制,最终会导致系统变慢或崩溃。

答案2

如果你redefine :,它的默认含义是无操作。您可以使用以下命令查看其文档help :

% help :
:: :
    No effect; the command does nothing.  A zero exit code is returned.

传说很久以前,在互联网刚刚兴起的时候,这是一种将文本放入 shell 脚本中但不会被执行的方法。换句话说,一种评论。我没有这方面的书面资料。

相关内容