在 Linux 中,使用 cat > filename <<EOL
是一种 Here Document 语法,用来将多行文本输入保存到文件中。<<EOL
的作用是告诉 shell 输入将一直持续,直到遇到一个特殊的结束标识符(在这里是 EOL
),然后把这些输入写入文件。
cat > filename <<EOL
内容...
EOL
cat > 1.json
:表示将输入内容重定向到 1.json
文件中。如果文件已存在,它会被覆盖。<<EOL
:这是 Here Document 的开始,表示从当前行开始,直到遇到 EOL
作为结束标识符。EOL
只是一个示例名称,任何字符串都可以作为结束标识符,比如 <<EOF
或 <<END
。EOL
(或其他标识符):表示 Here Document 的结束,遇到这个标识符后,shell 停止读取输入并写入文件。假设想创建一个 JSON 文件 1.json
,可以使用以下命令:
cat > 1.json <<EOL
{
"name": "John",
"age": 30,
"city": "New York"
}
EOL
这个命令将创建一个 1.json
文件,内容如下:
{
"name": "John",
"age": 30,
"city": "New York"
}
当输入内容并遇到 EOL
标识符时,输入结束,文件内容保存。
EOL
可以替换为任意标识符,例如 EOF
、END
,只要确保开始和结束的标识符一致即可。cat >
会覆盖目标文件的内容。如果希望追加而不是覆盖,可以使用 cat >> filename
。command <<END
多行输入内容
END
command
:任何可以接受输入的命令(例如 cat
、echo
、grep
等)。<<END
:<<
是 Here Document 的起始符号,END
是定义的结束标识符。你可以用任意字符串代替 END
,例如 EOF
、EOL
等。END
(或其他标识符):结束标识符,表示输入内容的终止。为 grep
命令提供多行输入:
grep "Linux" <<EOF
I love Linux.
Linux is powerful.
EOF
这会在 Here Document 中查找包含 “Linux” 的行,并输出:
I love Linux.
Linux is powerful.
在脚本中使用 Here Document: Here Document 非常适合在脚本中嵌入多行配置文件、脚本或指令。例如,在 shell 脚本中嵌入 SQL 语句:
mysql -u user -p <<EOF
USE my_database;
SELECT * FROM my_table;
EOF
抑制变量替换:在 <<
后使用 <<'END'
,可以防止 Here Document 中的变量被替换。
cat <<'EOF'
This is $HOME
EOF
输出:
This is $HOME