在 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