wall 强制每个人输入一些内容才能回到提示符

wall 强制每个人输入一些内容才能回到提示符

我找不到这个问题的答案,可能是因为我不知道如何表达这个问题。

wall每天都会广播一条消息来打开终端。此时,终端用户的提示将消失,直到他们按 ENTER 键。墙命令是

wall -n wall message

由于缺乏更好的解释,以下是用户终端上的样子:

在此输入图像描述

如您所见,它只是挂起。按 ENTER 或执行任何操作都会让我回到提示符。事实上,即使它看起来不像提示,但它确实是提示,因为我可以执行命令,或者按向上箭头查看以前的命令等,而不是按 ENTER。

这并不重要,只是让我烦恼。我考虑过,也许这是设计使然,迫使用户承认他们已经看到了该消息,尽管事实上它只是看起来好像这不是一个提示,似乎它违背了这个目的。

答案1

您所遇到的情况只是后台进程共享控制台的结果:任何可以访问控制台的进程都可以执行相同的操作。因为输出是从 shell 以外的进程发生的,所以它不知道文本在那里!如果您使用编辑器,您也会收到此文本。

要在受控环境中查看此内容,请尝试以下操作:

$ (sleep 5; echo -e "\n\nWhere did this come from?") &
[1] 18898
$ ping localhost
PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.027 ms


Where did this come from?
64 bytes from localhost (::1): icmp_seq=3 ttl=64 time=0.028 ms
64 bytes from localhost (::1): icmp_seq=4 ttl=64 time=0.033 ms
64 bytes from localhost (::1): icmp_seq=5 ttl=64 time=0.028 ms
^C
--- localhost ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4099ms
rtt min/avg/max/mdev = 0.027/0.031/0.039/0.004 ms
[1]+  Done                    ( sleep 5; echo -e "\n\nWhere did this come from?" )
$

显然ping没有打印“这是从哪里来的?”;它来自后台进程。

相关内容