![동일한 화면을 반복하는 스크립트 만들기](https://linux55.com/image/97618/%EB%8F%99%EC%9D%BC%ED%95%9C%20%ED%99%94%EB%A9%B4%EC%9D%84%20%EB%B0%98%EB%B3%B5%ED%95%98%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EB%A7%8C%EB%93%A4%EA%B8%B0.png)
내 스크립트에 간단한 문제가 있습니다. 동일한 화면에 줄 스크립트를 표시하고 위의 마지막 정보를 표시하지 않아야 합니다. 내 데모 코드를 참조하세요.
#!/bin/bash
if [ -t 0 ]; then stty -echo -icanon -icrnl time 0 min 0; fi
#result=`sensors -A`
count=0
keypress=''
echo -ne "linha 1\nLinha 2\n " > /tmp/temp_script.log
while [ "x$keypress" = "x" ]; do
clear
let "count++"
output="$(cat /tmp/temp_script.log)"
printf "$output"\\b
echo -en $count\\n
sleep 1
keypress="`cat -v`"
done
if [ -t 0 ]; then stty sane; fi
exit 0
결과 코드:
첫 번째 예의 여러 줄을 생성하지 않고 두 번째 예와 같이 관련 정보의 루프만 표시하는 방식으로 이 정보를 표시해야 합니다.
어떻게 해야 하나요?
등등, 터미널에는 이전 루프의 느낌이 없고 지금 인쇄되고 있는 내용만 남게 됩니다.
답변1
가설clear
화면을 정말로 지우면 표시된 스크립트 자체가 첫 번째 스크린샷을 생성하지 않습니다. 추가 프로세스가 연결되어 있으면 /tmp/temp_script.log
몇 가지 작업을 수행할 수 있습니다.
반면에 터미널에서 화면이 지워지지 않으면 이는 문제의 일부입니다. 해당 색상 선은 스크립트를 실행하라는 메시지일 수 있으며 화면 상단에 유지하고 싶을 수도 있습니다.
TERM
일반적으로 터미널 설명에 해당하는 적절한 값을 설정합니다 .- "적절한" 터미널 설명은 화면을 지우는 방법을 알려줍니다.
- 부작용으로 (관습에 따라) 화면을 지우면 커서가 화면의 왼쪽 상단으로 이동하지만,
- 화면의 왼쪽 상단에서 화면을 지우면 컬러 라인도 지워집니다.가능한유지하고 싶다)
- 두 번째 줄에서 지우려면 (대부분의 터미널에서) 다음을 수행하십시오.
printf '\033[2H\033[J''
또는
출력 컵 1 0 입력 편집
- 하지만 처음에 메시지가 화면 상단에 표시되지 않으면 아무 것도 남지 않는다는 점을 기억하세요.예전에는화면 상단은 터치되지 않습니다.
문제의 또 다른 부분은 이 세 줄이 반복적으로 인쇄되어 화면을 잡아당긴다는 것입니다. 카운터를 인쇄하려는 위치로 커서를 이동하도록 변경할 수 있습니다. 예를 들어 다음과 같습니다.
printf '\033[4H'
또는
배출 컵 3 0
모두 종합하면 스크립트는 다음과 같을 수 있습니다( printf
사용자 및/또는 터미널 설명에 문제가 있는 것 같으므로 사용하세요).TERM
#!/bin/bash if[-t 0]; then stty -echo -icanon -icrnl 시간 0분 0;fe #result=`센서-A` 개수=0 printf '\033[2H\033[J'' 버튼='' 에코 "린하 1" 에코 "린하 2" while [ "x$keypress" = "x" ]; "숫자++"로 놔두세요 printf '\033[4H' 에코 $count 잠 1 키="`cat-v`" 완벽한 [-t 0]이면 제정신입니다. 0번 출구
추가 자료: