ls -l --color=auto | tee output.log
パイプ/ティーなしでそれは着色されています。 tee
を使用している間、色を維持できるようにするにはどうすればよいですか(画面でのみ色を付けることができます。ログの色は気にしません)。
コマンドの前にunbuffer
を挿入するだけで、それが実際に別の実行可能ファイルにパイピングしている場合でも、インタラクティブな出力に書き込んでいると認識させます。これにより、ls
の場合に色が保持されます。
例えば
unbuffer ls -l --color=auto | tee output.log
まだインストールしていない場合は、Ubuntuやその他のDebian風のLinuxディストリビューションでunbuffer
を実行してインストールできます。
Sudo apt-get install expect-dev
Lsオプションを使用する--color=always
--color=auto
は、パイプラインへの出力に色を付けません-明らかな理由があります。
メインページには次のように書かれています。
--color = autoを使用すると、標準出力が端末(tty)に接続されている場合にのみカラーコードが出力されます。
受け入れられた回答のコメントに記載されているscript
ソリューションを展開します。 script
の使用は、unbuffer
コマンド。
Printls
stdoutへの出力とファイルとカラーコード:
script -efq output.log -c "ls -l --color=auto"
どこ (man script
):
-e, --return Return the exit code of the child process. Uses the same format as bash termination on signal termination exit code is 128+n. -f, --flush Flush output after each write. This is Nice for telecooperation: one person does `mkfifo foo; script -f foo', and another can supervise real-time what is being done using `cat foo'. -q, --quiet Be quiet (do not write start and done messages to either standard output or the TypeScript file).
View色付きの出力ファイル:
less -r output.log