如何在文件中输入以下内容:
Hi
abcd
我尝试使用echo "Hi\nabcd" >> ab.txt
,但在文件中它是按原样编写的(\n
包含 ,而不是换行符)
答案1
您需要告诉echo
以遵守转义序列。
echo -e "Hi\nabcd" >> ab.txt
答案2
答案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 使用“>”作为我的命令继续提示符。由于某种原因,我无法逃避带有反斜杠的单独返回。