web-dev-qa-db-ja.com

ソースに関係なくカラー出力を保存

Stdoutが端末ではないことをソースが検出した場合にソースがカラーリングをオフにしたときに、ソースに関係なくカラー出力をファイルに保存するにはどうすればよいですか?

1
PSkocik

私がなんとかまとめた次のスクリプトはそれをしているようです:

#!/usr/bin/env Ruby
# -*- coding: utf-8 -*-

require 'pty'
PTY.spawn(*ARGV) do |r,w,pid|
  begin
    while $_ = r.gets
      STDOUT.print $_
    end
  rescue Errno::EIO
  end
end

CLI引数を疑似端末で実行し、出力をSTDOUTに転送します。

使用例:

./script.rb ls --color=auto >| file #file will have them ANSI color code sequences in it because ls did run in a terminal.
2
PSkocik