皆さんこんにちは。昼間のパパは @nullpopopo です。わけがわかりませんΞ(´ ゚_。`) 先ほどTwitterで「sudo echo ‘hoge’ >> /path/to/fuga(rootしか書き込めないファイル)」的なのがRTされてきたのですが、実はこれだとsudoつけても書き込めないんですよね。chmodして書き込むわけにもいかない場合に、シェル芸でスマートに書き込む方法について実験してみました。
まずはファイルを作りましょう。
$ sudo touch hoge $ ls -l hoge -rw-r--r-- 1 root root 0 12月 17 12:51 hoge
sudoをつけて、文字列をファイルにリダイレクトすると・・・
$ sudo echo 'aho' > hoge bash: hoge: 許可がありません
というわけで、teeくんの出番です。
$ echo 'aho' | sudo tee hoge aho
リダイレクトされましたね。
$ cat hoge aho
それでは、追記してみましょう。
$ echo 'aho' | sudo tee --append hoge aho $ cat hoge aho aho
いちいちchownやchmodしなくてもよいですね。標準出力にahoが表示されるのが嫌でしたら、最後に > /dev/null をつければOKです。ね、簡単でしょう?