それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

sudo コマンド実行しても、リダイレクトでファイルに書き込めない.

sudo を多用しているTakuyaです。こんばんは。Sudoは便利なので活用しますが,リダイレクトでファイルに書込もうと思ってもパーミッションErrorになるので困っています.

sudo は出来てもファイルに書き込めない例

sudo do_something > /etc/apt/apt.conf.d/hoge

にようにsudoして結果を書き込もうとしてもパーミッション・エラーになる。


たぶんEchoとパイプもSudoすれば行けると思うとおもって試したが・・・

sudo do_something | sudo echo - > /etc/hogehoge #これは出来ない。

MANに書いてある.

困って、Manを読んだらManに書いてあった.SudoのMan最高

/home パーティションにあるディレクトリのディスク使用量リストを作成する。 cd とファイルリダイレクションが動作するように、サブシェルでコマンドを実行している点に注意すること。

% sudo sh -c "cd /home ; du -s * │ sort -rn > USAGE"

つまりsudoでsh を起動してねってことらしい

sudo sh -c "do_something > /etc/fstab.d/foo"

出来た.

解決策2 tee を使う

もっと、確実な解決策は teeを使うこと

sudo d_something | sudo tee /etc/hogehoge

2023-07-05

追記