그 외에도 \r
또는 \b
접근 방식에 따라 \033[2K
제어 문자 를 사용 하여 터미널에 전체 줄을 지우도록 지시 할 수 있습니다. 이것과 비교할 때의 이점은 삭제하려는 문자 수와 \b
개수를 일치 \b
시킬 \r
필요가 없으며 새 줄이 이전 문자보다 짧은 경우 화면에 문자가 튀어 나오지 않는 것입니다 하나.
다음이이 질문에 적용 할 수있는 방법의 예이며, 여기에 부팅 메시지와 유사한 출력을 만들 수있는 관련 응용 프로그램의 예입니다. 이 특정 예제에서는 0 초에 도달하면 타이머가 사라지고 타이머 줄이 "준비!"로 바뀝니다. 구.
#!/bin/bash
sek=60
echo "60 Seconds"
while ((sek--)); do
printf "One moment please: %d" "$sek"
sleep 1
printf "\r%b" "\033[2K"
done
echo "Ready!"
또 다른 대안은 dialog
명령 행에서 간단한 대화 상자를 작성 하기 위해 명령 을 사용하는 것 입니다. 대화 상자는 타이머 기간 동안 화면에 유지되고 루프로 업데이트되며 완료 될 때까지 타이머가 "준비되었습니다! 종료하려면 종료"메시지로 대체됩니다.
#!/bin/bash
sek=60
echo "60 Seconds"
while ((sek--)); do
echo "$sek" | dialog --progressbox "Please wait" 10 25
sleep 1
done
dialog --msgbox "Ready! Press <OK> to finish" 10 25
watch
명령을 사용하는 방법은 확실하지 않지만 명령을 사용 하여이 작업을 수행하는 방법이있을 수 있습니다 .