2016-05-03 12 views
1

Ich versuche, eine Zeile an die Hosts-Datei auf einem Mac anhängen. Der Befehl Ich verwende ist:Ändern Sie Host-Datei mit Skript auf dem Mac

sudo echo "192.168.99.100 test" >> /private/etc/hosts 

Diese Methode funktioniert auf Windows & Linux aber auf Mac Ich habe nicht die Berechtigungen dies auch ausgeführt werden, wenn es in sudo Modus ausgeführt wird.

Kann mir jemand sagen, was ich falsch mache und wie ich das beheben kann?

StefanJanssen

+0

Mögliches Duplikat von [Wie verwende ich Sudo, um die Ausgabe an einen Speicherort umzuleiten, für den ich keine Berechtigung zum Schreiben habe?] (Http://stackoverflow.com/questions/82256/how-doi-i-use- sudo-zu-redirect-output-zu-einem-Ort-ich-habe-nicht-Erlaubnis-zu-wr) – Neil

Antwort

1

Versuchen echo '192.168.99.100 test' | sudo tee -a /private/etc/hosts.

>> ist die Syntax der Shell selbst, die als Ihr Benutzer ausgeführt wird. sudo echo "192.168.99.100 test" >> /private/etc/hosts läuft echo "192.168.99.100 test" als root und die >> "pipe to file" wird als Ihr Benutzer ausgeführt.

tee ist ein gewöhnlicher Befehl, den Sie als root mit sudo ausführen können, der sowohl an stdout als auch an eine Datei ausgibt, so dass echo 'line' | sudo tee -a file tun wird, was Sie wollen. wird an die Datei angehängt, anstatt sie zu überschreiben.

+0

@trojanfoe Was sieht aus wie Müll? –

+0

@trojanfoe Es ist nicht, die Umleitung wird in der aktuellen Shell ausgeführt, die keine sudo priveleges hat. – 123

+0

'sudo' ist nur ein gewöhnlicher Befehl, der Eingabe über Befehlszeilenargumente übernimmt. '>>' wird von der Shell interpretiert und nicht als Argument zum Befehl hinzugefügt. Deshalb zeigt 'echo' hallo '>> file' nicht 'hallo >> file' und schreibt' hallo' in die Datei 'file'. –