GNU/Linux >> Linux の 問題 >  >> Linux

別のプロセスにパイプするとき、Ansiエスケープコードはどこに行きますか?それらを保持できますか?

色分けされた出力をプロセスからパイプしたい場合があります。 grep…しかし、それを別のプロセスにパイプするとき、例えば。 sed、カラーコードが失われます…

コードをそのまま維持する方法はありますか?

色付きの出力が失われる例を次に示します。

echo barney | grep barney | sed -n 1,$\ p   

承認された回答:

色付きの出力を生成する多くのプログラムは、TTYに書き込んでいるかどうかを検出し、そうでない場合は色をオフにします。これは、テキストをキャプチャするだけの場合にカラーコードが煩わしいため、自動的に「正しいことを実行」しようとするためです。

このようなプログラムからのカラー出力をキャプチャする最も簡単な方法は、TTYに接続されていなくても、カラーを書き込むようにプログラムに指示することです。プログラムにそのオプションがあるかどうかを確認するには、プログラムのドキュメントを読む必要があります。 (例:grep --color=alwaysがあります オプション。)

expectを使用することもできます スクリプトunbuffer 次のような疑似ttyを作成するには:

echo barney | unbuffer grep barney | sed -n 1,$\ p

Linux
  1. 別のBashセッションで実行中のプロセスの出力を表示する方法は?

  2. プロセス置換の出力が正常ではありませんか?

  3. Rmコマンドが発行されたときにファイルはどこに移動しますか?

  1. curl -v の出力をパイプまたはリダイレクトするにはどうすればよいですか?

  2. マルチスレッド プロセスのスレッド ID を、実行中の別のプロセスのプロセス ID と同じにすることはできますか?

  3. ANSI イタリック エスケープ コードをサポートする端末は?

  1. Ctrl + C でプロセスを強制終了できない場合はどうすればよいですか?

  2. ファイル名にスペースが含まれている場合、find コマンドの出力を解析するにはどうすればよいですか?

  3. Linux のパイプ記号 |行う?