Как и для redirect COPY of stdout to log file from within bash script itself, но я также хотел бы сохранить stdout как устройство TTY.tee к журналу в сценарии bash, сохраняя 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 даже при исполнении через обертку?
Как вызов функции C поможет в вопросе о Ruby и shells? –
Я бы хотел, чтобы вам не пришлось сбрасывать на C для сценария оболочки (или третьего), чтобы быть уверенным :( – Nevir
мой плохой .. я думал, что это был dup2, был доступен в скрипте тоже ... – Pradheep