カテゴリ: Linux 更新日: 2026/04/21

LinuxのEOFとは?ヒアドキュメント終端記号を初心者向けに解説

LinuxのEOFとは?ヒアドキュメント終端記号
LinuxのEOFとは?ヒアドキュメント終端記号

先生と生徒の会話形式で理解しよう

生徒

「LinuxでEOFってよく聞きますけど、どういう意味ですか?」

先生

「EOFとは、End Of File(エンドオブファイル)の略で、ファイルや入力の終わりを示す記号のことです。」

生徒

「なるほど。でも、シェルスクリプトでよく見かけるヒアドキュメントって何ですか?」

先生

「ヒアドキュメントは、シェルスクリプトで複数行の文字列をまとめて入力したいときに使います。そしてEOFがその終了を知らせる終端記号として登場します。」

生徒

「ヒアドキュメントの使い方も簡単に教えてください。」

先生

「もちろんです。基本から順番に見ていきましょう。」

1. EOF(エンドオブファイル)とは何か?

1. EOF(エンドオブファイル)とは何か?
1. EOF(エンドオブファイル)とは何か?

Linux(リナックス)やUnix(ユニックス)系システムでのEOF(End Of File、エンドオブファイル)は、ファイルの終わりや入力の終了を示す特別なマークです。プログラムやシェルが「もうこれ以上読み込むデータはない」と判断するために使います。

たとえば、ターミナルでキーボードから文字を入力する場合、EOFは入力の終了を示すサインとして働きます。通常、キーボードからのEOFはCtrl+Dキーで送信されます。

2. ヒアドキュメントとは?

2. ヒアドキュメントとは?
2. ヒアドキュメントとは?

ヒアドキュメント(Here Document、ヒアドキュメント)は、Linuxシェルやbash(バッシュ)、zsh(ゼットシェル)で使う複数行の文字列をまとめて書く方法です。通常のechoやprintfでは改行を含む文字列を扱うのが少し面倒ですが、ヒアドキュメントを使えば簡単に入力できます。

ヒアドキュメントの基本構文は次の通りです:


cat << EOF
これはヒアドキュメントの例です。
複数行のテキストをまとめて表示できます。
EOF

この例では、catコマンドが標準入力としてヒアドキュメント内のテキストを受け取り、EOFで入力終了を認識します。

3. EOFとヒアドキュメントの関係

3. EOFとヒアドキュメントの関係
3. EOFとヒアドキュメントの関係

ヒアドキュメントでは、EOFや任意の文字列を終端記号として使い、シェルに入力の終了を伝えます。重要なのは、終端記号は行の先頭に置く必要があることです。


cat << END
この文章はヒアドキュメントで書かれています。
END

上記の例ではEOFの代わりにENDというラベルを使っていますが、意味は同じで入力終了を示すマーカーです。

4. ヒアドキュメントで変数展開を使う方法

4. ヒアドキュメントで変数展開を使う方法
4. ヒアドキュメントで変数展開を使う方法

ヒアドキュメントでは、変数展開を行うこともできます。例えば、bashで次のように書くと変数の内容を埋め込めます。


NAME="Linux初心者"
cat << EOF
こんにちは、$NAMEさん。
ヒアドキュメントを使うと
複数行のメッセージを簡単に書けます。
EOF

この場合、出力は変数$NAMEの値が表示されます。引用符で囲まない限り、変数やコマンド置換も自動で展開されます。

5. 引用符を使ったヒアドキュメント

5. 引用符を使ったヒアドキュメント
5. 引用符を使ったヒアドキュメント

ヒアドキュメントの終端記号をシングルクォートやダブルクォートで囲むと、変数展開を防ぐことができます。例えば:


NAME="Linux初心者"
cat << 'EOF'
こんにちは、$NAMEさん。
変数は展開されません。
EOF

このようにすることで、入力内容をそのまま文字列として扱えます。プログラムや設定ファイルを生成する際に便利です。

6. ヒアドキュメントの実用例

6. ヒアドキュメントの実用例
6. ヒアドキュメントの実用例

ヒアドキュメントは、設定ファイルの自動生成や複雑なメッセージ出力、SQLクエリの実行など様々な場面で使われます。たとえば、SQLスクリプトをbashから直接実行する場合:


mysql -u user -p database << EOF
SELECT * FROM users;
WHERE age > 20;
EOF

この例では、EOFでSQL文の入力終了を示し、mysqlコマンドにまとめて渡しています。

7. ヒアドキュメントの便利なポイントまとめ

7. ヒアドキュメントの便利なポイントまとめ
7. ヒアドキュメントの便利なポイントまとめ

ヒアドキュメントの便利なポイントは次の通りです:

  • 複数行の文字列を簡単にまとめて入力できる
  • EOFやENDなど任意の文字列で終端を設定可能
  • 変数展開やコマンド置換も簡単に使える
  • 設定ファイルやスクリプト生成が自動化できる
  • Linux初心者でも直感的に使いやすい

このように、EOFとヒアドキュメントを理解することで、Linuxシェルでの効率的なスクリプト作成や自動化が可能になります。

8. ヒアドキュメントで注意すべきポイント

8. ヒアドキュメントで注意すべきポイント
8. ヒアドキュメントで注意すべきポイント

ヒアドキュメントを使うときは、次の点に注意しましょう:

  • 終端記号は必ず行の先頭に置く
  • 引用符を使うと変数展開が無効になることを理解する
  • シェルによって動作が微妙に異なる場合があるのでbashやzshのマニュアルを確認する
  • 複雑な文字列の場合、エスケープや改行に注意する

これらを守れば、ヒアドキュメントはLinuxで非常に便利なツールです。

まとめ

まとめ
まとめ

今回の記事では、LinuxにおけるEOF(End Of File、エンドオブファイル)とヒアドキュメントの基本から応用までを詳しく解説しました。EOFは、ファイルや入力の終わりを示す特別な記号で、シェルやプログラムがデータの読み込み終了を判断する際に必ず必要な概念です。ターミナル上での入力終了は通常Ctrl+Dで送信できますが、プログラム内でEOFを理解しておくことは、Linuxの効率的な操作やスクリプト作成に欠かせません。

ヒアドキュメントは、EOFを終端記号として利用しつつ、複数行の文字列をまとめて入力できる便利な機能です。シンプルな構文で複数行のテキストをまとめて出力したり、変数展開やコマンド置換を組み合わせてスクリプトの自動化に活用できます。例えば、次のように変数展開を含むヒアドキュメントが書けます。


NAME="Linux初心者"
cat << EOF
こんにちは、$NAMEさん。
ヒアドキュメントを使うと
複数行のメッセージを簡単に書けます。
EOF

この例では、変数$NAMEが自動で展開され、複数行の文字列をそのままターミナルに表示することができます。また、引用符で終端記号を囲むと変数展開を無効にできるため、設定ファイルやスクリプト内で文字列を正確に扱う場面でも活用可能です。

ヒアドキュメントの便利な点としては、以下が挙げられます:

  • 複数行の文字列を簡単にまとめて入力できる
  • EOFやENDなど任意の文字列を終端記号として使用可能
  • 変数展開やコマンド置換を柔軟に活用できる
  • SQLクエリや設定ファイルの自動生成にも利用できる
  • Linux初心者でも直感的に理解しやすい構文

ただし、使用する際には注意も必要です。終端記号は必ず行の先頭に置く、引用符で囲むと変数展開が無効になる、シェルによって動作が微妙に異なる場合がある、複雑な文字列ではエスケープや改行に注意する、といった基本を押さえておくことで、ヒアドキュメントは非常に強力なツールとなります。

先生と生徒の振り返り会話

生徒

「今日のEOFとヒアドキュメントの話、すごくわかりやすかったです。Ctrl+DでEOFを送る意味や、ヒアドキュメントで複数行をまとめるやり方が理解できました。」

先生

「それは良かったです。EOFは単なる入力終了のサインですが、ヒアドキュメントと組み合わせると、スクリプト内で大量の文字列やSQL、設定ファイルを効率的に扱えます。」

生徒

「変数展開や引用符の違いも重要ですね。変数を展開したいときと、そのまま文字列として扱いたいときで使い分けができますね。」

先生

「その通りです。ヒアドキュメントを活用すれば、設定ファイルの自動生成やメッセージ出力も簡単になりますし、Linuxでのシェルスクリプトの生産性が格段に上がります。」

生徒

「なるほど。終端記号を行頭に置く、引用符で展開を制御するなど、注意点も覚えておくと安心ですね。」

先生

「その通りです。基本の構文を押さえておけば、Linux初心者でもヒアドキュメントを自在に活用できるようになります。今日学んだことを活かして、自分でスクリプトを書いてみると理解がさらに深まりますよ。」

関連記事:
カテゴリの一覧へ
新着記事
New1
Linux
Linuxのシェルとは?コマンドを実行する仕組みを初心者向けに徹底解説【bash・zsh・ターミナル入門】
新規投稿
New2
基本情報技術者試験
光磁気ディスクとは何か?補助記憶装置の仕組みと特徴を初心者向けにわかりやすく解説
新規投稿
New3
基本情報技術者試験
パケットとは?初心者にもわかる意味・構造・役割をやさしく解説!
更新記事
New4
基本情報技術者試験
リバースブルートフォース攻撃とは?初心者向けに徹底解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
イーサネット(Ethernet)とは?初心者にもわかるLANの基本技術をやさしく解説
No.2
Java&Spring記事人気No2
基本情報技術者試験
NIC
325
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.3
Java&Spring記事人気No3
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.4
Java&Spring記事人気No4
基本情報技術者試験
SMTP
197
SMTPとは?初心者でもわかるメール送信の仕組みとプロトコルをやさしく解説!
No.5
Java&Spring記事人気No5
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.6
Java&Spring記事人気No6
基本情報技術者試験
DHCP
180
DHCPとは?初心者でもわかるIPアドレス自動割り当ての仕組み
No.7
Java&Spring記事人気No7
情報セキュリティマネジメント試験
ソフトウェアとは何かを完全解説!初心者でもわかる基本と役割
No.8
Java&Spring記事人気No8
基本情報技術者試験
HTTP
146
HTTPとは?初心者にもわかりやすく仕組みを解説!Webの基本を学ぼう