試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

yesコマンドの使い方

そのまま実行させると、引数の文字列(引数が無ければ「y」)を無限に出力するyesコマンドの使い方を調べてみたところ、多少、無理矢理な使い方を除けば、パイプと併用して、実行時に確認をしてくるコマンドに対して、自動的に「y」(もしくは「n」)を入力させるのに使う、とのこと。
コマンドの名前からして、「全てyes」にする、というのは、由来としても納得のいくものがある。
試しに使ってみると、確かに自動で「y」を送っていることが分かる。

$ touch a b c d
$ yes | rm -i a b c d
rm: remove 通常の空ファイル `a'? rm: remove 通常の空ファイル `b'? rm: remove 通 常の空ファイル `c'? rm: remove 通常の空ファイル `d'?

rmの場合は-fがあるので、わざわざyesを使うこともないが、下のように、しつこくyes/noを質問してくるものに対して全て「yes」で進めたい場合には役に立つかもしれない。
(注意: これを実行すると、hwmonのセンサを自動で検出し、設定ファイルの上書きまでを問い合わせ無しで行う)

$ yes | sudo sensors-detect

他の使用例としては、カーネル更新後などにvmware製品の設定スクリプトを再実行させる必要が出たときに

$ yes | sudo /opt/vmware/player/bin/vmware-config.pl

のようにすることで、

Would you like to skip networking setup and keep your old settings as they are?
(yes/no)

の質問に対して、設定済みのネットワーク設定をスキップするといった使い方ができる。

逆に、「全てno」にしたい場合は

$ yes n | [コマンド]

の形で、「n」を送ればよい。

その他、無理矢理な使い方として紹介されているものに

$ yes | head -n 3
y
y
y

のように、指定した回数だけ表示してパイプを切り、その出力を使用するというものがある。...のだが、やはり、いい使い方が思いつかない。何かに使えるとしても、他のコマンドで処理をしたほうがよさそう。

参考URL:

(2008/5/12)参考URLに入力検索のページを追加