Unix/linuxにはyes
コマンドがあり、基本的にy
をstdout
に無限に出力します。それのポイントは何ですか、そしてそれはどのように役立ちますか?
yesを使用すると、それ以外の場合は要求するコマンドに肯定(または否定、たとえばyes n)応答を送信して、コマンドを非対話的に実行できます。
Yesコマンドとheadコマンドを組み合わせて使用すると、テスト用の大容量ファイルを生成できます。
シングルプロセッサを搭載したシステムの場合、yesを使用するとプロセッサ使用率が100%になるため、システムが高負荷をどれだけ適切に処理できるかをテストすることもできます(マルチプロセッサシステムの場合、プロセスはプロセッサごとに実行する必要があります)。これは、たとえば、プロセッサが100%で稼働しているときにシステムの冷却システムが有効かどうかを調査するのに役立ちます。
2006年、yesコマンドは、ユーザーのMacBookが断続的シャットダウン症候群の影響を受けるかどうかをテストする手段であることで宣伝されました。 Mac OS Xでターミナルを介してyesコマンドを2回実行することにより、ユーザーはコンピューターのCPUを最大限に活用することができ、したがって、失敗が熱に関連していたかどうかを確認できました
ウィキペディア経由: http://en.wikipedia.org/wiki/Yes_(Unix)
これは物議をかもす意見かもしれませんが、私の見解では、コマンドラインツールのユーザーインターフェイスが不適切な場合の醜い修正です。
一部のコマンドラインツールは、プロンプトでユーザーに質問し、非対話的に実行するオプションがありません。たとえば、次のようなものを想像してください
$ frobnicate *
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
...
質問への回答は標準入力から取得されるため、この問題の簡単な修正は、yes
が正確に行う文字列y\n
を継続的に出力するアプリケーションを用意することです。 Unix pipes を使用して、この出力を特定のコマンドへの入力として送信できます。
$ yes | frobnicate
このアプローチの問題の1つは、yes
が答えている質問をチェックする可能性がないことです。
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
format device /dev/sda1? (y/n) y
frobnicate file c.txt? (y/n) y
利用可能な場合のより良い解決策は、rm -f
やapt-get -y
など、非対話的に実行する特定のオプションです。これにより、アプリケーションでより適切な動作をコーディングできます。
同じ名前の同じファイルがすべて含まれている複数の.Zipファイルを解凍するときにyes
を使用し、それぞれの場合(たとえば、使用許諾契約書)にどうするかを尋ねられます。
yes | for z in *.Zip; do unzip "$z"; done
ちょうどそれのための別の使用法に出くわした:ちょうどゼロとは異なるパターン(例えば:dd if=/dev/zero of=/dev/sdd bs=1M
)および 'yes'を使用:
yes UUUUUUUUUUUUU > /dev/sdd
同僚がこれを新しい方法で使用してパスワードを入力しました
yes password | passwd