2016-05-03 2 views
1

Я пытаюсь добавить строку в файл hosts на mac. Команда я использую:Изменение файла хоста со сценарием на Mac

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

Этот метод работает на окнах & Linux, но на Mac я не имею права управлять этим даже при работе его в режиме sudo.

Может ли кто-нибудь сказать мне, что я делаю неправильно, и как я могу это исправить?

StefanJanssen

+0

Возможный дубликат [Как использовать sudo для перенаправления вывода в местоположение У меня нет разрешения на запись?] (Http://stackoverflow.com/questions/82256/how-do-i-use- sudo-to-redirect-output-to-a-location-i-dont-have-permission-to-wr) – Neil

ответ

1

Попробуйте echo '192.168.99.100 test' | sudo tee -a /private/etc/hosts.

>> - это синтаксис самой оболочки, которая работает как ваш пользователь. sudo echo "192.168.99.100 test" >> /private/etc/hosts запускает echo "192.168.99.100 test" как root, а >> «pipe to file» запускается как ваш пользователь.

tee это обычная команда, которую вы можете запустить как корень с sudo, который выводит на стандартный вывод как и файл, так echo 'line' | sudo tee -a file будет делать то, что вы хотите. tee -a будет добавлен в файл вместо его записи.

+0

@trojanfoe Что похоже на мусор? –

+0

@trojanfoe Это не так, перенаправление выполняется в текущей оболочке, у которой нет sudo priveleges. – 123

+0

'sudo' - обычная команда, которая принимает входные данные через аргументы командной строки. '>>' интерпретируется оболочкой вместо добавления в качестве аргумента команды. Вот почему 'echo 'hello' >> file' не отображает' hello >> file' и вместо этого записывает 'hello' в файл' file'. –

 Смежные вопросы

  • Нет связанных вопросов^_^