我正在构建一个纯文本模式的 Linux 上网本。我想在按下热键时显示信息(例如电池状态),该信息会出现在当前虚拟控制台上任何正在运行的程序之上,并在几秒钟内消失。有什么我可以使用的实用程序吗? “墙”不是我的意思(不能弄乱屏幕,而是覆盖)
答案1
我不知道有哪个实用程序可以执行此操作。但是,您可以尝试使用这些/dev/vcs*
设备来实现您自己的。
这手册页vcs
给出了一个示例程序,它不仅通过写入终端屏幕/dev/vcsN
,还通过设置属性/dev/vcsaN
。
通过以下示例 shell 代码可以看到一个简单的演示。请注意,如果在显示文本时屏幕滚动或顶行更新,则原来的内容将在消息显示时间结束时被替换。 (这不是真正的覆盖;它只是临时替代。)
m="** THIS IS AN IMPORTANT MESSAGE ** "
for v in $(seq 7)
do
d="/dev/vcs$v"
if test -c "$d"
then
dd if="$d" bs=80 count=1 >"/tmp/save.$v"
echo -n "$m" >"$d"
fi
done
sleep 5
for v in $(seq 7)
do
d="/dev/vcs$v"
if test -c "$d" -a -f "/tmp/save.$v"
then
dd of="$d" bs=80 count=1 <"/tmp/save.$v"
rm -f "/tmp/save.$v"
fi
done