技術ノート Linux Linux で yes コマンドを使用する方法

Linux で yes コマンドを使用する方法

重要なポイント

  • Linux および macOS の「yes」コマンドは、「yes」または「no」の文字列など、選択した任意のメッセージを繰り返し生成できます。
  • 「yes」コマンドからの出力を他のプログラムまたはスクリプトにパイプして、自動応答を提供できます。
  • 「yes」コマンドを使用すると、出力をファイルにリダイレクトすることで、大きなファイルを迅速に生成することもできます。

yes コマンドは簡単すぎて実際には役に立たないように思えますが、このチュートリアルでは、その応用例と、Linux と macOS でその蓄積された利点を活用する方法を示します。

yes コマンドは何をするのでしょうか?

コマンド ライン パラメーターを指定せずに yes コマンドを使用すると、「y」を入力して Enter キーを何度も (何度も) 押したかのように動作します。非常に迅速に。そして、Ctrl+C を押して中断するまで、この処理が継続されます。

はい

実際、yes を使用すると、選択したメッセージを繰り返し生成できます。 「はい」、スペース、使用する文字列を入力して、Enter キーを押すだけです。これは、yes に「はい」または「いいえ」の文字列の出力ストリームを生成させるためによく使用されます。

はいはい

はい、好きなものなら何でも

Linux で yes コマンドを使用する方法

しかし、それは何の役に立つのでしょうか?

「yes」からの出力は、他のプログラムまたはスクリプトにパイプ処理できます。

これには聞き覚えがあるでしょうか?長いプロセスの実行を開始し、実行したままにして終了します。コンピュータに戻ったとき、プロセスはまったく完了していません。あなたが不在の間、システムはあなたに質問をし、「はい」または「いいえ」の返答を待っています。

すべての答えが肯定的 (「はい」または「y」) または否定的 (「いいえ」または「n」) になることが事前にわかっている場合は、yes を使用してそれらの応答を提供できます。長いプロセスは無人で完了まで実行され、プロセスで尋ねられる質問に「はい」と入力すると回答が得られます。

Linux で yes コマンドを使用する方法

スクリプトでの yes の使用

次の Bash シェル スクリプトを見てください。 (これは、実行にかなりの時間がかかる、より大規模なスクリプトの一部であることを想像する必要があります。)

 #!/bin/bash

# ...
# in the middle of some long script
# obtain a response from the user
# ...

echo "Are you happy to proceed? [y,n]"
read input

# did we get an input value?
if [ "$input" == "" ] ; then

echo "Nothing was entered by the user"

# was it ay or a yes?
elif [[ " $input " == "y" ]] || [[ " $input " == "yes" ]]; then

echo "Positive response: $input "

# treat anything else as a negative response
else

echo "negative response: $input "

fi

このスクリプトは質問をし、応答を待ちます。スクリプト内のロジック フローは、ユーザーからの入力によって決定されます。

  • 「はい」または「y」は肯定的な応答を示します。
  • それ以外の入力は否定的な応答とみなされます。
  • テキストを入力せずに Enter キーを押しても何も起こりません。

これをテストするには、スクリプトをファイルにコピーし、「long_script.sh」という名前で保存します。 chmodを使用して実行可能にします。

 chmod +x long_script.sh

次のコマンドでスクリプトを実行します。 「yes」、「y」などを入力として入力してみてください (テキストを入力せずに Enter キーを押すなど)。

 ./long_script.sh

スクリプトの質問に対する応答として「yes」を取得するには、「yes」からの出力をスクリプトにパイプします。

はい | ./long_script.sh

スクリプトによっては、要件がより厳格で、「はい」という完全な単語のみを肯定的な応答として受け入れます。次のように、yes へのパラメータとして「yes」を指定できます。

はい、はい | ./long_script.sh 

Linux で yes コマンドを使用する方法

よく考えずに「はい」とは言わないでください

スクリプトまたはプログラムに入力しようとしている入力が確実に期待する結果をもたらすことを確信する必要があります。その決定を下すには、質問とその答えがどうあるべきかを知っておく必要があります。

スクリプト、コマンド、またはプログラムのロジックが期待と一致しない可能性があります。このサンプル スクリプトでは、質問は「停止しますか? [y,n]」だったかもしれません。その場合は、否定応答によってスクリプトの続行が許可されたはずです。

気軽に yes をパイプする前に、スクリプト、コマンド、またはプログラムに精通している必要があります。

Linux で yes コマンドを使用する方法

コマンドでの yes の使用

初期段階では、 yes 他の Linux コマンドと一緒に使用されていました。それ以来、他の Linux コマンドのほとんどは、人間の介入なしで独自の方法で実行できるようになりました。これを達成するために、 yes は必要なくなりました。

Ubuntu パッケージ マネージャー apt-get を例に挙げてみましょう。インストールの途中で「y」を押さずにアプリケーションをインストールするには、次のように yes を使用します。

はい | sudo apt-get install Fortune-mod

apt-get -y (yes と仮定) オプションを使用すると、同じ結果が得られます。

 sudo apt-get -y install Fortune-mod

apt-get が通常の「続行しますか? [Y/n]」という質問さえ行っていないことがわかります。答えが「はい」であると仮定しただけです。

他の Linux ディストリビューションでも状況は同じです。 Fedora では、かつては次の​​ようなパッケージ マネージャー コマンドを使用したでしょう。

はい | yumフォーチュンMODをインストールします

dnf パッケージ マネージャーは yum を置き換え、 dnf 独自の -y (yes と仮定) オプションがあります。

 dnf -y フォーチュン mod をインストールします

cp fsck 、および rm にも同じことが当てはまります。これらのコマンドにはそれぞれ、独自の -f (強制) または -y (はいを想定) オプションがあります。

それでは、 yes スクリプトを操作することのみに追いやられているように見えますか?完全ではありません。老犬にはまだいくつかのトリックがあります。

Linux で yes コマンドを使用する方法

さらにいくつかのはいトリック

seq によって生成された一連の数字とともに yes を使用すると、繰り返されるアクションのループを制御できます。

このワンライナーは、生成された数字を端末ウィンドウにエコーし、1 秒間 sleep を呼び出します。

単純に数字を端末ウィンドウにエコーする代わりに、別のコマンドまたはスクリプトを呼び出すことができます。そのコマンドやスクリプトでは数字を使用する必要さえなく、ループの各サイクルを開始するためにのみ存在します。

はい "$(seq 1 20)" |数字を読み取っている間。エコーディジットを実行します。睡眠1;終わり

テスト用に大きなファイルがあると便利な場合があります。おそらく、 zip コマンド の使用を練習したい場合や、 FTP アップロード をテストするための大きなファイルが必要な場合があります。

yes を指定すると、大きなファイルを迅速に生成できます。必要なのは、処理する長いテキスト文字列を指定し、出力をファイルにリダイレクトすることだけです。間違えないでください。これらのファイルは急速に増大します。数秒以内に Ctrl+C を押す準備をしてください。

はい、ファイルパディング用の無意味なテキストの長い行 > test.txt

 ls -lh テスト.txt

トイレテスト.txt

ここで生成されたファイルは、この記事の調査に使用したテスト マシンで約 5 秒かかりました。 ls そのサイズが 557 MB であると報告し、 wc その中に 1,240 万行があると報告します。

コマンド文字列に head 含めることで、ファイルのサイズを制限できます。ファイルに何行含めるかを指示します。 -50 は、 head test.txt ファイルに 50 行だけを挿入することを意味します。

はい、ファイルパディング用の意味のないテキストの長い行 | head -50 > test.txt

test.txt ファイルが 50 行になるとすぐにプロセスが停止します。 Ctrl+C を使用する必要はありません。自らの意志で優雅に停止します。

wc 、ファイル内にちょうど 50 行、400 ワードがあり、サイズが 2350 バイトであると報告します。

Linux で yes コマンドを使用する方法

yes コマンドは、Linux や macOS などの他の Unix 系オペレーティング システム で最も単純なコマンドの 1 つです。 System 7 Unix でリリースされ、 Ken Thompson によって作成されたオリジナル バージョンのソース コードは、わずか 6 行のコード です。 yes コマンドは、長時間実行されるスクリプト (およびその他のいくつかのトリック) に応答をフィードするのには依然として便利ですが、毎日使用するコマンド ツールキットの一部にはなりません。しかし、実際に必要なときには、そのシンプルさ自体が 6 行の黄金のコードにまとめられていることがわかります。

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · グループ · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

「 Linux で yes コマンドを使用する方法」に関するベスト動画選定!

【Linux入門】初心者向け!Linuxの基本的なコマンド操作を学ぼう!  〜 Ubuntu 環境で実演〜
Linuxのコマンドを勉強するよ! (Beginner 004)