who 命令: - + 做什么?符号代表-T选项?

who 命令: - + 做什么?符号代表-T选项?

通过man who出现以下-T选项

  -T, -w, --mesg
          add user's message status as +, - or ?

根据一些教程,如果执行who -T应该会出现这些符号。

在我的情况下,-显示所有已登录的用户tty以及+所有已登录的用户ssh- 没有任何内容?

- + 有什么作用?符号代表-T选项?

答案1

“消息状态”告诉您用户是否接受该特定 TTY 上的消息。

在这里,我的 shell 会话正在运行/dev/pts/3

$ tty
/dev/pts/3

我在此 TTY 以及我正在使用的其他 TTY 上的消息状态为 ,这+意味着我接受消息:

$ who -T
kk       + pts/0        2022-04-23 14:32 (192.168.1.107)
kk       + pts/1        2022-04-23 13:02 (tmux(2971).%0)
kk       + pts/2        2022-04-23 13:02 (tmux(2971).%1)
kk       + pts/3        2022-04-23 13:02 (tmux(2971).%2)
kk       + pts/4        2022-04-23 14:32 (tmux(2971).%3)

然后我关闭其他用户向我发送消息的功能(使用例如write; seeman writeman mesg):

$ mesg n

这会影响消息状态:

$ who -T
kk       + pts/0        2022-04-23 14:32 (192.168.1.107)
kk       + pts/1        2022-04-23 13:02 (tmux(2971).%0)
kk       + pts/2        2022-04-23 13:02 (tmux(2971).%1)
kk       - pts/3        2022-04-23 13:02 (tmux(2971).%2)
kk       + pts/4        2022-04-23 14:32 (tmux(2971).%3)

如果消息状态为?,则表示终端设备未知。

以下内容来自 GNUwho信息手册 ( info '(coreutils)who invocation'),与该选项相关-T

After each login name print a character indicating the user’s
message status:

     ‘+’ allowing ‘write’ messages
     ‘-’ disallowing ‘write’ messages
     ‘?’ cannot find terminal device

who实用程序是一个 POSIX 实用程序,在 POSIX 标准中,该选项添加了一个终端状态,-T具有四个可能的值:+、、-和(空格)。 ?规格像这样描述这些:

  +       The terminal allows write access to other users.

  -       The terminal denies write access to other users.

  ?       The terminal write-access state cannot be determined.

  <space> This entry is not associated with a terminal.

相关内容