write コマンド

目的

通信回線をオープンして、リアルタイムで、 システム上の他のユーザーにメッセージを送信します。

構文

ホスト上でユーザーからの応答を待っているすべてのメッセージを照会し、そのメッセージにハンドルを付けて表示するには、次のようにタイプします。

書き込み -Q (Q) [ N ホスト ]

ユーティリティーまたはシェル・スクリプトによって送信されたメッセージに応答したり、指定したハンドルに関連したメッセージを再表示するには、次のようにタイプします。

write -hハンドル、 { ok | cancel | query } [ -n ホスト ]

ユーザー (オプションで他のホスト上) または特定のデバイスにメッセージを送信するには、次のようにタイプします。

write [ -r ] {[ -n ホスト ] ユーザー | User@ホスト } [ ]

説明

write コマンドを使用すると、リアルタイムでメッセージをシステム上で送信できます。 このコマンドによって、もう一方のログイン・ユーザーと会話式に通信することができます。 各ユーザーは、他のワークステーションから短いメッセージを交互に送受信します。 長いメッセージの場合は、まずメッセージ全体をファイルに入れてから、そのファイルを write コマンドの入力データとしてリダイレクトすると送信できます。

メッセージを受信する側のユーザー (User パラメーターで指定) は、ログイン済みで、メッセージ許可を拒否している状態であってはなりません。 ログインしていないユーザーにメッセージが送信されると、メッセージは以下のようになります。user not logged inが表示されます。 メスグ コマンドを no に設定してメッセージ許可を拒否したユーザーにメッセージが送信された場合、メッセージは以下のようになります。write: permission deniedが表示されます。

write コマンドを発行すると、下記のメッセージが、ビープ音 (ASCII BEL 文字) とともにメッセージ受信者またはターゲットに即座に送信されます。

Message from SenderID on SenderHostname (ttynn) [Date] ... 

正常に接続すると、write コマンドは 2 つの ASCII BEL 文字を両方のワークステーションに送信します。 ビープ音によって、送信側ユーザーにはメッセージが開始できたことを、受信側ユーザーにはメッセージを送信中であることを警告します。

Enter キーを押すごとに 1 行送信されます。 送信側から受信側への通信リンクがオープン状態のままであれば、Ctrl-D キー・シーケンスで送信リンクを終了するまで送信は継続します。 その後、テキスト終了文字 (< EOT>) がターゲット・ワークステーションに送信され、 書き込み コマンド・モードが終了します。

受信側ユーザーまたはターゲット・ユーザーは、write コマンドを送り返すことで、送信元ユーザーに応答することができます。 これによって、受信側から送信側へ戻す通信回線がオープンされ、返事としてのメッセージ応答が可能になります。 このタイプのメッセージのやり取りでは、 以下のような規則が役に立ちます。すなわち、最初に送信先ユーザーに書き出す際、テキストを送信する前に応答を待ちます。 次のようなシグナルでメッセージを終了します。o(終了) 他のユーザーに返信を通知します。 使用oo会話が終了すると、(何度も) 終了します。

次の文字が!(感嘆符) が付いている場合には、write コマンドはシェルを呼び出して残りの行をコマンドとして実行します。

複数のワークステーションまたは複数のプロセスを使用してログインしているユーザーに書き込むと、 write コマンドは /etc/utmp ファイルにある最初のログイン・インスタンスをメッセージ・デリバリー・ポイント (通常はログインまたはコンソール・シェル) として使用し、次のメッセージを受け取ります。

UserID is logged on more than one place.
You are connected to "Workstation".
Other locations are:
Workstation

このメッセージを受け取ったら、最初のログインのロケーション以外の場所にメッセージを送信したい場合は、そのロケーションの Line (例えば、tty00) を指定して、別のロケーションで送信側ユーザーに接触することができます。

別のユーザーへの書き込み権限は、 メスグ コマンドを使用して個々のユーザーによって付与または拒否されます。 一部のコマンドは、出力による干渉を防止するために、実行中はメッセージ許可を拒否します。 root ユーザー権限を持つユーザーは、ワークステーションのメッセージ許可に関係なく、どのワークステーションにも書き込みができます。

write コマンドを使用すると、他のホストのユーザーと会話できます。 -n'ホスト名フラグや'ユーザー'@'ホストパラメータを使用することで、リモートホスト上のユーザーを識別することができる。 リモート・ホスト上のユーザーに書き込むには、writesrv デーモンを、現行ホスト上とリモート・ホスト上の両方で実行中でなければなりません。

write コマンドは、qdaemon デーモンで使用して他のホストのユーザーにメッセージを送信し、応答を待つこともできます。 有効な応答は下記の 3 つのみです。

項目 説明
ok 元の書き込みは状況 0 で終了します。
cancel 元の書き込みは状況 1 で終了します。
query 所定のハンドルに対応するメッセージが表示されます。

パラメーター

項目 説明
User メッセージ・テキストを受信するユーザーのユーザー ID を指定します。
ユーザー@ホスト メッセージ・テキストを受信するユーザーのユーザー ID およびリモート・ホストを指定します。
別の場所のターゲット・ユーザーに連絡します (tty00(例)。

フラグ

項目 説明
-h ハンドル,返信 応答オプションのある write を使用して、ユーティリティーまたはシェル・スクリプトによって送信されたメッセージに応答します。 Handle 変数に使用する値は、内部で生成され、元のメッセージのテキスト内のユーザーに与えられます。 応答は以下のようになります。ok,cancel、またはquery.
Nホスト リモート・ホストを指定します。 Host 変数にはニックネームまたは IP アドレスを指定できます。
-q ホスト上でユーザーからの応答を待っているすべてのメッセージを照会し、そのメッセージにハンドルを付けて表示します。
-r メッセージ・ハンドルを生成してメッセージのヘッダーに入れ、そのメッセージを送信して応答を待ちます。 このフラグは、オペレーター・メッセージ用に qdaemon デーモンで使用され、シェル・スクリプトに入れることもできます。 対話型会話には使用されません。 終了状況が 0 の場合は、応答が以下のようになっていたことを示します。ok状況が 1 の場合は、応答が以下のようになっていることを示します。cancel終了状況 2 は、ユーザーに連絡できなかったことを示します。
要件:
  • すべてのフラグを機能させるためには、ターゲット・ホスト上で writesrv デーモンが実行中でなければなりません。 N フラグまたは @ホストのいずれも使用していないが、 -h-Q (Q)、または -を使用している場合は、 書き込み (writesrv) デーモンがホスト上で実行されている必要があります。
  • TCP/IP がマシンにインストールされていないが、 HostName が設定されている場合、 -h-q、または -r フラグを指定した write コマンドを使用してローカル・ホスト上のユーザーと会話するには、ホスト名を loopback/etc/hosts ファイル内のエントリー。 元のエントリーには下記のように記述されています。
    127.0.0.1 loopback LocalHostName
    新しいエントリーには下記のように記述します。
    127.0.0.1 loopback LocalHostName HostName

終了状況

このコマンドは、以下の終了値を戻します。

項目 説明
0 正常終了。
>0 指定されたユーザーはログインしていないか、許可を拒否しました。

  1. ログインしているユーザーにメッセージを書き込むには、次のように入力します。
    write june
    Enter キーを押し、下記のように入力します。
    I need to see you! Meet me in the computer room at 12:30.
    次に、Ctrl-D キー・シーケンスを押して write コマンド・モードを終了します。

    ユーザー ID が以下の場合:karenワークステーションを使用している場合tty3,juneのワークステーションは、以下を表示します。

    Message from karen on trek tty3 Aug 17 11:55:24  ...
    I need to see you!  Meet me in the computer room at 12:30.
    <EOT>
  2. 会話を保留するには、次のように入力します。
    write june
    Enter キーを押し、下記のように入力します。
    Meet me in the computer room at 12:30.
    o
    これによって会話が開始します。 このo次の行の先頭にあるものは、メッセージが終わったことを意味します。 これは、June に応答を待っていることを知らせます。 継続したい場合は、Ctrl-D を押さないでください。

    June は以下のように入力して応答します。

    write karen
    Enter キーを押し、下記のように入力します。
    I'm running tests at 12:30. Can we meet at 3?
    o
    ここで下記のように応答できます。
    OK--the computer room at 3.
    oo
    このooオーバー・アウトを意味します。6 月には、これ以上何も言うことはありません。 6 月も終了した場合oo次に、Ctrl-D を押して会話を終了します。
  3. 準備済みメッセージを作成するには、次のように入力します。
    write june < message.text
    これにより、 message.text ファイルの内容が以下のように書き込まれます。juneのワークステーション。
  4. 特定のワークステーションを使用しているユーザーに書き込むには、次のように入力します。
    write -n console
    Enter キーを押し、下記のように入力します。
    The printer in building 998 has jammed.
    Please send help.
    次に、Ctrl-D キー・シーケンスを押します。

    これにより、ワークステーションにログインしているユーザーにメッセージが書き込まれます。/dev/console.

  5. メッセージをユーザーに送信するにはspudsホストpartya次のように入力します。
    write -n partya spuds
    Enter キーを押し、下記のように入力します。
    Your new tape has just arrived,
    come see me to pick it up.
    Thanks!
    次に、Ctrl-D キー・シーケンスを押します。

    または

    write spuds@partya
    Enter キーを押し、下記のように入力します。
    Your new tape has just arrived,
    come see me to pick it up.
    Thanks!
    次に、Ctrl-D キー・シーケンスを押します。
  6. 以下に、 qdaemon デーモンによって送信されるメッセージの例を示します。
    Message from mary on trek (tty10) Aug 17 10:03:34 ...
    Use "write -h 6398492,reply" to reply
    Please insert tape number 5 into rmt0.
    <EOT>
    肯定的に応答するには、下記のように入力します。
    write -h 6398492,ok
    次に、Ctrl-D キー・シーケンスを押します。

    否定的に応答するには、下記のように入力します。

    write -h 6398492,cancel
    次に、Ctrl-D キー・シーケンスを押します。

    -h フラグを使用すると、ホスト名やユーザー ID を指定する必要がありません。 この情報はハンドルにより追跡されます。

ファイル

項目 説明
/etc/hosts TCP/IP ホスト情報が入っています。
/etc/utmp 対象者 書き込み、および ログイン コマンドのユーザーおよびアカウンティング情報が入っています。