【Linux】yesコマンドの使い方|無限ループと自動応答の活用術

【Linux】yesコマンドの使い方|無限ループと自動応答の活用術

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:3,099

Linuxのyesコマンドの基本的な使い方から、無限に文字列を出力する方法、スクリプトやインストールの自動応答(yes/noプロンプトのスキップ)に活用する実践的なテクニックまで、インフラエンジニア向けにわかりやすく解説します。

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

初心者向け

わかばちゃんと学ぶ サーバー監視

難易度
実用性
読みやすさ

マンガと図解が中心で圧倒的に読みやすい。負荷調査の手法がスッと理解できるようになります。

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ

LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネル環境でサーバーの構築やソフトウェアのインストールを行っている際、何度も「y/n」の確認プロンプトが表示されて手を止めてしまった経験はないでしょうか。シェルスクリプトの自動化を進めたいのに、対話入力を求められて処理がストップしてしまうと困ってしまいますよね。

この記事では、Linuxの標準コマンドである yes コマンドの基本的な使い方から、無限に文字列を出力する方法、そしてインストールの自動応答(yes/noプロンプトのスキップ)に活用する実践的なテクニックまで、インフラエンジニア向けにわかりやすく解説します。

この記事を読むことで、対話型コマンドをバッチ処理に組み込んだり、テスト用のダミーデータを効率的に作成したりできるようになり、日々の運用作業を大きく効率化できます。

確認した環境

本記事で紹介するコマンドおよび手順は、以下の環境で動作を確認しています。

環境による違いについて
本記事ではLinux(GNU coreutils)の yes コマンドを前提としています。macOSmacOS [マックオーエス]Appleが開発するMac用のオペレーティングシステムなどのBSD系OSにも yes コマンドは存在しますが、内部実装やパフォーマンス特性が異なる場合があります。クロスプラットフォームでシェルスクリプトを共有する際は、動作環境ごとに挙動を確認することをおすすめします。

yesコマンドとは?

yes コマンドは、指定した文字列(デフォルトでは y)を改行区切りで無限に標準出力へ吐き出し続ける、非常にシンプルながら強力なコマンドです。GNU coreutilsに含まれており、ほとんどのLinuxディストリビューションで標準利用できます。

yesコマンドの基本動作と仕組み

yes コマンドの最大の特徴は、ユーザーが明示的に停止するまで処理を止めない「無限ループ」です。単体で実行すると、端末の画面が文字で埋め尽くされます。

デフォルトでの出力内容

オプションを指定せずに yes コマンドを実行した場合の動作を見てみましょう。

Terminal window
yes

実行すると、以下のように y という文字が無限に出力され続けます。

Terminal window
y
y
y
y
...(無限に続く)

yesコマンドの基本的な使い方

yes コマンドは、単に文字をループさせるだけでなく、任意の文字列を出力させたり、パイプラインと組み合わせて他のコマンドに値を渡し続けたりする用途で真価を発揮します。

任意の文字列を無限に出力する

yes コマンドの引数に任意の文字列を指定すると、その文字列を無限に出力させることができます。

Terminal window
yes "Hello Linux"

実行例:

Terminal window
Hello Linux
Hello Linux
Hello Linux
...(無限に続く)

このように、テスト用のメッセージを大量に生成したい場合などに便利です。

出力結果を停止する方法(Ctrl + C)

yes コマンドは無限ループで動作するため、そのままでは自然に終了しません。出力を停止するには、キーボードで以下のショートカットキーを入力します。

  • 終了ショートカット: Ctrl + C

この操作により、シグナル(SIGINT)が送信され、コマンドが強制終了します。万が一、大量の出力でターミナルがフリーズしたように見えても、慌てずに Ctrl + C を押下してください。

実務で使える活用テクニック

インフラエンジニアの実務において、yes コマンドは単なるおもちゃではなく、自動化のための強力な武器となります。ここでは具体的な活用シーンを2つ紹介します。

コマンドの対話プロンプト(yes/no)を自動応答させる

ソフトウェアのインストールや、古いファイルの削除 (rm -i など) では、安全のために「本当に実行しますか? (y/n)」という確認プロンプトが表示されます。シェルスクリプトでこれを完全に自動化したい場合に yes コマンドが役立ちます。

パイプ(|)を使って、yes の出力を対象のコマンドに流し込みます。

Terminal window
yes | sudo apt-get upgrade

あるいは、特定の文字(noy 以外の文字列)を自動回答させたい場合は、引数にその文字を指定します。

Terminal window
yes no | rm -i *.log

yesコマンドをパイプで使用する際のリスク

yes コマンドは文字列を高速かつ無限に送り出し続けるため、すべての確認プロンプトに同じ回答を返してしまいますapt-get upgrade などでは「本当にアップグレードしますか? [Y/n]」以外にも、「設定ファイルを上書きしますか?」「古いバージョンを保持しますか?」といった別の確認プロンプトが表示されることがあります。この場合、意図しない選択肢が自動で選ばれてしまい、システムの設定ファイルが勝手に書き換わるなどの重大な問題を引き起こす危険性があります。

そのため、可能な限り各コマンドの専用オプション(apt-get -y upgradeyum update -y など)を使用してください。専用オプションは対象の確認プロンプトのみをスキップし、予期しないプロンプトには安全なデフォルト値で応答するよう設計されています。yes コマンドのパイプは、専用オプションが用意されていない古いコマンドや独自の対話型スクリプトに対してのみ使用するのがベストプラクティスです。

headコマンドと組み合わせて容量の大きいダミーファイルを作る

ディスクI/Oのテストや、容量制限の挙動を確認するために「特定のサイズを持つダミーファイル」を手早く作成したい場合があります。yes コマンドと head コマンドを組み合わせることで、指定したサイズ・行数のファイルを一瞬で生成できます。

例えば、100万行のデータを持つテキストファイルを作成する場合は以下のように実行します。

Terminal window
yes "Test Data Line" | head -n 1000000 > dummy.txt

各コマンドの役割:

  • yes "Test Data Line": 指定した文字列を無限に生成し続ける
  • head -n 1000000: 先頭から100万行を取得した時点で入力を締め切り、プロセスを終了させる
  • > dummy.txt: 出力をファイルにリダイレクトする

このテクニックを活用すれば、巨大なログファイルの模擬データなどを数秒で準備することができます。

用途に応じたダミーファイルの作り分け

上記の方法は行数ベースでファイルを生成するため、テキスト形式のログ模擬データなどに適しています。一方、ディスク容量(バイト数)を正確に指定したテストを行いたい場合は、head --bytes(例: yes "Test Data Line" | head --bytes 100M > dummy.txt)や dd コマンド(例: dd if=/dev/zero of=dummy.dat bs=1M count=100)を使うほうが、目的のファイルサイズを正確にコントロールできます。用途に応じて使い分けましょう。

まとめ:yesコマンドで作業を効率化しよう

今回は、Linuxの yes コマンドの基本から、実務で役立つ自動化テクニックまで解説しました。

記事のポイントを以下にまとめます。

  • yes コマンドは指定した文字列をデフォルトで無限に出力するツールである
  • 停止するには Ctrl + C を使用する
  • 引数を指定することで、任意の文字列を無限にループさせることができる
  • パイプラインと組み合わせることで、インストールの確認プロンプト(yes/no)を自動応答させることができる
  • head コマンド等と組み合わせることで、テスト用のダミーファイルを効率よく作成できる

yes コマンドはシンプルな構造ながら、シェルスクリプトの自動化やテスト環境の構築において非常に頼りになる存在です。ぜひ日々のインフラ運用や開発作業に取り入れてみてください。


以上で本記事の解説を終わります。
よいITライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

人気記事


記事を評価

Thanks!
目次
Scroll to Top