命令「:」有什麼作用?

命令「:」有什麼作用?

我正在閱讀一些命令解釋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 腳本中但不會被執行的方法。換句話說,一種評論。我沒有這方面的書面資料。

相關內容