Jawaban:
Di macOS, ls
ini bukan GNU ls
dan tidak menerima --color=always
opsi yang mungkin diharapkan pengguna Linux untuk fungsi ini.
Dalam versi macOS ls
, warna dikontrol oleh dua variabel : $CLICOLOR
dan $CLICOLOR_FORCE
. Jika yang pertama didefinisikan, terminal yang ditentukan oleh $TERM
mendukung warna, dan output ke terminal, maka output ini akan berwarna, seperti --color=auto
opsi 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'
-G
sama dengan mendefinisikan $CLICOLOR
(dan karenanya tidak cukup)
Aku akan membabi buta menebak bahwa distribusi Anda, seperti banyak, memiliki alias yang memetakan ls
ke ls --color=auto
. ls -la --color=always | sed …
harus bekerja.
( auto
Pengaturan membuat, secara umum, ls
memeriksa 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.)
ls
memang memiliki-G
opsi untuk mengaktifkan warna juga, tapi saya tidak yakin bagaimana berperilaku dalam pipa.