![":"コマンドは何をしますか? [コピー]](https://linux33.com/image/97331/%22%3A%22%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AF%E4%BD%95%E3%82%92%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
いくつかのコマンドを読んでいます。explainshell.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
この場合、:
コマンドではなく、定義した関数の名前です。その命令:(){ :|:& };:
は「フォーク爆弾」と呼ばれるものです。これは、という関数を定義し、その関数が を呼び出し、出力をにパイピングし、2番目のインスタンスを背景として配置することで構成されていることをシェルに:
知らせる一連のコマンドです。最後のシーケンスでは、関数定義を終了して呼び出します。呼び出すたびに、シェルが作成する速度と同じくらい早く2つの追加コピーが実行されます。これにより、すべてのシステムリソースが使い果たされ、最終的にプロセス制限が設定されていない場合、システムの速度が遅くなったりクラッシュしたりします。:
:
;:
:
:
答え2
もしあなたならいいえredefine:
の基本的な意味はタスクなしです。次のコマンドを使用してその文書を表示できますhelp :
% help :
:: :
No effect; the command does nothing. A zero exit code is returned.
伝説によると、ずっと前、インターネットの初期にはこれが実行されず、シェルスクリプトにテキストを入れる方法だったそうです。つまり、コメントです。私はこれについて書面情報を持っていません。