화면 "하드 상태" 색상을 동적으로 변경

화면 "하드 상태" 색상을 동적으로 변경

hardstatus화면에 하드 드라이브의 사용 가능한 공간이 표시됩니다. 그런데 생각나는 값보다 작을 때 값의 색상을 변경하고 싶은 경우도 있습니다.
나는 이것을 확인하고 true이면 문자열을 반환하고 false이면 아무것도 반환하지 않는 스크립트를 작성했습니다.
그런데 문제는 화면의 색상이 바뀌는 것입니다 hardstatus. 다음 줄은 다음과 같습니다.

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

하드 상태는 작동하지만 스크립트 검사(%27)의 출력은 표시되지 않고 색상만 변경됩니다. 하지만 %?이를 위해서는 비어 있지 않은 문자열이 필요합니다. 어떻게 해야 하나요?

답변1

실제 해결책을 찾을 수 없지만 hardstatus줄에 하나의 추가 공백을 허용할 수 있는 경우 해결 방법이 있습니다. 명령줄 인수에 따라 스크립트를 두 가지 모드로 실행하도록 만듭니다.

  • 확인 모드에서는 색상을 변경하려는 경우(예: 디스크가 가득 찬 경우) 공백만 에코됩니다.
  • 일반 모드에서는 표시하려는 사용 가능한 공간이나 채우기 비율을 에코합니다.

그런 다음 다음에서 할 수 있습니다 .screenrc.

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

아이디어는 else( %:) 절을 사용하여 항상 동일한 수의 문자를 출력하여 상태 줄이 이리저리 이동하지 않도록 하고 스크립트에 대한 두 번의 호출을 사용하는 것입니다(하나는 선택적으로 색상을 변경하고 다른 하나는 실제 값을 인쇄하기 위한 것입니다). 디스플레이).

작동하는지 확인하기 위해 다음 스크립트를 사용하여 테스트했습니다.

#! /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일 이후 초 단위, 매우 유용함...), 짝수 초는 빨간색, 홀수 초는 ​​일반 색상으로 표시됩니다.

관련 정보