类似于从 bash 脚本本身将 stdout 的 COPY 重定向到日志文件,但我也想将 stdout 保留为 TTY 设备。
例如,我有以下脚本:
/tmp/teed-off$ cat some-script
#!/usr/bin/env ruby
if $stdout.tty?
puts "stdout is a TTY"
else
puts "stdout is NOT a TTY"
end
/tmp/teed-off$ cat wrapper
#!/usr/bin/env bash
exec > >(tee some-script.log)
./some-script
当我运行它们时,包装器将 stdout 作为 TTY 设备吃掉:
/tmp/teed-off$ ./some-script
stdout is a TTY
/tmp/teed-off$ ./wrapper
stdout is NOT a TTY
我怎样才能翻转这种行为,以便脚本即使通过包装器执行也相信它在 TTY 中?