Bash の Cat EOF
 
このチュートリアルでは、cat EOF とは何かと bash での使用法について説明します。
Bash の Cat EOF
cat はファイルの内容を読み取ったり、表示したり、連結したりするために使用される bash コマンドであり、EOF は End Of File を表します。EOF は、読み取られていたファイルが終了したことをシェルに示します。cat << eof は here-document を使用します。リダイレクト演算子 << と <<- はどちらも、シェルによって読み取られた後続の行をコマンドの入力にリダイレクトできます。リダイレクトされた行は here-document と呼ばれます。
here-document は次の形式を使用します。
[n] << word
     here-document
delimeter
here-document は、次の改行の後に始まる単一の単語として扱われます。区切り文字のみを含む行、または間に空白文字を含まない改行ができるまで続きます。
Bash のファイルに複数行の文字列を配置する
cat、<<、EOF、および > は、複数行の文字列をファイルに入力するためのインタラクティブな方法を提供します。EOF は Here Tag として知られています。Here Tag は、Here Tag まで複数行の文字列を入力することをシェルに通知します。<< は Here Tag を設定するために使用されます。> は、入力コンテンツを指定されたファイル(この場合は multiline.txt)にリダイレクトするために使用されます。
cat << EOF > multiline.txt
> This is the first line
> This is the second line
> This is the third line
> EOF
cat、<<、EOF、および > を使用して、以下に示すようにインタラクティブに bash スクリプトを作成することもできます。
cat << EOF > script.sh
#!/bin/bash
printf "Hello\n"
printf "Wordl!\n"
EOF
Bash で複数行の文字列をパイプに渡す
以下のコードは、cat、eof、および pipe を使用して、複数行の入力文字列コンテンツを指定されたパイプとコマンドにリダイレクトします。入力は文字列 A を grep する grep コマンドにパイプされ、一致した入力は tee コマンドにパイプされます。tee コマンドは、入力を fruits.txt ファイルにコピーします。
cat <<EOF | grep 'A' | tee fruits.txt
> Apple
> Orange
> Apricot
> Banana
> EOF
cat で fruits.txt ファイルの内容を確認しましょう。
cat fruits.txt
出力:
Apple
Apricot
