Jika Anda di mac atau Anda memerlukan izin sudo untuk mencoba ini:
sudo -- sh -c -e "echo '192.34.0.03 subdomain.domain.com' >> /etc/hosts";
Itu masih akan meminta kata sandi Anda.
cara alternatif dari @kainjow
echo '192.34.0.03 subdomain.domain.com' | sudo tee -a /etc/hosts
Pastikan untuk menggunakan -i
pilihan sed
.
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
sed -i "2i192.241.xx.xx venus.example.com venus" /etc/hosts
Jika tidak,
echo "192.241.xx.xx venus.example.com venus" >> /etc/hosts
akan menambahkan baris di akhir file, yang dapat berfungsi seperti yang Anda harapkan.
Masukkan/Perbarui Entri
Jika Anda ingin menyisipkan/memperbarui entri host secara terprogram menggunakan bash, inilah skrip yang saya tulis untuk melakukannya:
#!/bin/bash
# insert/update hosts entry
ip_address="192.168.x.x"
host_name="my.hostname.example.com"
# find existing instances in the host file and save the line numbers
matches_in_hosts="$(grep -n $host_name /etc/hosts | cut -f1 -d:)"
host_entry="${ip_address} ${host_name}"
echo "Please enter your password if requested."
if [ ! -z "$matches_in_hosts" ]
then
echo "Updating existing hosts entry."
# iterate over the line numbers on which matches were found
while read -r line_number; do
# replace the text of each line with the desired host entry
sudo sed -i '' "${line_number}s/.*/${host_entry} /" /etc/hosts
done <<< "$matches_in_hosts"
else
echo "Adding new hosts entry."
echo "$host_entry" | sudo tee -a /etc/hosts > /dev/null
fi
Skrip dimaksudkan untuk digunakan dengan OS X tetapi juga dapat digunakan di linux dengan penyesuaian kecil.
Bagaimana cara membuat gambar .IMG dari disk (kartu sd) tanpa menyertakan ruang kosong?
Apa arti set -e dalam skrip bash?