Linux命令:write

write 命令

基本介绍

write 是 Linux 系统中用于向其他用户终端发送消息的命令。它允许用户与同一系统上的其他登录用户进行实时通信。write 是系统用户之间进行即时通讯的工具。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

语法

write USERNAME [TTY]

使用示例

1. 向指定用户发送消息

write username

输入示例:

Hello! How are you?
This is a test message.

结束输入:
Ctrl+D 结束消息输入。

2. 向指定终端发送消息

write username pts/0

3. 发送单行消息

echo "Hello from write command" | write username

4. 向多个用户发送消息

# 向用户组发送消息使用 wall 命令
wall "Hello everyone!"

5. 在脚本中使用 write

#!/bin/bash

# 检查用户是否登录
if who | grep -q "^username "; then
    echo "User is logged in"
    echo "System maintenance in 10 minutes" | write username
else
    echo "User is not logged in"
fi

6. 发送文件内容

cat message.txt | write username

输出格式说明

接收方看到的消息

Message from sender@hostname on pts/0 at 10:00 ...
Hello! How are you?
This is a test message.
EOF

错误输出示例

write: user 'invalid_user' is not logged in
write: permission denied
write: no tty specified

工作原理

write 执行流程

# 1. 用户执行 write 命令
write username

# 2. 检查目标用户是否登录
# 3. 检查目标用户是否允许消息(mesg 设置)
# 4. 读取用户输入
# 5. 发送消息到目标用户终端

相关文件

文件说明
/var/run/utmp当前登录用户信息
/dev/tty*终端设备文件

实用技巧

检查用户是否可以接收消息

#!/bin/bash

USERNAME="john"

# 检查用户是否登录
if who | grep -q "^$USERNAME "; then
    # 获取用户终端
    TTY=$(who | grep "^$USERNAME " | awk '{print $2}')
    
    # 检查终端权限
    PERM=$(ls -l /dev/$TTY | cut -c 8)
    
    if [ "$PERM" = "w" ]; then
        echo "$USERNAME can receive messages"
    else
        echo "$USERNAME has disabled messages"
    fi
else
    echo "$USERNAME is not logged in"
fi

发送定时提醒

#!/bin/bash

# 发送提醒消息
send_reminder() {
    local user=$1
    local message=$2
    
    if who | grep -q "^$user "; then
        echo "$message" | write "$user"
        echo "Reminder sent to $user"
    else
        echo "$user is not logged in"
    fi
}

# 使用示例
send_reminder "john" "Don't forget the meeting at 3 PM!"

批量发送消息

#!/bin/bash

# 向所有登录用户发送消息
MESSAGE="System will restart in 5 minutes for maintenance."

for user in $(users); do
    echo "Sending message to $user"
    echo "$MESSAGE" | write "$user" 2>/dev/null || true
done

相关命令

  • mesg:控制终端消息权限
  • wall:向所有用户发送消息
  • talk:与其他用户进行对话
  • users:显示当前登录用户
  • who:显示当前登录用户
  • w:显示当前登录用户及其活动

注意事项

  1. 目标用户:目标用户必须已登录
  2. 消息权限:目标用户必须允许消息(mesg y)
  3. 终端指定:如果用户登录多个终端,可能需要指定终端
  4. root 用户:root 用户可以向任何用户发送消息
  5. 结束输入:按 Ctrl+D 结束消息输入

总结

write 是 Linux 系统中用于向其他用户终端发送消息的工具。它允许用户与同一系统上的其他登录用户进行实时通信。write 是系统用户之间进行即时通讯的工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值