2016-09-08 3 views
0

이제는 제목이 실제로 내가하고 싶은 것을 설명하지 않는다는 것을 알고 있습니다. 비슷한 질문을 한 적이 있기는하지만 실제로 내가하고 싶은 것을 다루지는 않습니다. 아마도 내가하려는 일에 대한 이름이있을 것입니다.하지만 지금은 저를 멀리합니다.스크립트 종료 후 터미널에서 bash 스크립트 출력을 숨기는 방법은 무엇입니까?

내가 달성하고자하는 것을 설명 할 수있는 방법은 예제를 사용하는 것입니다. 지금 당장은 의도 한대로 작동하는 대화 형 bash 스크립트를 가지고 있지만, 닫은 후에는 터미널에 남아 있다는 것을 귀찮게합니다. "top"vs "htop"으로 생각하십시오. 상단을 닫으면 새로운 프롬프트 라인이 표시되지만 여전히 터미널에서 가장 높은 출력을 볼 수 있습니다. 상단을 연 다음 터미널을 위로 스크롤 할 수도 있습니다. htop을 사용하면 터미널에서 실제로 위아래로 스크롤 할 수 없으며 htop을 닫으면 htop을 호출하는 마지막 프롬프트 행만 표시됩니다.

그래서 htop이나 vi처럼 "포함 된"스크립트를 실행하려고하므로 스크립트 출력을 닫은 후에 스크립트 출력을 볼 필요가 없습니다. 어쨌든 bash로 이것을 할 수 있을까요?

#!/bin/bash 
tput smcup 
"[email protected]" 
tput rmcup 

콜이 alt-screen.sh :

+1

대체 화면 버퍼로 전환하는 전체 화면 응용 프로그램에서 사용되는 초기화/초기화 해제 시퀀스의 부작용입니다. – Barmar

+0

@rednep이 제공하는 솔루션은 나에게 가장 우아하게 보인다. 더 단순하지만 더 잔인한 방법은 스크립트의 끝에서'clear'를 호출하는 것입니다. 그러나 이것은 대화 형 도구가 실행되기 전에 화면 **에 있던 출력을 지 웁니다. – user1934428

답변

0

는 다음과 같은 스크립트를 작성합니다. 해당 스크립트의 도움으로, 당신은으로는 다음 (여기서 htopvi 실행되는) 소위 대체 화면에서 다른 프로그램을 실행할 수 있습니다

./alt-screen.sh foo --option=value arg1 arg2 

을 구체적인 예를 들어,이 시도 :

./alt-screen.sh bash -c 'date; sleep 3' 

어떻게 작동합니까? 매우 간단합니다. tput을 사용하여 대체 화면으로 전환 한 다음 프로그램을 실행 한 다음 원래 화면으로 다시 전환합니다.

참고 : 위의 스크립트는 다소 단순합니다. 다양한 방법으로 향상시킬 수 있습니다. 예를 들어, 다음 버전으로 설명한 작품 또한 프로그램의 상태 코드 보존 :

#!/bin/bash 
tput smcup 
"[email protected]" 
status=$? 
tput rmcup 
exit $status 

주 2 : 나는 광범위하게이 시험하지 않았다, 그것은 거의 확실 바람직하지 않은 부작용이있을 것이다는, 하지만 많은 경우에 잘 작동 할 수 있습니다.

관련 문제