Linux,yesコマンドを使用して、コマンドとの対話を自動化

スポンサーリンク

鍛錬 428

Linux,yesコマンドを使用して、コマンドとの対話を自動化する

yes コマンドを使用することにより、停止するまで文字 y または指定した文字列を表示させ続けることができます。

対話が必要なコマンドに対して、全て y と答える際などに利用できます。
 
使用方法は、以下に示す通りです。

文字 y を表示させ続ける

yes

 
対話が必要なコマンドに対して、全て y と答え続ける

yes | コマンド

 
指定した文字列を表示させ続ける

yes 文字列
スポンサーリンク

実行結果

以下は、yes コマンドの挙動を確認しています。

文字 y を表示させ続ける

以下は、Ctrl+C で停止するまで、文字 y を表示させ続けています。

***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ yes
y
y
y
y
y


   (中略)


y
y
y
y
y^C
***@ubuntu:~/***/test/tmp$ ^C
***@ubuntu:~/***/test/tmp$

 
上記に示した通り、停止するまで文字 y を表示させ続けることができました。

yes コマンドを利用して、対話で y と答え続ける

以下は、root ユーザーが作成したファイルを一般ユーザーが rm コマンドで削除しようとしているため、対話が発生しています。

***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ ls -lv
合計 40
-rw-r--r-- 1 root root 3 Feb 24 04:10 sample_1.txt
-rw-r--r-- 1 root root 3 Feb 24 04:11 sample_2.txt
-rw-r--r-- 1 root root 3 Feb 24 04:11 sample_3.txt
-rw-r--r-- 1 root root 3 Feb 24 04:11 sample_4.txt
-rw-r--r-- 1 root root 3 Feb 24 04:11 sample_5.txt
-rw-r--r-- 1 root root 3 Feb 24 04:11 sample_6.txt
-rw-r--r-- 1 root root 3 Feb 24 04:11 sample_7.txt
-rw-r--r-- 1 root root 3 Feb 24 04:11 sample_8.txt
-rw-r--r-- 1 root root 3 Feb 24 04:11 sample_9.txt
-rw-r--r-- 1 root root 3 Feb 24 04:11 sample_10.txt
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ rm ./*
rm: 書き込み保護されたファイル 通常ファイル './sample_1.txt' を削除しますか? y
rm: 書き込み保護されたファイル 通常ファイル './sample_10.txt' を削除しますか? y
rm: 書き込み保護されたファイル 通常ファイル './sample_2.txt' を削除しますか? y
rm: 書き込み保護されたファイル 通常ファイル './sample_3.txt' を削除しますか? y
rm: 書き込み保護されたファイル 通常ファイル './sample_4.txt' を削除しますか? y
rm: 書き込み保護されたファイル 通常ファイル './sample_5.txt' を削除しますか? y
rm: 書き込み保護されたファイル 通常ファイル './sample_6.txt' を削除しますか? y
rm: 書き込み保護されたファイル 通常ファイル './sample_7.txt' を削除しますか? y
rm: 書き込み保護されたファイル 通常ファイル './sample_8.txt' を削除しますか? y
rm: 書き込み保護されたファイル 通常ファイル './sample_9.txt' を削除しますか? y
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ ls
***@ubuntu:~/***/test/tmp$

 
上記に示した通り、対話に対して y と答え続けなければ、ファイルを削除することができません。

このような場合に yes コマンドを使用すると、対話に対して自動で y と答え続けることができます。

以下は、root ユーザーが作成したファイルを一般ユーザーが rm コマンドで削除する際に発生する対話に対して、yes コマンドを利用して全て y と答えています。

***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ ls -lv
合計 40
-rw-r--r-- 1 root root 3 Feb 24 04:45 sample_1.txt
-rw-r--r-- 1 root root 3 Feb 24 04:45 sample_2.txt
-rw-r--r-- 1 root root 3 Feb 24 04:45 sample_3.txt
-rw-r--r-- 1 root root 3 Feb 24 04:45 sample_4.txt
-rw-r--r-- 1 root root 3 Feb 24 04:45 sample_5.txt
-rw-r--r-- 1 root root 3 Feb 24 04:45 sample_6.txt
-rw-r--r-- 1 root root 3 Feb 24 04:45 sample_7.txt
-rw-r--r-- 1 root root 3 Feb 24 04:45 sample_8.txt
-rw-r--r-- 1 root root 3 Feb 24 04:45 sample_9.txt
-rw-r--r-- 1 root root 3 Feb 24 04:45 sample_10.txt
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ yes | rm ./*
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ ls
***@ubuntu:~/***/test/tmp$

 
上記に示した通り、対話で毎回 y と入力せずにコマンドを実行することができました。

指定した文字列を表示させ続ける

以下は、Ctrl+C で停止するまで、文字列 Hello, World. を表示させ続けています。

***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ yes "Hello, World."
Hello, World.
Hello, World.
Hello, World.
Hello, World.
Hello, World.


   (中略)


Hello, World.
Hello, World.
Hello, World.
Hello, World.
Hello, World.^C
***@ubuntu:~/***/test/tmp$ ^C
***@ubuntu:~/***/test/tmp$

 
上記に示した通り、停止するまで指定した文字列を表示させ続けることができました。

タイトルとURLをコピーしました