Linux中的Wall命令
wall
是一个命令行工具,在所有登录用户的终端上显示一条信息。这些信息可以是在终端上输入的,也可以是文件的内容。wall代表写所有,要想只向一个特定的用户发送消息,请使用write
命令。
通常情况下,系统管理员会发送消息宣布维护,并要求用户退出并关闭所有打开的程序。这些信息会显示给所有打开终端的登录用户。使用图形化桌面环境且没有打开终端的用户不会看到这些信息。每个用户都可以用mesg
工具控制对其终端的写入权限。当超级用户调用wall
命令时,所有用户都会收到信息,不管他们的mesg
设置如何。
广播式信息
wall
命令的句法如下。
wall [OPTIONS] [<FILE>|<MESSAGE>]
如果没有指定文件,wall
会从标准输入中读取信息。
广播信息最直接的方法是调用wall
命令,并将信息作为参数。
wall "The system will be restarted in 10 minutes."
输出
Broadcast message from root@linuxize.host (pts/0) (Sun Oct 4 19:22:07 2020):
The system will be restarted in 10 minutes.
该信息将被广播给当前登录的所有用户。
要抑制横幅,只向登录的用户显示你键入的文本,请用-n
(--nobanner
)选项调用该命令。
wall -n "The system will be restarted in 10 minutes."
输出
The system will be restarted in 10 minutes.
如果你想写多行信息,请在没有参数的情况下调用该命令。
wall
wall
命令将等待你输入文字。当你输入完信息后,按Ctrl+D
来结束程序并广播信息。
你也可以使用here-string重定向或用管道将另一个命令的输出转到wall
。下面是一个例子,说明如何使用echo
命令来广播多行信息。
echo "The system will be restarted in 10 minutes. \nPlease save your work." | wall
从一个文件中广播消息
如果你经常发送相同的信息,你可以把每条信息写到一个文件中,这样你就不需要重新输入相同的文字。wall
只有在以root身份调用时才会从文件中读取。
要广播一个文件的内容,请调用wall
命令,并在后面加上文件名。
The system will be restarted in 10 minutes.
wall message1_file.txt
输出
Broadcast message from root@linuxize.host (pts/0) (Sun Oct 4 19:25:06 2020):
The system will be restarted in 10 minutes.
向群组广播信息
要想只向某个给定组的成员发送信息,在运行命令时要加上-g
(--group
)选项,然后再加上组名。例如,要想只在 "devs "组成员的终端上写信息,你可以运行。
wall -g devs "The system will be restarted in 10 minutes."
该组也可以通过其GID(组ID)来指定。
总结
wall
命令在所有当前登录的用户的终端上写下一条信息。
如果你有任何问题,请随时留言评论。