如何将多行文本追加到文件中?
我想附上这个文字:
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 -e
或ex
。
替代清洁方法:
$ sudo ex +"r /dev/stdin" -cwq output.txt <<-EOF Order allow,deny Allow from all AllowOverride All EOF
只需运行第一行(不含$
),粘贴多行文本,然后键入EOF
即可完成。