무의식적으로 터미널에서 무한 루프를 실행했습니다. 실행했습니다. while sleep 1; do

아래 코드를 임의의 소스에서 터미널로 복사하여 실행했습니다.

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

코드는 터미널의 오른쪽 상단에 실행중인 시계를 표시하는 것입니다. 스 니펫은 매우 잘 작동했으며 원하는 것을 정확하게 수행했지만 이제는이 루프를 끝내고 시계를 제거하고 싶습니다.

또한 위의 코드를 이해해야합니다. tput명령이 무엇을하는지 알면서도 몇 가지 아이디어 가 있지만 여전히 연결할 수없는 점이 많이 있습니다.



답변

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대해 더 많이 알고 타이핑 이 작동하는 방법을 알려 man 1 tput 또는 tldp tput docwhile따르십시오 .


답변