26

在 Linux 命令行里与其他用户通信

 4 years ago
source link: http://os.51cto.com/art/202009/625647.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

ERj67zZ.jpg!mobile

大家好,我是良许

在 Linux 命令行里向其他用户发送信息很简单,很多命令都可以做到这点,麻烦的是你需要从众多命令中挑选一个合适的命令来使用。因此,我挑选了四种常用的 Linux 用户通信命令分享给大家并为你们讲解这四种命令是如何工作的。

wall

wall 命令(意为 write all )允许你向所有在系统已登录的用户发送信息。任何用户都可以使用 wall 命令,但 wall 命令通常是系统管理员用来向用户发送公告通知的(比如服务器将关闭维护)。

一个系统管理员可能会发送如下信息:

$ wall The system will be going down in 15 minutes to address a serious problem 

然后,所有已登录的用户都能看到类似这样的通知:

Broadcast message from admin@dragonfly (pts/0) (Thu Mar  5 08:56:42 2020): 
 
The system is going down in 15 minutes to address a serious problem 

如果你要发送的信息里有单引号,就需要用双引号将要发送的信息括起来,如下所示:

$ wall "Don't forget to save your work before logging off" 

上例所示的命令里,最外层的引号在信息传送时不会显示出来,但如果没有最外层的引号,这条命令执行时会一直等待一个和句中单引号配对的引号以结束句子。

mesg

如果因为某些原因你想拒绝某位用户发送来的信息,就可以使用 mesg 命令。该命令使用时应携带参数 n 或者 y,分别表示拒绝或接受某用户来信,其用例如下( alvin 为用户名):

$ mesg n alvin 
$ mesg y alvin 

值得注意的是,使用 mesg 命令屏蔽用户后,被屏蔽的用户并不会收到自己已被屏蔽的通知,也就是说,被屏蔽的用户并不会知道自己已经被屏蔽了。

你也可以使用这个命令来接受或屏蔽所有用户的通信,只需把用户名参数省略掉即可:

$ mesg y 
$ mesg n 

write

另一个可以直接发送文本信息而不需要转换成电邮的命令是 write。这个命令能被用于和特定用户的通信中,比如你要向用户名为 alvin 的用户发送信息,可以用如下命令:

$ write alvin 
Are you still at your desk? 
I need to talk with you right away. 
^C 

写完发送信息后按 ctrl+C 退出。这个命令允许你传送信息,但不是开启一个双工通道,它仅仅只能用于送出信息。如果接收用户在不止一个终端上登录,你能选择一个你想传输的终端或者依靠系统选择一个耗时最少的终端传输,如下所示:

$ write alvin#1 

如果你被用户 alvin 屏蔽了,你会看到如下提示:

$ write alvin 
write: alvin has messages disabled 

talk / ytalk

talk 和 ytalk 命令让你可以和一个或多个用户建立交互通信,其中 talk 命令只允许你和一个用户建立交互通信。talk 与 ytalk 命令都会启动一个双版面的窗口,通信的每一方都可以在窗口的上部版面输入信息并在下部版面看到回应信息。

被请求加入通信的一方可以通过输入 talk 并在其后跟上通信发起方的用户名即可回应通信,如下所示:

Message from Talk_Daemon@dragonfly at 10:10 ... 
talk: connection requested by [email protected]. 
talk: respond with:  talk [email protected] 
 
$ talk alvin 

值得注意的是,当系统既安装了 talk 也安装了 ytalk 时, talk 命令默认会与 ytalk 命令相关联,所以当你输入 talk alvin 后,系统实际上执行的是 ytalk alvin 。由于我的系统两个命令都安装了,所以执行以上命令后看到的输出实际上是 ytalk alvin 的:

----------------------------= YTalk version 3.3.0 =-------------------------- 
Is the report ready? 
 
-------------------------------= root@lxlinux =---------------------------- 
Just finished it 

以上为用户 alvin 看到的窗口信息,而通信另一方的 root 看到的窗口内容则是反过来的:

----------------------------= YTalk version 3.3.0 =-------------------------- 
Just finished it 
 
-------------------------------= alvin@lxlinux =---------------------------- 
Is the report ready? 

同样,这个命令也用 ctrl+C 来终止。

要用此命令和其他系统的用户通信则需要加上 -h 的参数,参数值为主机名或IP地址。其用例如下:

$ talk -h 192.168.0.11 alvin 

总结

Linux 系统有很多可用于向已登录的用户发送信息的命令,这些命令在某些情景中是非常有用的,比如用 wall 广播信息,用 talk 进行两用户间的交互式会谈,它们都可以让用户快速地交换信息,学会使用这些常用的命令可以让用户间通信更加方便,提高了沟通的效率。

最后希望本文的内容对你的工作有所帮助,如果你还对这些命令有任何疑问,请留言告诉我呗!

本文转载自微信公众号「良许Linux」,可以通过以下二维码关注。转载本文请联系良许Linux公众号。

y6fiIb6.jpg!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK