これはに関する回答に基づいていますtee
。物事を簡単にするために、小さなスクリプト(私はそれを呼び出すsuwrite
)を書いて、許可/usr/local/bin/
を+x
得て入れました:
#! /bin/sh
if [ $# = 0 ] ; then
echo "USAGE: <command writing to stdout> | suwrite [-a] <output file 1> ..." >&2
exit 1
fi
for arg in "$@" ; do
if [ ${arg#/dev/} != ${arg} ] ; then
echo "Found dangerous argument ‘$arg’. Will exit."
exit 2
fi
done
sudo tee "$@" > /dev/null
コードのUSAGEに示されているように、出力をこのスクリプトにパイプし、スーパーユーザーがアクセスできるファイル名を指定するだけで、必要に応じて自動的にパスワードの入力を求められます(これにはが含まれているためsudo
)。
echo test | suwrite /root/test.txt
これはの単純なラッパーであるためtee
、-a
追加するTのオプションも受け入れ、同時に複数のファイルへの書き込みもサポートすることに注意してください。
echo test2 | suwrite -a /root/test.txt
echo test-multi | suwrite /root/test-a.txt /root/test-b.txt
また/dev/
、このページのコメントの1つで言及された懸念事項であった、デバイスへの書き込みに対する単純な保護もいくつかあります。