Linux 系统提供了多种命令行工具,用于实现本地或远程的文本通信功能,这些工具不仅适用于系统管理员进行远程运维协作,也适合开发者快速共享信息或进行简单的即时交流,以下将详细介绍几种常用的 Linux 聊天命令,包括其基本用法、参数选项及实际应用场景。

本地终端聊天命令
本地聊天命令主要用于同一台主机上的不同终端会话之间通信,适合多用户操作同一服务器时的快速沟通。
write
命令
write
命令允许用户向另一个登录终端发送实时消息,接收方会立即看到弹出的提示(若终端处于活动状态)。
基本语法:
write [用户名] [终端名]
示例:
向用户 alice
的终端 pts/0
发送消息:
write alice pts/0 Hello, this is a test message from write command.
发送完成后按 Ctrl+D
结束输入,接收方终端会显示类似 Message from root pts/1 on ...
的前缀,随后是消息内容。
注意事项:

- 需确保目标用户已登录且终端可写(如未被其他程序占用)。
- 若目标用户未开启消息权限(如通过
mesg n
禁用),发送会失败。
wall
命令
wall
(write all)用于向系统所有在线用户广播消息,常用于系统维护通知。
基本语法:
wall [消息内容或文件]
示例:
通过键盘输入广播消息:
wall The system will undergo maintenance at 2:00 AM. Please save your work.
或从文件读取消息广播:
wall /etc/maintenance_msg.txt
效果:所有登录用户的终端会立即弹出消息,前缀为 Broadcast message from root
。

mesg
命令
mesg
用于控制当前终端是否接收来自其他用户的 write
或 wall
消息。
语法:
mesg y # 允许接收消息(默认) mesg n # 禁止接收消息
检查状态:
mesg
输出 is y
表示允许,is n
表示禁止。
网络聊天命令
网络聊天命令支持跨主机的文本通信,需依赖网络协议(如 TCP/IP),适用于远程协作或调试。
nc
(Netcat)
nc
被称为“网络工具中的瑞士军刀”,可通过 TCP 或 UDP 实现简单的聊天服务。
场景1:点对点聊天
- 发送端(监听指定端口,如 1234):
nc -l -p 1234
- 接收端(连接到对方 IP 的 1234 端口):
nc 192.168.1.100 1234 ``` 会实时传输至对方终端,按 `Ctrl+C` 终止连接。
场景2:文件传输
发送方通过 nc
发送文件:
nc -l -p 1234 < file.txt
接收方保存文件:
nc 192.168.1.100 1234 > received_file.txt
常用参数:
-l
:监听模式-p
:指定端口-u
:使用 UDP 协议(默认 TCP)
telnet
telnet
是基于 TCP 的远程登录工具,也可用于简单聊天(需目标端口开放 Telnet 服务)。
示例:
连接到远程主机的 23 端口(默认 Telnet 端口):
telnet 192.168.1.100 23
连接成功后可直接输入文本进行通信,但 Telnet 流量未加密,安全性较低,现多被 SSH 替代。
ssh
结合命令实现聊天
虽然 SSH 主要用于远程登录,但可通过管道和命令组合实现临时聊天功能。
示例:
用户 A 在本地通过 SSH 向用户 B 的远程主机发送消息:
echo "Hello from user A" | ssh userB@remote_host "wall"
或利用 tee
命令实现双向简单聊天(需双方配合):
# 用户 A 执行(监听本地 5555 端口并转发到用户 B 的远程终端) nc -l -p 5555 | ssh userB@remote_host "tee /dev/pts/0" # 用户 B 执行(将输入发送到用户 A 的本地 5555 端口) ssh -R 5555:localhost:5555 userA@local_host "nc localhost 5555"
此方法较为复杂,适合临时应急场景。
专业聊天工具的命令行版
除了系统原生工具,还有一些第三方命令行聊天客户端,支持更丰富的功能(如群组、加密等)。
weechat
weechat
是一个开源的命令行 IRC 客户端,支持 IRC、Slack、Telegram 等协议的扩展。
安装(以 Ubuntu 为例):
sudo apt install weechat
基本使用:
启动后通过 /server
命令连接 IRC 服务器(如 irc.freenode.net
),再通过 /join #channel
加入频道。
常用命令:
/query nickname
:与用户私聊/msg #channel message
:向频道发送消息/part
:离开频道
tmux
+ shell
实现本地协作
tmux
是终端复用工具,可通过共享会话实现多人实时协作。
操作步骤:
- 用户 A 创建新会话:
tmux new -s chat_session
- 在会话中共享:
tmux share -t chat_session
- 用户 B 加入会话:
tmux attach -t chat_session
双方在同一终端会话中操作,输入内容实时同步。
聊天命令对比与选择
以下表格总结了常用命令的适用场景及特点:
命令 | 类型 | 协议/依赖 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|---|
write | 本地 | 本地终端权限 | 简单易用,无需配置 | 需目标终端在线且未禁用消息 | 同主机多终端快速沟通 |
wall | 本地 | 本地系统广播 | 支持全局通知 | 消息无法定向,可能打扰用户 | 系统维护广播 |
nc | 网络 | TCP/UDP | 灵活,支持文件传输 | 需手动指定端口,无加密 | 临时点对点通信或文件传输 |
telnet | 网络 | TCP | 系统原生,兼容性好 | 流量未加密,安全性低 | 旧系统调试或简单远程交互 |
weechat | 网络 | IRC/扩展协议 | 支持多协议,功能丰富 | 需学习命令,配置较复杂 | 长期 IRC 协作或跨平台聊天 |
相关问答 FAQs
Q1:使用 write
命令时提示“write: alice has messages disabled”,如何解决?
A:这表示目标用户通过 mesg n
禁用了消息接收,可让目标用户执行 mesg y
开启权限,或改用 wall
广播(若需全局通知),或通过 nc
等网络工具绕过本地权限限制。
Q2:如何通过 nc
实现加密聊天?
A:可结合 openssl
使用 SSL/TLS 加密,发送端监听 1234 端口并启用加密:
nc -l -p 1234 --ssl -cert cert.pem -key key.pem
接收端连接时启用加密验证:
nc --ssl 192.168.1.100 1234
需提前生成证书文件(cert.pem
和 key.pem
),确保双方信任证书链。