스크립트가 전체 화면을 지우기 때문에 깜박임이 발생합니다. 기존 텍스트 위에 페인트하고 필요한 경우에만 지우면 깜박임이 없습니다.
예를 들면 다음과 같습니다.
#!/bin/sh
watchit() {
HOME=$(tput cup 0 0)
ED=$(tput ed)
EL=$(tput el)
ROWS=$(tput lines)
COLS=$(tput cols)
printf '%s%s' "$HOME" "$ED"
while true
do
CMD="$@"
${SHELL:=sh} -c "$CMD" | head -n $ROWS | while IFS= read LINE; do
printf '%-*.*s%s\n' $COLS $COLS "$LINE" "$EL"
done
printf '%s%s' "$ED" "$HOME"
sleep 1
done
}
watchit top -b -n 1
이렇게합니다 :
- 화면에 맞는 주어진 명령의 출력을 인쇄합니다 (랩핑 또는 스크롤 없음).
- 덮어 쓰지 않은 각 줄의 일부를 지우면서 기존 줄을 덮어 씁니다.
ed터미널 의 기능을 사용하여 현재 위치에서 화면 끝까지 인쇄합니다.
당신이 크기 조정 화면을 처리하기 원한다면, 당신이 할당을 움직일 수 ROWS및 COLS외부 루프 내부에, 예를 들면,
#!/bin/sh
watchit() {
HOME=$(tput cup 0 0)
ED=$(tput ed)
EL=$(tput el)
printf '%s%s' "$HOME" "$ED"
while true
do
ROWS=$(tput lines)
COLS=$(tput cols)
CMD="$@"
${SHELL:=sh} -c "$CMD" | head -n $ROWS | while IFS= read LINE; do
printf '%-*.*s%s\n' $COLS $COLS "$LINE" "$EL"
done
printf '%s%s' "$ED" "$HOME"
sleep 1
done
}
watchit top -b -n 1
tput시스템에서 현재 화면 크기를 요청하기 때문 입니다.
더 읽을 거리 :
clear | hexdump -C?