回答:
sudo
このようなことを行う方法を説明するヒントがmanページにあります。これが私のワンライナーです:
#!/usr/bin/bash
sudo sh -c "echo \"add this line to the code\" >> fileName"
明らかに、最初にユーザーがsudo
特権を持つように設定する必要があります。sh
シェルがあるため、ルート所有のファイルへのリダイレクトを使用しています。echo
コマンドに使用された引用符もエスケープする必要がありました。
su
ほとんどのUNIXシステムで利用可能であり、動作するはずです。
su root -c 'echo "add this line to the code" >> fileName'
あなたはtee
と一緒に使うことができますsudo
:
echo "add this line to the code" | sudo tee -a filename > /dev/null
echo
の出力は|
(パイプ)でにリダイレクトされsudo tee
ます。
この場合、標準入力tee
から読み取り、指定されたファイルを標準出力に書き込みます。(または)ファイルに追加します。追加しない場合、ファイルは上書きされます。これを実行すると、ルート権限でファイルが開かれます。最後に、の出力を標準出力に抑制します。filename
-a
--append
tee
tee
sudo
> /dev/null
tee
or でtee
リダイレクトを含むコマンド全体を単に開始する代わりにを使用することの1つの利点は、最初のコマンドの引用を変更する必要がないことです(すでに引用を含んでいる引用行は、かなり醜い場合があります)。su -c
sudo sh -c
トリックを行います:
ssh host "sudo su root -c 'echo "add this line to the code" >> /etc/hosts'"
ssh
?これはデフォルトなので、指定する必要su
はsudo
ありませんroot
。全体として、OPは単に問題を解決するだけでなく、何かを学びたいので、もう少し説明が必要です。
sudo
、パスワードはでキャッシュされないようですsu
。