here documentの基本!<<を使った複数行入力の書き方を初心者向けに解説
生徒
「Linuxで複数行の文字をまとめて入力する方法ってありますか?」
先生
「ありますよ。here documentという仕組みを使うと、複数行の入力を一度に扱えます。」
生徒
「なんだか難しそうですが、初心者でも使えますか?」
先生
「大丈夫です。ファイルにメモを書くような感覚で使えるので、ゆっくり覚えていきましょう。」
1. here documentとは?
here documentとは、Linuxのシェルで複数行のテキストをまとめて入力できる仕組みです。特に、ファイル作成やコマンドへの入力をまとめて行いたいときに使われます。
通常、コマンドは1行ずつ入力しますが、here documentを使うと複数行の文章を一度に渡すことができます。
イメージとしては、メモ帳に文章を書いて、それをまとめてプログラムに渡すような感覚です。
2. 基本構文と書き方
here documentの基本的な書き方は次の通りです。
cat << EOF
これは1行目です
これは2行目です
EOF
このEOFは区切りの目印です。開始と終了に同じ文字列を書くことで、その間の内容がまとめて処理されます。
この例では、catコマンドに複数行のテキストを渡しています。
3. ファイルを作成する方法
here documentはファイル作成にもよく使われます。リダイレクトと組み合わせることで、複数行のファイルを簡単に作ることができます。
cat << EOF > sample.txt
こんにちは
Linuxの学習をしています
here documentは便利です
EOF
このコマンドを実行すると、sample.txtというファイルが作成されます。
cat sample.txt
こんにちは
Linuxの学習をしています
here documentは便利です
複数行の文章を一度にファイルへ書き込めるため、設定ファイル作成やスクリプト作成でよく使われます。
4. 区切り文字のルール
区切り文字にはEOFがよく使われますが、実は自由に変更できます。
cat << END
テスト1
テスト2
END
このように、開始と終了で同じ文字列を使えば問題ありません。
ただし、途中の文章に同じ文字列が含まれると誤動作する可能性があるため、あまり使われない単語を選ぶことがポイントです。
5. 変数展開の有無
here documentでは、変数を展開するかどうかを制御できます。
通常は変数が展開されます。
name="Taro"
cat << EOF
こんにちは $name さん
EOF
こんにちは Taro さん
しかし、区切り文字をシングルクォートで囲むと、変数は展開されません。
name="Taro"
cat << 'EOF'
こんにちは $name さん
EOF
こんにちは $name さん
この違いは、シェルスクリプトを書くときに非常に重要です。
6. インデントを無視する書き方
スクリプトの中で見やすく書きたい場合、インデントを無視できる方法があります。
cat <<- EOF
インデント付きの行
きれいに書けます
EOF
<<-を使うことで、先頭のタブが無視されます。これにより、スクリプトの見た目を整えながら記述できます。
7. よくある使い道
here documentは以下のような場面でよく使われます。
- 設定ファイルの作成
- 複数行のメッセージ表示
- シェルスクリプトの自動化処理
例えば、メッセージ表示の例です。
cat << EOF
Linuxへようこそ
コマンド操作を覚えていきましょう
EOF
Linuxへようこそ
コマンド操作を覚えていきましょう
このように、複数行のメッセージを簡単に表示できます。
8. here documentとリダイレクトの関係
here documentは、標準入力とリダイレクトの仕組みと深く関係しています。
<<は「ここから入力します」という意味で、コマンドに対して入力を渡しています。
つまり、キーボードから入力する代わりに、あらかじめ用意した複数行のデータを渡しているということです。
この仕組みを理解すると、Linuxの標準入力やリダイレクトの理解も深まります。
まとめ
この記事では、Linuxコマンドの基礎として重要なhere documentの使い方について、初心者の方でも理解しやすいように丁寧に解説してきました。here documentは、シェルにおける標準入力とリダイレクトの仕組みを理解するうえで非常に重要な機能であり、複数行のテキストを一度に扱える便利な方法です。特にLinux初心者やプログラミング未経験者にとっては、最初は少し難しく感じるかもしれませんが、基本構文と使い方を押さえることで、日々のコマンド操作やシェルスクリプト作成が格段に効率化されます。
here documentの基本構文では、catコマンドと組み合わせて使用する例を通して、複数行入力の流れを学びました。区切り文字としてよく使われるEOFは、開始と終了を示す重要な目印であり、同じ文字列を使うことがルールです。この仕組みを理解することで、コマンドライン上での入力処理の流れが明確になります。また、区切り文字は自由に変更できるため、用途に応じて適切な文字列を選ぶことが重要です。
さらに、リダイレクトと組み合わせることで、複数行の内容を一度にファイルへ書き込む方法も学びました。これは設定ファイルの作成やログの生成、シェルスクリプトの自動化処理など、実務でも非常に頻繁に使われるテクニックです。Linux環境で効率よく作業するためには、このような入力の自動化は欠かせません。
また、変数展開の有無についても重要なポイントです。通常のhere documentでは変数が展開されますが、区切り文字をシングルクォートで囲むことで展開を無効化できます。この違いを理解しておくことで、シェルスクリプトの挙動を正確に制御できるようになります。特に、設定ファイルにそのまま文字列を書き込みたい場合などに役立ちます。
インデントを無視する書き方として、<<-を使う方法も紹介しました。これはスクリプトの可読性を高めるために非常に有効です。コードを見やすく整理しながら、実行結果に影響を与えない書き方ができるため、チーム開発や長いスクリプトを書く際にも役立ちます。
here documentは、Linuxの標準入力やリダイレクトの理解を深めるための重要なステップでもあります。キーボード入力の代わりに、あらかじめ用意した複数行データをコマンドに渡すという考え方は、シェル操作の本質に直結しています。この仕組みをしっかり理解することで、catコマンドやechoコマンド、teeコマンドなど他の基本コマンドとの組み合わせもスムーズに理解できるようになります。
最後に、実際の現場ではhere documentは設定ファイル生成やバッチ処理、自動デプロイなど様々な場面で活用されています。Linuxコマンドを学習するうえで、このような基本技術を確実に身につけておくことは、将来的なスキルアップにも大きくつながります。繰り返し実際にコマンドを実行しながら、理解を深めていきましょう。:contentReference[oaicite:0]{index=0}
サンプルプログラムで復習
ここで、基本的なhere documentの使い方をもう一度確認してみましょう。実際にコマンドを実行することで、理解がより深まります。
cat << EOF > sample.txt
Linuxの勉強をしています
here documentを理解しました
複数行入力が便利です
EOF
cat sample.txt
Linuxの勉強をしています
here documentを理解しました
複数行入力が便利です
次に、変数展開の違いも確認してみましょう。
name="Hanako"
cat << EOF
こんにちは $name さん
EOF
こんにちは Hanako さん
name="Hanako"
cat << 'EOF'
こんにちは $name さん
EOF
こんにちは $name さん
このように、同じ構文でも書き方によって結果が変わる点が重要です。
生徒
「here documentって最初は難しそうでしたが、仕組みが分かると便利ですね」
先生
「その通りです。複数行の入力をまとめて扱えるので、作業効率が大きく上がります」
生徒
「ファイル作成にも使えるのが便利だと思いました」
先生
「設定ファイルの作成やスクリプトの自動化でよく使われます。覚えておくと必ず役立ちます」
生徒
「変数展開の違いも重要ですね」
先生
「はい。シングルクォートを使うかどうかで動作が変わるので、意識して使い分けましょう」
生徒
「これからシェルスクリプトにも挑戦してみたいです」
先生
「とても良いですね。here documentはスクリプトでもよく使うので、今回の内容をしっかり復習しておきましょう」