手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

write(1)

名称

write - 写入其他用户

用法概要

write user [terminal]

描述

write 实用程序可从用户的标准输入中读取行,然后将其写入其他用户的终端。首次调用时,会将以下消息:

Message from sender-login-id (sending-terminal) [date]...

写入 user。成功完成连接后,会向发送者的终端发出两次警告,指明要将发送者键入的内容写入接收者的终端。

如果接收者要回复,只需在收到初始消息后键入

write sender-login-id [sending-terminal]

即可做到。只要在规范输入模式下累计以 NLEOFEOL 特殊字符分隔的输入行,就会将累计的数据写入其他用户的终端。字符的处理方式如下:

  • 如果键入警报字符,会将警报字符写入接收者的终端。

  • 如果键入清除和删除字符,会按 termios(3C) 界面中所述的方式影响发送者的终端。

  • 如果键入中断或文件结束字符,write 会将相应的消息(在 C 语言环境中,为 EOT\)写入接收者的终端并退出。

  • 如果键入 LC_CTYPE 分类 printspace 中的字符,会将这些字符发送到接收者的终端。

  • 当且仅当启用了 stty iexten 本地模式,才会将其他特殊控制字符和多字节或单字节字符(如果其等效宽字符可输出)作为可输出字符处理。

  • 如果键入其他不可输出的字符,会按以下方式将其写入接收者的终端:控制字符将显示为 "^" 后跟相应的 ASCII 字符,设置了高序位的字符将以“元数据”表示法显示。例如,\003 显示为 ^C\372 显示为 M−z

要写入多次登录系统的用户的终端,可以使用 terminal 参数指明要写入的终端。否则,接收者的终端是在 /usr/adm/utmpx 中找到的第一个可写用户实例,会将以下信息性消息写入发送者的标准输出,指明选择的终端:

user is logged on more than one place.
You are connected to terminal.
Other locations are:terminal

可以使用 mesg 实用程序拒绝或授予接收 write 消息的权限。但是,用户的特权可以进一步限制其他用户终端的可访问性域。如果用户缺少执行所请求操作的相应特权,write 实用程序将会失败。

如果在行开头发现了字符 !,则 write 会调用 shell,以将行中的其余数据作为命令执行。

为了获得对其他用户终端的写入权限,write 将对组 ID tty 运行 setgid()(请参见 setuid(2))。

使用 write 时,建议采用以下协议:首次向其他用户执行 write 时,等待其通过 write 发回确认,然后再开始发送。各个用户应该使用特有的信号结束消息(即使用 (o) 表示结束),以便其他用户知道何时回复。要终止会话时,建议使用信号 (oo)(表示会话完毕)。

操作数

支持下列操作数:

user

要将消息写入其终端的人的用户(登录)名。该操作数必须采用 who(1) 实用程序返回的格式。

terminal

who 实用程序提供的格式相同的终端标识。

环境变量

有关影响 write 执行的环境变量 LANG、LC_ALL、LC_CTYPE、LC_MESSAGES 和 NLSPATH 的说明,请参见 environ(5)

退出状态

将返回以下退出值:

0

成功完成。

>0

发往的用户未登录或者发往的用户拒绝了权限。

文件

/var/adm/utmpx

write 的用户和计帐信息

/usr/bin/sh

Bourne shell 可执行文件

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os
CSI
Enabled(已启用)
接口稳定性
Committed(已确定)
标准
请参见 standards(5)

另请参见

mail(1)mesg(1)pr(1)sh(1)talk(1)who(1)setuid(2)termios(3C)attributes(5)environ(5)standards(5)

诊断

user is not logged on

尝试向其终端写入数据的用户未登录。

Permission denied

尝试向其终端写入数据的用户拒绝了该权限(使用 mesg)。

Warning: cannot respond, set mesg–y

您的终端设置为 mesg n,接收者无法给予回复。

Can no longer write to user

接收者在您开始写入后拒绝了权限 (mesg n)。