터미널에서 자신도 모르게 무한 루프를 실행함

터미널에서 자신도 모르게 무한 루프를 실행함

임의의 소스에서 다음 코드를 터미널에 복사하고 실행했습니다.

while sleep 1;
  do tput sc;
  tput cup 0 $(($(tput cols)-29));
  date;
  tput rc;
done &

이 코드는 터미널의 오른쪽 상단에 실행 중인 시계를 표시합니다. 스니펫은 정말 잘 작동했고 정확히 내가 원하는 대로 작동했지만 이제 루프를 끝내고 시계를 없애고 싶습니다.

그리고 위의 코드를 이해해야 합니다. 명령이 무엇을 하는지 알기 때문에 몇 가지 아이디어가 있지만 tput여전히 연결할 수 없는 점이 많습니다.

답변1

jobs세션에서 명령을 실행하여 활성 백그라운드 작업을 나열한 다음 를 입력하여 포그라운드로 가져올 수 있습니다 fg <job number>. 그런 다음 Ctrl+를 입력하여 C이 무한 루프를 중지합니다.

이 시나리오는 코드 조각을 실행하는 터미널에만 적용됩니다.


설명하다:

tput sc- 커서 위치를 저장합니다.

tput cup 0 $(($(tput cols)-29))- 커서를 0Y축, (count of screen columns minus 29)X축 위치로 이동합니다.

date- 현재 날짜만 인쇄하세요.

tput rc- 커서 위치를 복원합니다.

while sleep 1; ... do ... ; done- 루프 지연 1초.

셸의 루프에 대해 자세히 help while알아보려면 입력 하고 팔로우하세요.while사람 1 tput또는tldp tput 문서tput이 어떻게 작동하는지 알아보세요.

관련 정보