読者です 読者をやめる 読者になる 読者になる

yes コマンド

Others

yes コマンドなんてものがあるので、なんだろうなーと思ってつぶやいたら、色々教えてもらったのでメモ。

まずコマンドを打ってみましょう。

# yes

y
y
y
y
y
y
y
y
y
y
y
y^C

(Ctrl + C で中止)

y y y と連続して出力するんですね。

 試しにちょっと使ってみます。ファイルをポンと 100個 作成して...

# for i in `seq 1 100` ; do touch "$i.txt"; done

作成されたか確認。

# ls
1.txt 18.txt 27.txt 36.txt 45.txt 54.txt 63.txt 72.txt 81.txt 90.txt
10.txt 19.txt 28.txt 37.txt 46.txt 55.txt 64.txt 73.txt 82.txt 91.txt
100.txt 2.txt 29.txt 38.txt 47.txt 56.txt 65.txt 74.txt 83.txt 92.txt
11.txt 20.txt 3.txt 39.txt 48.txt 57.txt 66.txt 75.txt 84.txt 93.txt
12.txt 21.txt 30.txt 4.txt 49.txt 58.txt 67.txt 76.txt 85.txt 94.txt
13.txt 22.txt 31.txt 40.txt 5.txt 59.txt 68.txt 77.txt 86.txt 95.txt
14.txt 23.txt 32.txt 41.txt 50.txt 6.txt 69.txt 78.txt 87.txt 96.txt
15.txt 24.txt 33.txt 42.txt 51.txt 60.txt 7.txt 79.txt 88.txt 97.txt
16.txt 25.txt 34.txt 43.txt 52.txt 61.txt 70.txt 8.txt 89.txt 98.txt
17.txt 26.txt 35.txt 44.txt 53.txt 62.txt 71.txt 80.txt 9.txt 99.txt

全て消してみましょう。(rm -rf * すればいいじゃんというのは置いておいて....)

# rm *
rm: remove 通常の空ファイル `1.txt'? y
rm: remove 通常の空ファイル `10.txt'? y
rm: remove 通常の空ファイル `100.txt'? y
rm: remove 通常の空ファイル `11.txt'?

これだといちいち y y y とタイプしないといけない....。

そこで yes コマンドの登場。パイプでつなぎましょう。

# yes | rm *

rm: remove 通常の空ファイル `1.txt'? rm: remove 通常の空ファイル `10.txt'? rm: remove 通常の空ファイル `100.txt'? rm: remove 通常の空ファイル `11.txt'? rm: remove 通常の空ファイル `12.txt'? rm: remove 通常の空ファイル `13.txt'? rm: remove 通常の空ファイル `14.txt'? rm: remove 通常の空ファイル `15.txt'? rm: remove 通常の空ファイル `16.txt'? rm: remove 通常の空ファイル `17.txt'? rm: remove 通常の空ファイル `18.txt'?   .....rm: remove 通常の空ファイル `98.txt'? rm: remove 通常の空ファイル `99.txt'? 

 消えたか確認。

# ls 

(空っぽ)

インタラクティブ(対話的に)に返答求められるコマンドに自動応答ができるんですね。本来の使い方だと思います。

yum でも使えますね。(-y オプションがあるけど...)

# yes | yum update

こんな使い方もできます。引数に文字列を渡せば、文字列が出力されます。

`` で囲ってコマンドの実行結果を出力してみます。

# yes `date`

2015年 3月 16日 月曜日 23:42:16 JST
2015年 3月 16日 月曜日 23:42:16 JST
2015年 3月 16日 月曜日 23:42:16 JST
2015年 3月 16日 月曜日 23:42:16 JST
2015年 3月 16日 月曜日 23:42:16 JST
2015年 3月 16日 月曜日 23:42:16 JST
2015年 3月 16日 月曜日 23:42:16 JST
2015年 3月 16日 月曜日 23:42:16 JST
2015年 3月 16日 月曜日 23:42:16 JST
2015年 3月 16日 月曜日 23:42:16 JST
2015年 3月 16日 月曜日 23:42:16 JST
2015年 3月 16日 月曜日 23:42:16 JST
^C

(Ctrl + C で中止)

 何に使うかは今のところ思い浮かびません...笑

思いついたら追記します。