`script(1)` 的便携式替代品

`script(1)` 的便携式替代品

当我必须生成一个响应终端上交互式输入的工具日志时(stdout 上的 tee 以某种方式打破了这一点),我找到了该script(1)工具,它的工作原理或多或少与广告中所宣传的一样。不幸的是,script与 Mac 相比,在 Linux 上采用了不同的选项(大概是 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"'

相关内容