先玩玩看 yes

請先玩玩看 yes 吧, 請在 command line 輸入以下指令

1
yes

output 如下

1
2
3
4
5
6
7
y
y
y
y
y
y
y^C

若在 yes 後面加上 hello, 請看下方

1
yes hello

output 如下

1
2
3
4
5
6
7
8
hello
hello
hello
hello
hello
hello
hello
hello^C

基本上就是一個打印的指令, 但是什麼時候會用到呢?

情境描述

有時需要 rm 一個資料夾, 若是 clone 下來的 opensource 有上 git (我還沒遇過沒有的@@) 或者有 git 追蹤的專案都會內含 .git, 這時候常常遇到以下狀況

1
rm: remove write-protected regular file 'XXXX'?

這時想必大家都隨手打個 yes 或 y 吧!? 不知道各未有沒有遇過下面的狀況呢?

1
2
3
4
5
6
7
8
9
10
11
12
rm: remove write-protected regular file 'X'? yes
rm: remove write-protected regular file 'XX'? yes
rm: remove write-protected regular file 'XXX'? yes
rm: remove write-protected regular file 'XXXX'? yes
rm: remove write-protected regular file 'XXXXX'? yes
rm: remove write-protected regular file 'XXXXXX'? yes
rm: remove write-protected regular file 'XXXXXXX'? yes
rm: remove write-protected regular file 'XXXXXXXX'? yes
rm: remove write-protected regular file 'XXXXXXXXX'? yes
rm: remove write-protected regular file 'XXXXXXXXXX'? yes
rm: remove write-protected regular file 'XXXXXXXXXXX'? yes
rm: remove write-protected regular file 'XXXXXXXXXXXX'? yes

沒遇過也沒關係, 因為總有一天會遇到的= =, 如果你是已經遇到了那也恭喜你不是第一個

我們常用的方法

我就不多說啦, 我也用這個方法行之有年了, 各位看倌請看 code

1
rm -rf file/

痾我自己不知道如何避免使用 rf 啦, 我是知道 SELinux 應該可以防, 但是我沒自己架過QQ, 而且自己也被 SELinux 搞過, 那又是另一個故事了…

今天要教的方法

就是讓 yes 自動回答一堆 rm 的 question 囉

1
yes | rm -r file/

另外值得一提的是其實用 yes 不會比較安全, 用 yes 跟用 -rf 是一樣的不過比較帥一點啦

yes 於安裝的用途

有某些軟體的安裝會需要一直回答 yes

沒錯, 就是這樣用就對了, 不過基本上我還沒用過啦, 基本上會寫在一些 auto install script 裡面, 比如要自動部署某些東西的時候會用到

下面這個範例是真對需要 (Y/N) 的問題一律回答 (Y)

1
yes Y | command-that-asks-for-input

參考資料