重複の可能性:
書き込み権限のないファイルに標準出力をリダイレクトします。
echo "some words" >> /etc/apt/source.list
permission denied
sudo echo "some words" >> /etc/apt/source.list
また、拒否された権限を返します。
それから、追加の演算子が別の命令である可能性があり、その前にsudoを入れなければならないと考えてみました。
echo "some words" >> sudo /etc/apt/source.list
また、拒否された権限を返します。
どうすればこれを行う必要がありますか?
答え1
sudo sh -c 'echo "some words" >> /etc/apt/source.list'
sudo echo "some Words" >> /etc/apt/source.list が機能しない理由は、sudo が 'echo' コマンドをリダイレクトするのではなく権限を高めるためです。
>>リダイレクトを使用すると、現在のシェルはファイルを作成/追加します。シェルにこれを行う権限がないため失敗します。
私の答えがうまくいく理由は、sudoedされた新しいシェルでプロセス全体(エコーとリダイレクト)を実行しているからです。sh -c ...
新しいシェルを呼び出し、サブシェルで指定されたコマンドを実行します。上記のsudoを使用すると、サブシェルは昇格された権限で実行されます。
2番目のsudoの例は、sudoを実行するためのコマンドが必要ですが、ユーザーが渡すコマンドではないため意味がありません。これで、ローカルディレクトリに「some Words」を含むsudoというファイルがあります。ぜひ削除してください:-)
答え2
echo "some words" | sudo tee -a /etc/apt/source.list > /dev/null
-a
「ファイルに追加」に使用されます。 teeは通常ターゲットファイルを上書きします。望むよりman tee
。
答え3
猫を使うのに問題がありますか?
sudo cat >> /etc/apt/source.list
some words
^D
しかし、私はDaniel Says Tシャツを楽しんでいます:-)
答え4
echo "some words" | sudo cat >> /etc/apt/source.list