多くの場合(常にではありません)、標準出力は色で表示されます。通常、すべての出力ログも別のファイルに保存します。当然、ファイル内では、色はもう表示されません。
(Linuxで)出力を色付きのファイルに書き込む方法があるかどうかを知りたい。私はtee
を使用してvagrantの出力をファイルに書き込もうとしているので、この方法で出力を見ることができます(適用される場合)。浮浪者専用に使用したい(もちろん将来変更される可能性がある...)
多くのプログラムは、stdoutが端末の場合にのみカラーシーケンスを出力するため、この問題の一般的な解決策は、書き込むパイプが端末であると信じ込ませることです。これは、bsdutilsのscript
コマンドで可能です。
script -q -c "vagrant up" filename.txt
これにより、vagrant up
からの出力がfilename.txt(およびターミナル)に書き込まれます。エコーが望ましくない場合、
script -q -c "vagrant up" filename > /dev/null
ファイルにのみ書き込みます。
出力を色付けするANSIシーケンスをファイルに保存できます。
echo a | grep --color=always . > colour.txt
cat colour.txt
ただし、一部のプログラムではnot toが出力が端末に届かない場合に使用する傾向があります(そのため、--color-always
をgrep
と共に使用する必要がありました)。
また、出力をさまざまな色のエコーで色付けし、色付きの出力をファイルに保存することもできます。例
echo -e '\E[37;44m'"Hello World" > my_file
また、端末の色コードを知っている必要があります
ティーを使用
< command line > |tee -a 'my_colour_file'
Catでファイルを開きます
cat 'my_colour_file'
名前付きパイプを使用すると、色付きのパイプからのすべての出力を別のファイルにリダイレクトすることもできます
例えば
名前付きパイプを作成する
mkfifo pipe.fifo
各コマンドラインは、次のようにパイプにリダイレクトします
<command line> > pipe.fifo
別のターミナルで、パイプからのすべてのメッセージをファイルにリダイレクトします
cat pipe.fifo > 'my_log_file_with_colours'
catでファイルを開き、期待される結果を確認します。
Ubuntuでは、パッケージbsdutils
をインストールしてANSIカラーコードのテキストファイル:に出力できます。
script -q -c "ls --color=always" /tmp/t
kbtin
をインストールして、クリーンな[〜#〜] html [〜#〜]ファイルを生成します。
ls --color=always | ansi2html > /tmp/t.html
aha
とwkhtmltopdf
をインストールしてNiceを生成します[〜#〜] pdf [〜#〜]:
ls --color=always | aha | wkhtmltopdf - /tmp/t.pdf
上記のいずれかをtee
とともに使用して、コンソールにも出力を表示するか、コピーを別のファイルに保存します。例:
ls --color=always | tee /dev/stderr | aha | wkhtmltopdf - /tmp/test.pdf
ansi2html.shというツールを使用していることがわかりました
カラフルな端末データをhtmlファイルにエクスポートする最も簡単な方法は、
使用するコマンドは次のとおりです。
ls --color=always | ansi2html.sh --palette=solarized > ~/Desktop/ls.html