sedを使用してカラー出力を維持する方法

sedを使用してカラー出力を維持する方法

私はこのsedコマンドを使用しており、前のコマンドのカラー出力を維持したいと思います。 sed の出力はls色が指定されていますが、sed の出力は色がありません。私はOSXを使用しています。

ls -la | sed -En  '/Desktop/q;p'

答え1

macOSではlsGNUではなく、Linuxユーザーが期待できるこの機能のオプションはls許可されていません。--color=always

macOSバージョンでは、ls色は次のように表示されます。2つの変数$CLICOLORそして$CLICOLOR_FORCE。前者が定義されている場合、指定された端末は色をサポートし、出力は端末に送信され、出力$TERMはGNU--color=autoオプションと同様に色になります。後者の変数も定義されている場合、最終条件が削除され、GNUの--color=always

したがって、色をに渡すにはsed次のものが必要です。

CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'

答え2

ls私は多くのディストリビューションと同様に、あなたのディストリビューションにも機能する必要があるマップがあると盲目的に推測しますls --color=autols -la --color=always | sed …

auto通常、この設定はls出力がモニターに行くことを確認し、モニターの色のみを確認します。これは、色がエスケープシーケンス、つまり見えないコマンド文字によって実装されるため、プログラムがいくつかの色を混同する可能性があるためです。など)。

関連情報