Utilities
清屏並顯示橫幅
我需要在螢幕上一直投射的文字橫幅。螢幕連接到帶有 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
還支持一些其他特殊名稱:-
EXIT
、DEBUG
和. 有關這些的更多文件可以在bash 參考手冊中找到。RETURN``ERR