同じ Linux マシンにログインしているユーザにメッセージを送る「wall」「write」コマンド
以前、/dev/pts/0
などに echo
すると、他のユーザのセッションに対して echo
できる、というネタを紹介した。
tty
コマンドの結果が/dev/pts/0
なユーザのセッションにおいて、
$ echo 'TEST' > /dev/pts/0
と実行すると、自身のプロンプトに
TEST
という文字列が出力される。さらに、ココで別の TTY を指定すると、
$ echo 'TEST' > /dev/pts/1
今度は
/dev/pts/1
のユーザのプロンプトに、突然TEST
の文字が出力される。
Windows には以前、net send
や msg
というコマンドがあり、コレを使うと他のユーザに向けてメッセージを送信できた。
これらと同様に、Linux においても、同一マシンにログインする別のユーザに向けてメッセージを飛ばすコマンドがあった。それが wall
と write
コマンドだ、
wall
コマンド
wall
コマンドは、ログインしている全ユーザにメッセージを一斉送信できる。$ wall
でメッセージが入力できるようになり、Control + D
を押して終了すると、メッセージが一斉送信される。
- 参考 : wallコマンドの使い方まとめ【Linuxコマンド集】
- 参考 : 【 wall 】コマンド――ログインしている端末に一斉メッセージを送る : Linux基本コマンドTips(79) - @IT
- 参考 : ログイン中の全ユーザーのターミナルにメッセージを表示するには
write
コマンド
write
コマンドはユーザ名を指定してメッセージを送信できる。前述の > /dev/pts/0
に近い。$ write 【ユーザ名】
と指定してメッセージ入力に移る。メッセージ送信を終了するには Control + D
だ。
日本語は普通には送信できない
残念ながら、これらのコマンドでは日本語を普通には送信できない。日本語文字が文字化けしてしまうのだ。Base64 エンコードして送信することで回避する方法もあったりしたが、少々面倒。
イマドキ使う機会もないかもしれないが、見つけたので紹介した次第。
こんな記事で2019年はさようなら。良いお年を。