How to append multiple lines of text to a file?
I want to append this text:
<Directory "/var/www/*">
Order allow,deny
Allow from all
AllowOverride All
</Directory>
to the file /etc/apache2/apache2.conf
I have access via SSH but I don't know how to use VIM. I would like to do this via a command.
This syntax is called "HERE documents":
sudo tee -a /tmp/file <<EOF
<Directory "/var/www/*">
Order allow,deny
Allow from all
AllowOverride All
</Directory>
EOF
This solution is better than using ctrl-d since it can be used inside shell scripts.
Use:
nano /etc/apache2/apache2.conf
(you may need to use sudo
)
This will give you a command line text editor that works much like normal text editors. Use the arrow keys to navigate. Backspace, enter, etc. work as normal.
To save, press Ctrl+O and use Ctrl+X to exit. For help, press Ctrl+G from inside nano, or use man nano
.
It should look something like this:
Here's an easy way to do it, using cat
.
% cat - >> testf
one
two
three
four
You terminate your input with the CTRL-D .
This takes interactive input from cat
(i.e., whatever you type in), and appends it to the existing file testf
.
testf
(with two original lines intact) will now look like this:
original line 1
original line 2
one
two
three
four
As other answers have illustrated, you will need special syntax when editing files which you don't have write permission on. I find it easier to just switch to the root user for this, i.e., sudo su
. But another easy method is to use tee
with the append flag set, and called with sudo
:
sudo tee -a >> config.conf