I have a new Ubuntu 12.04 VPS. I am trying to write a setup script that completes an entire LAMP installation. Where I am having trouble is appending a line to the /etc/hosts
file. My current hosts file looks like this:
127.0.0.1 localhost Venus
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
I would like it to look like this:
127.0.0.1 localhost Venus
192.241.xx.xx venus.example.com venus
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
I have tried a variety of sed
commands using the append (\a
) command. For some reason Ubuntu either just echoes the contents of the hosts
file in terminal or does nothing at all. How would I properly inject the second line into the file with a bash script?
you can use sed, like:
sed '/Venus/ a\
192.241.xx.xx venus.example.com venus' /etc/hosts
try this with root access.
sudo for super user permission
this will append the lines to hosts in the android
I should point out that
sed
(the stream editor) is not actually intended for editing files, although it can be used to do that. (Standard sed doesn't have a built-in mechanism for writing to other than standard output.) A more appropriate tool would beed
.The following ed script says "find the line containing the (admittedly sloppy) regular expression /127.0.0.1/ and append at the next line." (The lone period tells ed to stop appending.)
That said, you can really just append this line to the end of your /etc/hosts file very trivially:
Make sure to use the
-i
option ofsed
.Otherwise,
would append the line at the end of the file, which could work as you expect.
Insert/Update Entry
If you want to programmatically insert/update a hosts entry using bash, here's a script I wrote to do that:
The script is intended for use with OS X but would work on linux as well with minor tweaking.