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

大家好,我是良许

在 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 [email protected] (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

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

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

Message from [email protected] 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?

-------------------------------= [email protected] =----------------------------
Just finished it

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

----------------------------= YTalk version 3.3.0 =--------------------------
Just finished it

-------------------------------= [email protected] =----------------------------
Is the report ready?

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

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

$ talk -h 192.168.0.11 alvin

总结

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

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

最后,最近很多小伙伴找我要Linux学习路线图,于是我根据自己的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。无论你是面试还是自我提升,相信都会对你有帮助!目录如下:

免费送给大家,只求大家金指给我点个赞!

电子书 | Linux开发学习路线图

也希望有小伙伴能加入我,把这份电子书做得更完美!

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

推荐阅读:

版权声明:本文为yychuyu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yychuyu/article/details/108503287

智能推荐

20道25K+Android工程师面试必问面试题

25K大致算的上是Android开发的一个分水岭了。没点真正的东西,还真的拿不到25 本文讲解: 我们为什么要选择离职 面试必问面试题 如何选择心仪的公司 一.我们为何选择离职 工资跟不上消费 上班找不到归宿感和成绩感,上班感觉和坐牢一样 在公司没有发展空间 二.25K+Android工程师必问面试题 1.APK安装过程 应用安装涉及到如下几个目录: system/app:系统自带的应用程序,无法...

nginx实现反向代理

一.代理概念: 1.什么是正向代理和反向代理,概念我这里就不做解释,因为网上有大神已经解释的很好了,我这里给出链接https://www.cnblogs.com/Anker/p/6056540.html。 二.介绍nginx反向代理环境准备,工具准备: 1.首先你需要安装一个虚拟机VMware,虚拟机中安装一个linux系统,linux系统中需要安装两个tomcat服务器。 2.因为后面需要对反向...

第27课 二阶构造模式

本文内容取自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结 构造函数的回顾 关于构造函数 类的 构造函数 用于对象的 初始化 构造函数 与类同名并且没有返回值 构造函数在对象定义时 自动被调用 问题 如判断 构造函数 的执行结果? 在构造函数中执行 return 语句会发生什么? 构造函数执行 结束是否意味着 对象构造成功? 为什么了回答这几个问题,我们编写一个构造函数,并且构造函数中添...

微机原理 第七章 8255A及I/O口

微机原理 第七章 8255A及I/O口 7.1 概述 一、 并行接口 什么叫并行接口? 连接CPU与并行外设的通道 以字节、双字节或字长为传输单位。 为什么要用?或者说,为什么会广泛应用? 传输速度快,但硬件开销大,近距离传输 一般传输什么信息? 传输的信息主要有状态信息、控制信息和数据信息,所以有对应的寄存器 在端口是不够用的时候,得进行扩展 二、可编程并行接口的功能 有什么特点? 具有端口寄存...

猜你喜欢

C语言非OS编程架构

    对于单片机非OS程序来说,好的架构必须具备如下特点:代码规范优雅,结构清晰,各模块之间低耦合。个人根据多年工作经历,总结如下:编写代码前应进行结构设计,C语言是面向过程的语言,所以一般系统结构分为三层:驱动层,功能模块层,任务调用层。为了降低耦合性,函数调用规则尽可能做到上层调用下层。     驱动层     非OS驱动层一般由硬...

spring boot 源码解析12-servlet容器的建立

前言 spring boot 一般都会加入如下依赖: 加入后,就会启动一个嵌入式容器,其默认启动的是tomcat.那么他是如何启动的,我们接下来就分析下. 解析 通过之前的文章我们知道了在SpringApplication#run方法的第9步会调用AbstractApplicationContext#refresh方法,而在该方法的第5步中会调用invokeBeanFactoryPostProce...

leetcode之除数博弈

原题链接 这道题我看到leetcode上有个巧妙解法,利用N的奇偶性就可以判断先手的输赢; 但是看到这道题目属于动态规划,那么就该朝着动态规划的思路去做,但是我觉得这道题虽然是简单题,但是有点绕。...

mkdir: Cannot create directory /usr/master/input. Name node is in safe mode.解决方案

一、问题描述 在Hadoop启动namenode后,创建目录时报错,错误如下: 显示namenode在安全模式下,无法创建文件夹。 二、问题解决 关闭namenode安全模式: 问题解决,重新创建可查看到创建的文件夹。          欢迎关注博主,欢迎互粉,一起学习!        感谢您的阅读,不足之处...

POI的入门学习(二)遍历工作簿的行和列输出单元格内容

POI的入门学习(二)遍历工作簿的行和列输出单元格内容 引入依赖 提前准备的excel表格内容。 Demo代码 输出结果...