在Linux命令列裡與其他使用者通訊
阿新 • • 發佈:2020-09-10
大家好,我是良許
在 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
### 有收穫?希望老鐵們來個三連擊,給更多的人看到這