如何从命令行创建多行文件?

如何从命令行创建多行文件?

如何在文件中输入以下内容:

Hi
abcd

我尝试使用echo "Hi\nabcd" >> ab.txt,但在文件中它是按原样编写的(\n包含 ,而不是换行符)

答案1

您需要告诉echo以遵守转义序列。

echo -e "Hi\nabcd" >> ab.txt

答案2

的行为echo因外壳而异;printf的行为更加规范。

printf "Hi\nabcd" >> ab.txt

1 “不可能使用回声可移植到所有 POSIX 系统,除非两者都-n(作为第一个参数)和转义序列被省略。”

答案3

我建议使用bash shell 功能称为此处文档。似乎是实现您所描述的最优雅的形式。最重要的是,多行内容看起来与输出文件中的内容完全相同(而不是不可读的、长的、\n分隔的字符串)。

cat > ab.txt <<EOL
Hi
abcd
EOL

这里EOL的标记告诉 shell 应该寻找什么来找到结尾这里的文档。你可以任意选择一个词,让你选择的东西不会恰好与这里的文档的内容本身。好处是你可以用 shell${VARIABLES}来替换。如果您不希望出现这种情况,您可以随时用引号 ( ) 将开头(仅开头一个!)标记词括起来'以防止出现这种情况。

我个人在设置环境时在初始化脚本中经常使用它来创建小配置文件,例如:

cat > ~/.screenrc <<END_OF_HEREDOC_MARKER
defscrollback ${MAX_LINES}
END_OF_HEREDOC_MARKER

答案4

您还可以用引用玩游戏:

 % echo 'Hi
> abcd' >> ab.txt

您可以通过在“Hi”后按“Enter”键在 bash 中输入该内容。 Bash 使用“>”作为我的命令继续提示符。由于某种原因,我无法逃避带有反斜杠的单独返回。

相关内容