したいと思っています
echo "something" >> /etc/config_file
でも、このファイルに書き込み権限を持っているのはrootユーザーだけなので、それができません。しかし、以下のようにしてもうまくいきません
sudo echo "something" >> /etc/config_file
このような状況で、最初にsudo
‘dエディタでファイルを開いてから、手で新しい内容を追加しなくても、ファイルに追加する方法はありますか?
296 Helder S Ribeiro 2010-05-01
tee -a
(またはtee --append
)とsudo
を併用してください
tee - read from standard input and write to standard output and files
[...]
-a, --append
append to the given FILEs, do not overwrite
[...]
だから、あなたの命令はこうなる
echo "something" | sudo tee -a /etc/config_file
管理者権限でBashを実行するよりもtee
の方がメリットがあります
- 管理者権限でBashを実行しない
- ファイルへの書き込み」の部分だけが高度なパーミッションで実行されます
- 複雑なコマンドの引用の方がはるかに簡単です
417 akira 2010-05-01
リダイレクトは現在のシェルで実行されます。昇格した権限でリダイレクトを実行するには、シェル自体を昇格した権限で実行する必要があります
sudo bash -c "somecommand >> somefile"
55 Ignacio Vazquez-Abrams 2010-05-01
sudoにサブシェルを起動させます
sudo sh -c "echo 'JAVA_HOME=/usr/lib/jvm/java-6-sun' >> /etc/profile"
この例では、sudo は残りの部分を引数として “sh” を実行しています
(これは sudo man ページに例として示されています)
27 Doug Harris 2009-10-13
私は通常、shell HERE documentをsudo tee -aで使用しています。の行に沿って何かを実行します
sudo tee -a /etc/profile.d/java.sh << 'EOF'
# configures JAVA
JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin
EOF
7 Nicholas Sushkin 2016-06-16
私の中では、この場合のベストはDDだと思っています
sudo dd of=/etc/profile <<< END
JAVA_HOME=/usr/lib/jvm/java-6-sun
END
5 user316693 2014-04-18
ここのsudoとリダイレクトに問題があるかもしれません。代わりにお好みのテキストエディタを使って行を追加してください
sudo nano /etc/profile
それか、代わりにsuを試してみてはいかがでしょうか
su
echo ‘JAVA_HOME=/usr/lib/jvm/java-6-sun’ >> /etc/profile
exit
3 Bobby 2009-10-13
これは非常にシンプルで、よくあることですが、sudo
を最初に置きます
sudo sed -i '$a something' /etc/config_file
$a
はファイルの最後に追加するという意味です
2 antonio 2020-01-12
これは、(>>
を使って) sudoの出力をリダイレクトしようとしている場合には動作しません。本当にやりたいのは echo
の出力をリダイレクトすることです。お気に入りのエディタを使って、その行を手動で /etc/profile
に追加することをお勧めします。これには、/etc/profile
がすでにJAVA_HOME
を設定しているかどうかを確認できるという追加の利点があります
0 innaM 2009-10-13
ex-wayを使用します
sudo ex +'$put =\"FOO\"' -cwq /etc/profile
を追加する変数に置き換えてください
OS Xなどの一部のシステムでは、/etc/profile
ファイルには444のパーミッションがありますので、それでもパーミッションが拒否されている場合は、まずパーミッションを確認して修正してください
sudo chmod 644 /etc/profile
をクリックして、もう一度試してみてください
0 kenorb 2015-05-24