試験運用中なLinux備忘録

2007/07/30

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に入力検索のページを追加

rderardera 2008/05/11 10:46 yesコマンドの存在意義が分かりませんでした。
勉強になりました。

kakurasankakurasan 2008/05/12 12:03 コメントありがとうございます。自分もこれを書いた少し前までは使い方が分からず、調べた中のちょっとしたメモ程度に書いたものです。
コマンドというのは処理を自動化するのに便利なので、yesコマンドは「回答」処理を自動化するための汎用的なツールとして用意されているのでしょう。
なお、入力検索のページも参考になりそうなので、参考URLに追加しておきました。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

(C) 2007-2015 kakurasan
本ウェブログの表示につきましては、横幅1,000ピクセル以上を推奨します。