我有一台 Mac。我想使用CentOS 附带的GNU ,因为它比 BSD Mac 版本script
功能更全面。具体来说,在 CentOS 机器上:man script
-c, --command command Run the command rather than an interactive shell. This makes it easy for a script to capture the output of a program that behaves differently when its stdout is not a tty.
而我的 Mac 上的版本没有这样的选项。我想假装是 tty,查看命令的输出,这是我所知道的唯一方法。
我有 brew,并安装了一堆 GNU 版本的实用程序(grep findutils coreutils gawk gnu-sed gnu-tar gnu-indent gnu-getopt gnutls
),但这些似乎都没有提供script
。
我尝试搜索 Homebrew 公式,但不出所料,很多包都提到了“脚本”这个词,所以我很容易错过它。
编辑:根据评论,我不确定是否有GNU script
,但肯定还有另一个版本,而我的 Mac 没有这个版本。script --version
在 CentOS 7 上返回 2.xx,在 Mac 上返回“非法参数”。
此外,从评论来看,这听起来像是util-linux
提供script
,但 brew 版本没有script
我能找到的命令:
brew install util-linx
cd $(brew --prefix)/opt/util-linux
find . -name "script" # returns nothing
答案1
如果你的目标是欺骗命令,让其认为 stdout 是 TTY,你可以使用。它是brew 公式unbuffer
的一部分。expect
brew install expect
unbuffer -p <COMMAND_TO_TRICK>
例子:
echo "colorme" | unbuffer -p grep --color=auto colorme | cat
答案2
我知道你问的是脚本,这很可能是题外话。但是,如果你要录制一些内容以便稍后按时间播放,这可能会对你有用。
由于我使用脚本主要是为了记录正在发生的事情,以便我可以回放它,几乎从来不会只记录命令列表。为此,我改用 asciinema,它可以通过 brew 安装。它有方法可以轻松回放,减少空闲时间,调整整体速度,并且可以在浏览器和 shell 中工作。