Utilities

清屏並顯示橫幅

  • October 17, 2012

我需要在螢幕上一直投射的文字橫幅。螢幕連接到帶有 tmux 的 PC。

文本“橫幅”範例:

figlet $(fortune)

或者

toilet "$(cowsay $(fortune))"

你明白了。

最初我們認為這個橫幅需要“再生能力”以防出現問題,所以我們做了這樣的事情:

watch --interval 1 --no-title echo Paranoid about crashes, but I should not be

但事情從未在一年內崩潰!( uptime> 1年)

因此,我們也在其他地方進行簡化和部署。我只想要一個執行以下操作的 UNIX 命令:

  • 清屏(如clear
  • 顯示格式化的字元串(如printf
  • 是模態的(就像一個ncurses應用程序)

我開始寫這樣的東西,捏了一個網路教程:

#include <ncurses.h>

int main(int argc, char** argv) {
 char* greeting = "Hello, world!";
 initscr();
 addstr(greeting);
 refresh();
 getch();
 endwin();
 return 0;
}

但這不是“模態”(模態是:在 CTRL+C 之前忽略所有輸入),我可能是“重寫現有工具”。

在我的情況下,您會使用哪種 UNIX 工具?

監視 Ctrl+C(INT 信號)的命令是trap.

#!bin/bash

MSG="Hello, world!"
trap "clear; echo -e $MSG" SIGINT SIGTERM

while :
do
   sleep 60
done

更新 - 可以用陷阱擷取的其他信號

SIGINT - Ctrl-c

SIGQUIT- Ctrl-\(這將退出程序,但仍會執行陷阱中的命令)

SIGSTOP(Ctrl-z) 似乎沒有被陷阱抓住。

trap也可以擷取由 發出的信號kill,但我不確定可以擷取多少個信號。

trap還支持一些其他特殊名稱:-

EXITDEBUG和. 有關這些的更多文件可以在bash 參考手冊中找到。RETURN``ERR

引用自:https://unix.stackexchange.com/questions/50659