sudo teeはデフォルトで上書きする
sudo teeをオプションなしで実行すると、tee自体のデフォルト動作(上書き)になる。
$ cat /etc/protected.conf
line1
$ echo line2 | sudo tee /etc/protected.conf
line2
$ cat /etc/protected.conf
line2
既存のline1は消え、line2だけになる。
sudo tee -aで追記する
root権限のファイルに追記したい場合は-aを付ける。
コマンド | sudo tee -a ファイルパス
$ cat /etc/protected2.conf
line1
$ echo line2 | sudo tee -a /etc/protected2.conf
line2
$ cat /etc/protected2.conf
line1
line2
-aを付けると既存のline1を残したままline2が追記される。
用途
/etc/hostsや/etc/sysctl.confなど、root権限が必要な設定ファイルへ1行追加したい場合に使う。sudo付きのリダイレクト(sudo echo line2 >> /etc/protected.conf)は、シェル自身がファイルを開く時点でまだ一般ユーザーの権限のため失敗する。sudo tee -aならteeコマンド自体がroot権限で実行されるため書き込める。
参考: 【tee】sudo teeでroot権限が必要なファイルに書き込む
\第一線のプログラマーの行動原理を学べる!/
