Linuxにおけるwriteコマンドの使い方

Linux/Unixシステムにおいて、writeコマンドは他のログインユーザーの端末にメッセージを送信し、シンプルなリアルタイム通信を実現するために使用されます。

基本構文

write <ユーザー名> [<端末名>]
  • <ユーザー名>:メッセージを受信する対象ユーザー(システムにログインしている必要があります)。
  • [<端末名>]:オプションのパラメータです。対象ユーザーが複数の端末(例:ローカル端末、SSH接続)にログインしている場合、特定の端末を指定できます(指定しない場合は最初の端末に送信されます)。

使用手順

  1. 現在ログインしているユーザーと端末を確認する
    まず、whoまたはwコマンドを使用して、対象ユーザーのログイン情報(ユーザー名と端末名)を確認します:

    who
    # 出力例:
    # user1   tty_1         2025-08-23 09:00
    # user2   pts_0        2025-08-23 09:30 (192.168.1.100)
    

    ここでtty_1pts_0は端末名です(ttyはローカル端末、ptsはリモート/擬似端末を指します)。

  2. メッセージを送信する
    ユーザーuser2pts_0端末にメッセージを送信します:

    write user2 pts_0
    

    実行後、入力モードに入ります。メッセージ内容を直接入力し(1行ずつ)、Enterキーで送信します。対話を終了するにはCtrl+Dを押します。

  3. 受信側の表示
    ユーザーuser2の端末にはメッセージがリアルタイムで表示され、以下のような形式になります:

    Message from user1@localhost on pts_1 at 10:00 ...
    お疲れ様です。メッセージのテストです。
    EOF  # 送信元が終了したことを示す
    

注意点

  1. 権限の制限
    - 受信側がmesg n(メッセージの受信を禁止)を設定している場合、writeコマンドは失敗し、「write: user2 has messages disabled」のようなエラーメッセージが表示されます。
    - 同じグループのユーザーまたはrootユーザーのみがメッセージを送信できます(一部のシステムではデフォルトで制限されています)。

  2. 端末の指定
    ユーザーが複数の端末にログインしており、端末を指定しない場合、writeは自動的に最初の端末を選択しますが、それは受信者が現在アクティブな端末とは限りません。そのため、whoで確認してから指定することを推奨します。

  3. 代替案
    writeは単純なテキストメッセージのみをサポートします。より複雑な通信が必要な場合は、talk(双方向チャット)またはwall(すべてのユーザーにブロードキャスト)を使用してください。

# ログインしているユーザーを確認
who
# 出力例:user2 pts_0        2025-08-23 10:00 (192.168.1.1)

# user2にメッセージを送信
write user2 pts_0
重要なアップデートがあります。
(Ctrl+Dで終了)

writeコマンドは、マルチユーザーシステムで短い通知を迅速に伝えるのに適しており、早期のUnixシステムにおけるシンプルなインスタントメッセージングツールです。

タグ: linux write Unix terminal command-line

6月6日 19:29 投稿