標準出力に「y」という文字列を出力するシンプルなUNIXコマンド「yes」。
問い合わせに対し、常にデフォルト値で応えたい時に使うことができる便利なコマンドですが、大胆な名前の割にコマンド自体の知名度は低い方かもしれません。
本日紹介するGitHubリポジトリ「yes」はそのyesコマンドにフォーカスを当てるもの。
リポジトリにはCやC++をはじめ、java、go、ruby、swiftなど30もの言語でyesを実装したソースコードが含まれているほか、yesコマンドに関する基本知識や危険な使用法(?)があわせて掲載されています。
これによるとyesコマンドは、標準出力に「y」を無限に出力する機能を持ち、結果をパイプで他のコマンドに渡すことで、問い合わせに対して「はい」を選ばせることができるとのこと。
例えばインタラクティブにファイル削除する「rm -i」コマンドと連結すれば、問い合わせなしでファイルを削除することができるのです。
yes | rm -i *.png
最近は強制実行を意味する「-f」オプションを有するココマンドが多いのですが、「-f」オプションを持っていないコマンドと組み合わせると便利な場合がありそうです。
また危険な使用例としては「リダイレクト」や「ネスト」があげられています。
# 巨大なファイルを作成してしまう $ yes >> yes.txt # バッククォートはコマンドの実行結果に展開される…ということは? $ yes `yes`
実験する場合は作業に差し障りのない環境で行うことをお勧めします。
yesに関する知識を深めたい方は参照してみてはいかがでしょうか。