write 命令

用途

打开一条通信线路以实时地将消息发送给系统上的其他用户。

语法

要查询所有消息并等待一个主机上用户的应答,并根据句柄来显示它们,请输入以下命令:

-q [ -n 主机 ]

要应答由“实用程序”或“Shell 脚本”发送的“消息”,或“重新显示与给定句柄关联的消息”,请输入以下命令:

礼仪 -把手 { 好的 | 取消 | 查询 } [ -n 主机 ]

要有选择地在另一个主机或特别的设备上给用户发送消息,请输入以下命令:

write [ -r ] {[ -n Host ] 用户 | 用户@主机 } [ ]

描述

write 命令使消息 能够在系统上实时发送。 它提供与另一个登录用户类似交谈一样的通信。 每个用户交替地发送并接收来自其他工作站的短消息。 要发送长消息,可以将完整的消息放在文件内,然后重定向文件作为 write 命令的输入。

对另一个用户(由 User 参数指定),要接收消息,用户必须登录并消息许可权没有被拒绝。 在将消息发送给未登录的用户时,消息user not logged inappears. 如果通过将 梅什格 命令设置为 no 来将消息发送给已拒绝消息许可权的用户,那么消息write: permission deniedappears.

write 命令发出后,立即向消息接收者或消息目标发送以下消息以及一个提醒注意的声响(ASCII BEL 字符):

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

成功地建立连接后,write 命令向两个工作站各发送两个 ASCII BEL 字符。 蜂鸣声提醒发送方消息可以开始而且它提醒接收用户有消息进入。

当按下一次 Enter 键时发送一行。 从发送方到接收方的通信链路保持打开并且发送会继续直到 Ctrl-D 按键顺序结束发送链路。 Then an end-of-text character (<EOT>) is sent to the target workstation and the command mode is terminated.

接收用户或目标用户能够通过向 始发用户发送 write 命令进行响应。 这打开了一条从接收方返回发送方的通信线路, 使得消息响应能够返回。 对于此类型的交换,下面的约定很有用:当第一次写给其他用户时, 在发送任何文本之前 等待响应。 使用诸如以下内容的信号结束消息:o(过) 要提醒对方回复。 使用oo对话结束时 (结束和结束)。

如果字符!(惊叹号) 位于行的开头, 命令调用 shell 以作为命令来执行行的其余部分。

当您向在多个工作站或多使用多个进程登录的用户写入时, write 命令使用在 /etc/utmp 文件中找到的第一个登录实例作为消息传递点 (通常是登录或控制台 shell) ,并且您会收到以下消息:

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

当接收到这条消息时, 如果想将消息发送到 一个不同于初始登录位置的位置, 可以通过指定位置(例如,tty00) 的 Line 来在不同位置联系目标用户。

单个用户使用 梅什格 命令授予或拒绝对另一个用户进行写操作的许可权。 一些命令在运行时拒绝消息许可权以阻止 对其输出的干扰。 具有 root 用户权限 的用户能写给任何工作站而不考虑工作站的消息许可权。

可以用 write 命令 同在其他主机上的用户对话。 您可以使用 "-n"主机名标志或 "用户"@""主持人参数来识别远程主机上的用户。 为了写给 远程主机上的用户,writesrv 守护程序必须 同时运行在当前主机和远程主机上。

qdaemon 守护程序也用 write 命令来将消息发送到在其他主机上的用户并等待应答。 仅有三种有效应答:

描述
ok 原始写操作以 0 状态退出。
cancel 原始写操作以 1 状态退出。
query 显示与给定句柄相关联的消息。

参数

描述
用户 指定接收消息文本人的用户标识。
用户@主机 指定接收消息文本人的用户标识和远程主机。
在其他位置联系目标用户 (tty00,例如)。

标志

描述
-h 句柄,回复 通过使用带有应答选项的 write 来应答用实用程序或 shell 脚本发送的消息。 要用 于 Handle 变量的值在内部生成并在原始消息文本中 提供给用户。 回复可以是ok,cancel,或query.
-n主机 指定一个远程主机。 Host 变量可以是昵称或因特网地址。
-q 查询所有消息并等待一个主机上用户的应答,并根据它们的句柄来显示它们。
-r 生成消息句柄, 将它放到消息头中, 发送消息并等待应答。 此标志 由 qdaemon 守护程序用于操作程序消息并能插入到 shell 脚本中。 它不用于交互式对话。 退出状态为 0 表示应答已被ok,状态为 1 表示应答已更改cancel,并且退出状态 2 2 表示无法联系该用户。
需求:
  • 为了使任何标志都有效,writesrv 守护程序必须在目标主机上运行。 如果您不是使用 -n 标志或 @主机,而是使用 -h-q-r,那么 写服务 守护程序必须在您的主机上运行。
  • 如果您的机器上未安装 TCP/IP ,但设置了 HostName ,那么为了使用带有 -h-q-r 标志的 write 命令与本地主机上的用户进行对话,必须将主机名追加到 loopback/etc/hosts 文件中的条目。 原始项应该是:
    127.0.0.1 loopback LocalHostName
    新项应该是:
    127.0.0.1 loopback LocalHostName HostName

退出状态

本命令返回以下退出值:

描述
重大安全事件数量 成功完成。
>0 目标用户没有登录或拒绝许可权。

示例

  1. 要将消息写至已登录的用户,请输入:
    write june
    按 Enter 键并输入,
    I need to see you! Meet me in the computer room at 12:30.
    然后按下 Ctrl-D 按键顺序终止 write 命令方式。

    如果您的用户标识为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意思是 ,告诉 June 您没什么好说的了。 如果 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 标志,那么不需要提供主机名或用户标识。 该信息通过句柄跟踪。

文件

描述
/etc/hosts 包含 TCP/IP 主机信息。
/etc/utmp 包含 登录 命令的用户信息和记帐信息。