常に投影される画面にテキストバナーを配置する必要があります。画面はtmuxを使用してPCに接続されます。
テキスト「バナー」の例:
figlet $(fortune)
または
toilet "$(cowsay $(fortune))"
あなたは理解しました。
当初、私たちは問題が発生した場合に備えて、このバナーに「再生機能」が必要だと考え、次のようにしました。
watch --interval 1 --no-title echo Paranoid about crashes, but I should not be
しかし、この製品は1年間で一度も故障したことはありません! (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ツールを使用しますか?
答え1
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
などRETURN
の他の特殊名もサポートされていますERR
。
これに関するより多くのドキュメントは、以下にあります。バッシュリファレンスマニュアル。
答え2
私が理解しているなら、無限ループが欲しいでしょう。
while :; do
sleep 1
clear
# the command: echo, toilet, etc.
done
おそらくウォッチの問題は、ウォッチを呼び出す前にシェル拡張が完了し、出力が二重引用符を$(command ..)
一重引用符に変更しないことです。
watch --interval 1 'cowsay $(fortune)'