![화면 출력 비활성화 "[화면이 종료됩니다.]"](https://linux55.com/image/20005/%ED%99%94%EB%A9%B4%20%EC%B6%9C%EB%A0%A5%20%EB%B9%84%ED%99%9C%EC%84%B1%ED%99%94%20%22%5B%ED%99%94%EB%A9%B4%EC%9D%B4%20%EC%A2%85%EB%A3%8C%EB%90%A9%EB%8B%88%EB%8B%A4.%5D%22.png)
명령 화면이 완료되면 출력을 어떻게 비활성화합니까 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
분명히 패키지가 업데이트될 때마다 스크립트를 다시 실행해야 합니다.