如何将多行文本附加到文件?

如何将多行文本附加到文件?

我想附加此文本:

<Directory "/var/www/*">
    Order allow,deny
    Allow from all
    AllowOverride All
</Directory>

到文件/etc/apache2/apache2.conf

我可以通过 SSH 访问,但我不知道如何使用 VIM。我想通过命令来执行此操作。

答案1

这种语法被称为“HERE 文档”:

sudo tee -a /tmp/file <<EOF
<Directory "/var/www/*">
    Order allow,deny
    Allow from all
    AllowOverride All
</Directory>    
EOF

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

答案2

使用:

nano /etc/apache2/apache2.conf

(您可能需要使用sudo

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

要保存,请按Ctrl+O并使用Ctrl+X退出。如需帮助,请在 nano 内按Ctrl+ ,或使用Gman nano

它看起来应该是这样的:

纳米

答案3

这是一种简单的方法,使用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设置了附加标志的 ,然后调用sudo

sudo tee -a >> config.conf

答案4

由于您要求使用 Vim,因此以下是需要运行的命令:

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

如果您没有vim,这也相当于vi -eex

替代的清洁方法:

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

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

相关内容