화면 출력 비활성화 "[화면이 종료됩니다.]"

화면 출력 비활성화 "[화면이 종료됩니다.]"

명령 화면이 완료되면 출력을 어떻게 비활성화합니까 screen?

예:

function foo()
{
    echo "Testing..."
    sleep 2
    echo "Done!"
}
export -f foo
screen -q bash -c "foo" &> /dev/null

모든 것이 예상대로 작동하지만 "[화면 종료 중]"을 비활성화하는 방법을 찾을 수 없습니다.

답변1

제가 생각할 수 있는 해결책은 두 가지뿐입니다. 첫 번째는 화면 코드 자체를 수정하고 다시 컴파일하는 것입니다. 두 번째는 expect프로그램 주위에 래퍼와 같은 것을 두는 것입니다(테스트되지 않음).

#!/usr/bin/expect -f
spawn screen -q bash -c foo
interact {
    "\[screen is terminating]" exit
}

답변2

Screen은 tty를 사용하여 해당 텍스트를 작성하므로 stdout 또는 stderr을 /dev/null.

출력에서 해당 줄을 제거하는 가장 쉬운 방법이 있습니다.

이 방법에서는 커서를 위로 이동하고 줄을 지워야 합니다. 이스케이프 문자는 예를 들어 command 를 사용하여 screen명령을 실행하는 데 도움이 될 수 cat있으며 다음과 같이 실행해야 합니다.

screen cat;echo -en '\e[A\e[K'

행이 삭제됩니다 [screen is terminating].

답변3

쉽습니다 :D

유일한 방법은 "화면" 실행 파일을 수정하는 것입니다. 가장 좋은 (휴대용) 방법은 다음과 같습니다.

offset=$(tr -c '[[:print:]]' '\n' <`which screen`|grep -b "screen is terminating" | cut -d ":" -f 1)
printf "\x00" | dd of=`which screen` obs=1 seek=$offset conv=notrunc

분명히 패키지가 업데이트될 때마다 스크립트를 다시 실행해야 합니다.

관련 정보