回答:
macOSでは、ls
はGNU ls
ではなく--color=always
、Linuxユーザーがこの機能に期待するオプションを受け入れません。
のmacOSバージョンでls
は、色は2つの変数によって制御されます:$CLICOLOR
および$CLICOLOR_FORCE
。前者が定義されていて、で指定された端末$TERM
が色をサポートしていて、出力が端末に対するものである場合、この出力はGNUの--color=auto
オプションとよく似た色になります。後者の変数も定義されている場合、GNUのように動作する最終条件が削除されます--color=always
。
したがって、色をに渡すにsed
は、次のようなものが必要になります。
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
-G
は、定義と同等$CLICOLOR
です(したがって、不十分です)
多くの場合と同様に、あなたのディストリビューションにはにマップls
されるエイリアスがあると思いますls --color=auto
。ls -la --color=always | sed …
うまくいくはずです。
(auto
設定は、大まかに言って、ls
その出力がディスプレイに送られるかどうか、およびディスプレイの色のみをチェックします。これは、色がエスケープシーケンス、つまり不可視のコマンド文字によって実現されるため、プログラムがそれらを混乱させる可能性があるためですファイル名の一部については、そのようなものです。)
ls
は-G
カラーを有効にするオプションもありますが、パイプラインでどのように動作するかはわかりません。