2016-05-03 7 views
1

Macのhostsファイルに行を追加しようとしています。 私が使用しているコマンドは次のとおりです。Macでスクリプトを使用してホストファイルを変更する

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

この方法は、Windows上& 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"を実行し、>> "pipe to file"がユーザーとして実行されます。

teeは、sudoをstdoutとファイルの両方に出力する通常のコマンドです。したがって、echo 'line' | sudo tee -a fileは必要な処理を行います。 tee -aはファイルを上書きするのではなく、ファイルに追加します。

+0

@trojanfoe何がゴミのように見えますか? –

+0

@trojanfoeそうではありませんが、リダイレクトはsudo特権を持たない現在のシェルで実行されます。 – 123

+0

'sudo'は普通のコマンドで、コマンドライン引数で入力します。 '>>'はコマンドの引数として追加されるのではなく、シェルによって解釈されます。だから、 'echo 'hello' >> file'は' hello >> file'を表示せず、代わりに 'hello'をファイル' file'に書き込みます。 –

関連する問題