コマンドの出力結果を別のターミナル(仮想端末)に出力したい、といった場合が(超極々)たまにあるのだけど、今まではそういった場合には、以下のように仮想端末に直接リダイレクトをしていた。
echo test123 > /dev/pts/xxx
ただ、このやり方だとroot権限が無いと書き込めないので、あんま良くはないよなぁ…と思っていたのだけど、どうやらLinuxには別のターミナルに標準入力を出力するコマンドとしてwriteコマンドというのが最初から用意されていたらしい。 例えば以下のようにコマンドを実行すると、lsの結果を指定したユーザのターミナルに出力できる。
ls | write <username> <仮想端末>
以下、コマンドの実行例。
echo -e ABCD\\n1234|write blacknon pts/0
↑のコマンドを実行した際、対象のターミナルには以下のような出力がされる。
Message from blacknon@BS-PUB-UBUNTU-01 on pts/2 at 08:26 ...
ABCD
1234
EOF
あまり使う機会はなさそうだけど、これならroot権限もいらないし、一般ユーザ権限でも別のユーザで接続している端末にも出力ができる。