若葉の技術メモ

コンピュータやプログラミングに関して調べたり、取り組んだりしたことをまとめる若葉のノート📓。コンピュータ・プログラミング初めてって方も一緒に勉強していきましょう!初心は大事!いつでも若葉☘のような意気込みで!

  • No.   

若葉の技術メモ

コンピュータやプログラミング・数理に関して調べたり、取り組んだりしたことをまとめる若葉のノート。

コンピュータ・プログラミング・数理が初めてって方も一緒に勉強していきましょう!

初心は大事!いつでも若葉☘のような意気込みで!

【作業を効率化したい方必見!】ターミナル上のイエスマン:yesコマンド

ターミナル上で作業していると度々対話的に確認されるf:id:wakaba-mafin:20181130000549j:plain:w150:right

yes or no

しかし、たくさんの作業をしているときにこのyesを毎回打つのって面倒ですよね...

私もちまちま"y"とか"yes"とか打ってた一人でした💦

さて、そんな方に朗報です! UNIXコマンドの中には実はイエスマンがいて、確認の度に毎回yesって答えてくれます!

今回の記事ではこのイエスマンyesコマンドをご紹介します!

※この記事の内容をご自身で試す場合は自己責任でお願いします


はじめに

MacでもLinuxでもChromebookでもターミナルを使うことはあります。

単純な作業をしたり、開発環境を整えたり、はたまたコーディングしたりなど様々なことに使われます。

ですが、その作業の中で対話的に確認を行う機会というのは結構あります。

apt-getでパッケージを管理したりするとき、rmで一括にファイルを削除するときなどです。

例えば、apt-getでwgetを削除しようとするときには

$ sudo apt-get purge wget

と叩けばいいのですが、その際には対話的な確認として

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  wget*
0 upgraded, 0 newly installed, 1 to remove and 19 not upgraded.
After this operation, 2,813 kB disk space will be freed.
Do you want to continue? [Y/n] 

と聞いてきます。もちろん、こんな1つだけの作業なら手で打てばいいじゃんってなりますが、この作業が何千回・何万回も続くとなるとさすがに無理です。というか、私は絶対にやりたくないです💦

ま、rmであれば-fオプションとか、apt-getであれば-yオプションとかつければ自動的にyesと答えてはくれますが...自作のプログラムとかで入力を対話的に与える必要があるって場合も少なからずあるとは思います。

こんな場合に力を発揮するのがUNIXコマンドのイエスマンyesコマンドです!

yesコマンド

yesコマンドとは、簡単に言ってしまうと、yと答え続けるコマンドです。使い方はいたって簡単で

$ yes

と叩くだけ。これだけで無限に"y"が表示され続けます。(※止めるときはctrl + Cで。

こんな感じ。

f:id:wakaba-mafin:20181129235813p:plain

しかも、これだけじゃないんです!

その他にもyesの引数に文字列を与えると、その文字列を無限に出力し続けます。例えば、

$ yes "I am a yesman"

とすると、こんな感じ。

f:id:wakaba-mafin:20181129235838p:plain

yesコマンドはこのように同じ文字列を出力し続けるコマンドです!

ですが、このyesコマンドどうやって活用したらいいんでしょうか?次にyesコマンドの活用方法をご紹介します!

yesコマンドの使い方

さて、yesコマンドの活用方法についてですが、yes単独で使うことはほとんどなく、基本的にはyesパイプでつないで使います。具体的にはこうです。

yes | hoge

hogeの部分は別に何でもよくて、複数のtxtファイルを対話的に消す場合だとrm -i *.txtなどが入ります。実際にyesを使った場合とそうでない場合を比較すると、yesを使わなければ

$ rm -i *.txt
rm: remove regular file 'test1.txt'? y
rm: remove regular file 'test2.txt'? y

と毎回消すかどうかを確認されますが、yesを使うと

$ yes | rm -i *.txt
rm: remove regular file 'test1.txt'? rm: remove regular file 'test2.txt'? 

として、確認に対して自動的にyesと答えてくれます(yは表示されませんが)!便利でしょ?

さて、この他にも使い方はあります!それはプログラムの対話的な入力に対してyesを活用する使い方です。

今、対話的に入力を求めるPythonのプログラムを1つ書いてみましょう。

#three_input.py
for _ in range(3):
    x = input()
    print("input is ", x)

です。これはユーザに対して入力を求めて、その入力を表示するという作業を3回繰り返すだけのプログラムです。

これとyesを組み合わせると、この通り!

$ yes yesman | python three_input.py
input is  yesman
input is  yesman
input is  yesman

見事、yesmanというワードを入力が求められる度に回答し、それが表示されています!

まとめ

さて、今回は毎度毎度作業の度に対話的に確認されるのがうっとうしいと思っている方に対して、その確認への回答を自動化する方法をご紹介しました!

それも単純なコマンド、yesです。

このyesを活用することでみなさんの作業が少しでも捗ればいいですね!

間違いのご指摘やご意見等ございましたら、ぜひコメントお願いします!また、質問なども歓迎ですので、どんな些細なことでもコメントしていただければ嬉しいです!