2017-04-20 70 views
1

我想回应一些包含新行转义序列的文件,但我希望它们保持转义状态。我正在寻找与this问题基本相反的问题。防止解释反斜杠转义的“回声”

echo "part1\npart2" >> file 

我想是这样的文件

$ cat file 
old 
part1\npart2 

中,但它看起来像

$ cat file 
old 
part1 
part2 
+1

这应该就像你发布它一样工作...不是吗? –

+0

这应该是默认行为https://unix.stackexchange.com/questions/219268/how-to-add-new-lines-when-using-echo - 什么操作系统和什么版本的'echo'你有? – chrki

+0

你试过'echo'吗? – Igor

回答

3

这就是为什么POSIX建议使用的printf代替echo一个很好的例子(请参阅here,在“应用程序使用情况”下):您不知道您通过echo得到了什么。

你可以得到:

  • 一个shell内建echo不解释反斜杠默认
    • 例:猛砸内置echo有一个-e选项,启用反斜杠转义解释和检查xpg_echo外壳选项
  • A shell builtin echo解释ba ckslash默认逃逸
    • 例子:zsh中,破折号
  • /bin/echo:可能取决于其中一个... GNU Coreutils的echo理解-e选项,如猛砸内置

的POSIX规格说这(重点矿):

string
要写入标准输出的字符串。如果第一个操作数是-n,或者任何操作数包含<backslash>字符,则结果是实现定义的

因此,对于便携式解决方案,我们可以使用printf

printf '%s\n' 'part1\npart2' >> file 

凡在格式字符串中的\n总会解释,并在参数中\n将永远不会被解释,导致

part1\npart2 

被附加到file