`script(1)`에 대한 이식 가능한 대체품

`script(1)`에 대한 이식 가능한 대체품

터미널의 대화형 입력에 응답하는 도구에서 로그를 생성해야 할 때(stdout의 티가 어떻게든 깨졌음) 이 도구를 찾았고 script(1)광고한 대로 거의 작동합니다. 불행하게도 scriptLinux에서는 Mac과 비교하여 다른 옵션이 사용됩니다(아마도 BSD 버전?).

script휴대용 스크립트에서 비슷한 기능을 사용하고 싶습니다 . 유사한 작업을 수행할 수 있는 다른 도구는 무엇입니까(GNU screen)?

답변1

이는 Linux 및 FreeBSD/macos 기반 플랫폼에서 작동합니다:

myscript() {
    if script --help >/dev/null 2>&1
    then
        SHELL=/bin/sh script -c "$2" -- "$1"
    else
        script -- "$1" /bin/sh -c -- "$2"
    fi
}

용법

myscript <file> <sh-code> 

명령 구성요소가 단순 명령이 아닌 경우 명령 구성요소를 참조해야 합니다. 예를 들어,

myscript myfile 'a=$(date); echo "Today is $a"'

관련 정보