tuneoの日記: シェル力を高める:ファイルに追記する 4
日記 by
tuneo
そんなんリダイレクトすりゃいい?
最近は「rootでの作業ってのは原則やんない方向で、必要な時だけsudoで権限昇格して作業をする」流儀のLinuxを使うことが増えてるんだが、そういうディストロで問題になるのがこの手の話。昨日、新しくつないだディスクを/varにマウントしたくて/etc/fstabにエントリを追記しようと思ったのだが、
tuneo$ sudo echo -e "/dev/sdb1\t/var\text4\tdefaults 0 0" >> /etc/fstab
とかやってもダメなのね。つまりsudoがroot権限で実行するのはあくまでも"echo"だけであり、それを/etc/fstabにリダイレクトするのは一般ユーザtuneoの権限で、なのだ。で、当然Permission Deniedと怒られてしまう。
最終的にはsudo sh -c "echo ほげほげ >> /etc/fstab"すればいいという結論に達したんだけど、イマイチ好きくない。
「stdinから読んで指定されたファイルに出力したり追記する」というツールがあれば(ここでは仮にappendという名前だとする)、そいつを使って
echo -e "/dev/sdb1~" | sudo append /etc/fstab
とか書けるんだけどなぁ。
さしあたり、お気楽に調査した限りではdd of=foo.txt conv=appendがそれに該当するんだけど、うっかりconv=appendを忘れてファイルを飛ばしたorz。
他にはtee --appendなんてのもいける。こっちはstdoutにも吐いてくれるオマケつき。
他にはないだろうか。
ヒアドキュメントとか? (スコア:2)
sudo sh << EOF
echo hogehoge >> outputfile
EOF
設定にも依りますが bash の interactive modeでは
" " の内側では補完がきかないのですが
here docなら補完がかかるので here doc おすすめです
Re:ヒアドキュメントとか? (スコア:1)
sudoでシェルを実行してリダイレクトでファイルに追記するっていう、俺の「好きくない」解法のヒアドキュメント版ですよソレ。
sed でファイルを指定して末尾に追記とか (スコア:1)
具体的にそらで唱えられないけど、HP-UXの紙マニュアルについてきたed/ex/sed指南書にリダイレクトでない読むファイル書き出すファイルを同時に指定する手順があったような。
sshで (スコア:1)
sshで作業するときに、"のくくりの範囲をどうするかで、ssh発信元と発信先どっちでコマンド走ってるかとか意識しないと動作が怪しくなることがあったのを思い出した。
>最終的にはsudo sh -c "echo ほげほげ >> /etc/fstab"すればいいという結論に達したんだけど、イマイチ好きくない。
必要悪として割リ切ルのが吉(悪?)
#結局めんどくさくてsudo使わず、su - ・・・