如何将多行文本追加到文件中?

我想附上这个文字:

 Order allow,deny Allow from all AllowOverride All  

到文件/etc/apache2/apache2.conf

我可以通过SSH访问,但我不知道如何使用VIM。 我想通过一个命令来做到这一点。

使用:

 nano /etc/apache2/apache2.conf 

(你可能需要使用sudo

这将为您提供一个命令行文本编辑器,其工作方式与普通文本编辑器非常相似。 使用箭头键进行导航。 退格,输入等正常工作。

要保存,请按Ctrl + O并使用Ctrl + X退出。 如需帮助,请从nano内部按Ctrl + G ,或使用man nano

它应该看起来像这样:

纳米

此语法称为“HERE文档”:

 sudo tee -a /tmp/file < Order allow,deny Allow from all AllowOverride All  EOF 

这个解决方案比使用ctrl-d更好,因为它可以在shell脚本中使用。

使用cat ,这是一个简单的方法。

 % cat - >> testf one two three four 

您使用CTRL-D终止输入。

这将从cat获取交互式输入(即,无论您键入什么),并将其附加到现有文件testf

testf (两条原始线完好无损)现在看起来像这样:

 original line 1 original line 2 one two three four 

正如其他答案所示,在编辑您没有写入权限的文件时,您将需要特殊的语法。 我发现更容易切换到root用户,即sudo su 。 但另一个简单的方法是使用tee和append标志集,并使用sudo调用:

sudo tee -a >> config.conf

nano编辑器更友好( sudo apt-get install nano如果不可用)。

 echo "" > out_file echo " Order allow,deny" >> out_file echo " Allow from all" >> out_file echo " AllowOverride All" >> out_file echo "" >> out_file cat out_file | sudo tee -a /etc/apache2/apache2.conf 

既然你要求Vim,这是运行的命令:

 sudo vim -e +'$put = \"\n\tOrder allow,deny\n\tAllow from all\n\tAllowOverride All\n\n\"' -cwq /etc/apache2/apache2.conf 

如果你没有vim ,这也等同于vi -eex

替代清洁方法:

 $ sudo ex +"r /dev/stdin" -cwq output.txt <<-EOF  Order allow,deny Allow from all AllowOverride All  EOF 

只需运行第一行(不含$ ),粘贴多行文本,然后键入EOF即可完成。