Yanıtlar:
MacOS'ta, ls
GNU değildir ls
ve --color=always
Linux kullanıcılarının bu işlevsellik için bekleyebilecekleri seçeneği kabul etmez .
MacOS sürümünde ls
, renkler iki değişken tarafından denetlenir : $CLICOLOR
ve $CLICOLOR_FORCE
. Birincisi tanımlanmışsa, tarafından belirtilen terminal $TERM
rengi destekler ve çıktı bir terminale giderse, bu çıktı GNU'nun --color=auto
seçeneğine benzer şekilde renklendirilir . İkinci değişken de tanımlanırsa, GNU'lar gibi davranarak nihai koşul kaldırılır --color=always
.
Yani rengin geçmesi sed
için aşağıdakine benzer bir şeye ihtiyacınız olacak:
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
-G
tanımlamakla eşdeğerdir $CLICOLOR
(ve bu nedenle yeterli değildir)
Ben körü körüne dağılımı, birçok gibi eşleyen bir takma adı olduğunu tahmin edersiniz ls
için ls --color=auto
. ls -la --color=always | sed …
çalışmalı.
(Bu auto
ayar, genel olarak konuşursak, ls
çıktısının ekrana gidip gitmediğini kontrol eder ve sadece ekran için renk verir. Bunun nedeni, rengin kaçış dizileri, yani görünmez komut karakterleri tarafından gerçekleştirilmesidir, bu nedenle bir program bunları karıştırabilir dosya adının bir kısmı için böyle şeyler.)
ls
var-G
yanı renk etkinleştirme seçeneğini, ama emin bir boru hattı nasıl davranacağını değilim.