![`script(1)` 的便携式替代品](https://linux22.com/image/228818/%60script(1)%60%20%E7%9A%84%E4%BE%BF%E6%90%BA%E5%BC%8F%E6%9B%BF%E4%BB%A3%E5%93%81.png)
当我必须生成一个响应终端上交互式输入的工具日志时(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"'