我正在开发一个shell脚本,它将使用Ubuntu 14.04中的PAM文件完全更改密码策略。我这样做的方式是
sudo sh -c 'echo "I want to change this text" >/etc/pam.d/example.txt'
我遇到的问题是我无法创建新行。我研究了这个,有些人说HTML标记<br>
有效,但我已经尝试了
sudo sh -c 'echo "I want to change this text. <br> This should be a new line." >/etc/pam.d/example.txt
(和)
sudo sh -c 'echo "I want to change this text. <br /> This should be a new line." >/etc/pam.d/example.txt'
但它只是在文本文件上打印<br>
和<br />
标记。我该如何解决这个问题?
答案 0 :(得分:1)
使用-e
中的echo
标记启用反斜线转义序列(echo
上的GNU coreutils
),
sudo sh -c 'echo -e "I want to change this text\nThis should be a new line" '
I want to change this text
This should be a new line
对于你的情况,应该是,
sudo sh -c 'echo -e "I want to change this text\nThis should be a new line" > /etc/pam.d/example.txt'
在POSIX echo
语句中,您可以直接嵌入\n
个字符而不包含-e
标记,
sudo sh -c 'echo "I want to change this text\nThis should be a new line" > /etc/pam.d/example.txt'
答案 1 :(得分:1)
基本上,您应该停止使用echo
来处理您正在撰写的任何新内容。
虽然POSIX描述了echo
的行为,但实际上它并不像它可能的那样便携。 echo的POSIX文档甚至建议&#34; 鼓励新应用程序使用printf而不是echo。&#34;
您还可以找到对此here on the S.E. network的引用。并且the bash hackers' wiki touches on this too。它在one of the bash pitfalls中提到过。
sudo sh -c 'printf "First line.\nSecond line.\n" >/etc/pam.d/example.txt'