画面「ハード状態」の色を動的に変更

画面「ハード状態」の色を動的に変更

hardstatus画面にハードドライブの空き容量が表示されます。ちなみに、思い出の値より小さいときに値の色を変更したい場合もあります。
私はこれをチェックし、trueの場合は文字列を返し、falseの場合は何も返さないスクリプトを作成しました。
しかし、問題は画面の色が変わることですhardstatus。次の行は次のとおりです。

hardstatus alwayslastline "%?%27`%{+B r}%?Velocidad"

ハード状態は機能しますが、スクリプトチェック(%27)の出力は表示されず、色のみが変更されます。ただし、%?これには空でない文字列が必要です。どうすればいいですか?

ベストアンサー1

実際の解決策が見つかりませんが、hardstatus行に 1 つの追加のスペースを許可できる場合は、回避策があります。コマンドライン引数に従ってスクリプトを2つのモードで実行するようにします。

  • 確認モードでは、色を変更したい場合(ディスクがいっぱいになるなど)、空白のみがエコーされます。
  • 通常モードでは、表示したい空き容量や塗りつぶしの割合をエコーし​​ます。

その後、次のことができます.screenrc

backtick 1 1 1 /tmp/script.sh check
backtick 2 1 1 /tmp/script.sh normal
hardstatus alwayslastline "%?%1`%{r}%: %?%2`"

アイデアは、else%:)句を使用して常に同じ数の文字を出力し、ステータス行が前後に移動しないようにし、スクリプトへの2回の呼び出しを使用することです(1つはオプションで色を変更し、もう1つは実際の値を印刷するためのものです)。ディスプレイ)。

動作していることを確認するために、次のスクリプトを使用してテストしました。

#! /bin/bash
secs=$(date +%s)
if [ "${1:-check}" = "check" ] ; then
    if (( $secs % 2 == 0 )) ; then
        echo " "
    fi
    exit 0
fi
echo $secs

このように、hardstatus行には現在時刻が赤(1970年1月1日以降の秒単位、非常に便利です...)、偶数秒は赤、奇数秒は通常の色で表示されます。

おすすめ記事