Sed kullanarak renkli çıktı nasıl tutulur


10

Ben sedkomut kullanıyorum ve önceki komuttan renkli çıktı tutmak istiyorum. Çıktısı lsrenkli, ancak sed çıktısı değil. OSX kullanıyorum.

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

Yanıtlar:


13

MacOS'ta, lsGNU değildir lsve --color=alwaysLinux 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 : $CLICOLORve $CLICOLOR_FORCE. Birincisi tanımlanmışsa, tarafından belirtilen terminal $TERMrengi destekler ve çıktı bir terminale giderse, bu çıktı GNU'nun --color=autoseç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 sediçin aşağıdakine benzer bir şeye ihtiyacınız olacak:

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

MacOS en lsvar -Gyanı renk etkinleştirme seçeneğini, ama emin bir boru hattı nasıl davranacağını değilim.
8bittree

2
@ 8bittree Passing -Gtanımlamakla eşdeğerdir $CLICOLOR(ve bu nedenle yeterli değildir)
Fox

6

Ben körü körüne dağılımı, birçok gibi eşleyen bir takma adı olduğunu tahmin edersiniz lsiçin ls --color=auto. ls -la --color=always | sed …çalışmalı.

(Bu autoayar, 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.)


3
Kör tahmin yanlış. OSX bir Linux dağıtımı değildir ve bir GNU kullanıcısı kullanmaz
Fox
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.