How Link to heading
Add mydomain.test pointing to 127.0.0.1 to your /etc/hosts file use:
grep -q '127.0.0.1 mydomain.test' /etc/hosts ||
sudo sed -i '$ a 127.0.0.1 mydomain.test' /etc/hosts
To remove it do:
grep -q '127.0.0.1 mydomain.test' /etc/hosts &&
sudo sed -i '/127.0.0.1 mydomain.test/d' /etc/hosts
Comment it out with:
grep -q '127.0.0.1 mydomain.test' /etc/hosts &&
sudo sed -i 's/127.0.0.1 mydomain.test/# &/' /etc/hosts
And uncomment it by executing:
grep -q '# 127.0.0.1 mydomain.test' /etc/hosts &&
sudo sed -i '/# 127.0.0.1 mydomain.test/s/^# //g' /etc/hosts
Add them to your Makefile for ultimate productivity:
IP := 127.0.0.1
DOMAIN := mydomain.test
.PHONY: domain/add
domain/add:
@grep -q '$(IP) $(DOMAIN)' /etc/hosts ||
sudo sed -i '$ a $(IP) $(DOMAIN)' /etc/hosts
.PHONY: domain/remove
domain/add:
@grep -q '$(IP) $(DOMAIN)' /etc/hosts &&
sudo sed -i '/$(IP) $(DOMAIN)/d' /etc/hosts
.PHONY: domain/comment
domain/add:
@grep -q '$(IP) $(DOMAIN)' /etc/hosts &&
sudo sed -i 's/$(IP) $(DOMAIN)/# &/' /etc/hosts
.PHONY: domain/uncomment
domain/add:
@grep -q '# $(IP) $(DOMAIN)' /etc/hosts &&
sudo sed -i '/# $(IP) $(DOMAIN)/s/^# //g' /etc/hosts
So you can quickly use:
make domain/add
make domain/remove
make domain/comment
make domain/uncomment
Or in general with:
make domain/add IP=127.0.0.1 DOMAIN=mydomain.test
make domain/remove IP=127.0.0.1 DOMAIN=mydomain.test
make domain/comment IP=127.0.0.1 DOMAIN=mydomain.test
make domain/uncomment IP=127.0.0.1 DOMAIN=mydomain.test
Why Link to heading
Using grep before sudo sed means you only need your sudo password if you
mutate the file. Clever trick to save you time!
Domains pointing to localhost have to be .test and not something else, more
about it in the official RFC: