sudoによるリダイレクトでの書き込み

一般ユーザを利用していて、sudoでリダイレクトをして権限の無いファイルに追記をさせたい事があるだろう。
そんな時、以下のように普通にコマンドを実行した場合、権限が無いと言われ書き込みに失敗してしまう。

sudo echo "test line 2" >> /work/test

test@ubuntu-server:~$ sudo echo "test line 2" >> /work/test
-bash: /work/test: 許可がありません

sudoでリダイレクトして、root権限のファイルに書き込む場合は、以下のように「sh -c」を付与してコマンドを実行する必要がある。

sudo sh -c 'echo "test line 2" >> /work/test'

これで、sudoを利用してのリダイレクトが行えるようになる。


2016/10/6 追記

もしくは、sudoで実行したteeにパイプで渡すことで対応可能だ。

コマンド | sudo tee -a /ファイルPath