Jawaban:
Di macOS, lsini bukan GNU lsdan tidak menerima --color=alwaysopsi yang mungkin diharapkan pengguna Linux untuk fungsi ini.
Dalam versi macOS ls, warna dikontrol oleh dua variabel : $CLICOLORdan $CLICOLOR_FORCE. Jika yang pertama didefinisikan, terminal yang ditentukan oleh $TERMmendukung warna, dan output ke terminal, maka output ini akan berwarna, seperti --color=autoopsi GNU . Jika variabel yang terakhir didefinisikan juga, kondisi terakhir dijatuhkan, berperilaku seperti milik GNU --color=always.
Jadi untuk memiliki warna yang dilewati sed, Anda perlu sesuatu seperti berikut:
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
-Gsama dengan mendefinisikan $CLICOLOR(dan karenanya tidak cukup)
Aku akan membabi buta menebak bahwa distribusi Anda, seperti banyak, memiliki alias yang memetakan lske ls --color=auto. ls -la --color=always | sed …harus bekerja.
( autoPengaturan membuat, secara umum, lsmemeriksa apakah outputnya masuk ke layar atau tidak, dan hanya warna untuk tampilan. Alasannya adalah warna diwujudkan dengan urutan pelarian, yaitu karakter perintah yang tidak terlihat, sehingga program dapat membingungkan mereka. untuk sebagian nama file, hal-hal seperti itu.)
lsmemang memiliki-Gopsi untuk mengaktifkan warna juga, tapi saya tidak yakin bagaimana berperilaku dalam pipa.