在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 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

talkytalk 命令讓你可以和一個或多個用戶建立交互通訊,其中 talk 命令只允許你和一個用戶建立交互通訊。talkytalk 命令都會啟動一個雙版面的窗口,通訊的每一方都可以在窗口的上部版面輸入資訊並在下部版面看到回應資訊。

被請求加入通訊的一方可以通過輸入 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

有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章