Ls komutu için daha az renkli çıktı yok


21

Eğer çalıştırırsam lshızlı bir şekilde dosya türüne göz atmak için oldukça kullanışlı bulduğum renkli çıktılar alıyorum. Ben borunun kendisine çalıştığınızda lessbile -rve -Rbayraklarla hep kaybolmak renklendirme. zsh5.0.7 sürümünü kullanıyorum . Herhangi bir fikir? Teşekkürler.

düzenleme: Ben OS X üzerinde


lsİle çağrıldığını onaylayabilir misiniz --color? Boru hattını ( ^Z) askıya psalmayı veya başka bir terminalden kullanmayı deneyin . Hangi çıktı which lsüretir?
ta zackse

less -rlessls
OP'yi

Bunun henüz bir kopyası olmadığına şaşırdım, ancak bulabildiğim en yakın şey değişkende Store komut çıktısıydı ve bu Süper Kullanıcı'da.
Scott,

@Scott kesin bir yineleme olup olmadığından emin değilim, ancak bunun cevabının çok benzer olduğu bazı sorular var ( lssonuç stdout'a bağlı). Hatırladığım tek şey, unix.stackexchange.com/questions/157285/… 'in kendisi de unix.stackexchange.com/questions/10421/…
15:15

Ancak bu sorular, ls --color=autoyalnızca bir terminale yazarken (yani standart çıktı bir terminal olduğunda) renk kullanma anlamına gelmediğini, bir dosya veya boru olduğunda kullanılmadığını belirtir .
Scott,

Yanıtlar:


21

Bu, tasarım gereğidir: renkli çıktı üreten programlar, genellikle çıktıları bir terminale gittiğinde, bir boruya veya normal bir dosyaya gönderildiğinde değil. Bunun nedeni, bir terminalde gönderilen verinin bir insan tarafından büyük olasılıkla okunmasıdır, oysa bir programa aktarılan veya bir dosyaya yazılan verilerin bazı programlar tarafından ayrıştırılması muhtemeldir, bu nedenle renk değiştiren kaçış dizileri gibi yabancı içerik içermemelidir. .

GNU ls, seçeneği --color(veya --color=auto) geçtiğinizde bir terminalde renkli çıktı görüntüler . Renkli çıktının, standart çıktının dosya türünden bağımsız olarak zorlamak için, pass --color=alwaysveya --color=yes(eşanlamlıdır). Bu sözleşmeyi GNU grep, FreeBSD grep git diff, vb. Gibi diğer komutlar takip etti .

ls --colors=yes -l | less

FreeBSD sürümüyle ls(OSX'te de bulunur ve colorlsOpenBSD ve NetBSD'de bağlantı noktası olarak bulunur), -Gçıkış bir terminal olduğunda renkleri görüntüleme seçeneğini iletin . CLICOLOR_FORCEÇıktı dosyası türünden bağımsız olarak ortamı görüntülemek için ortamı ayarlayın .

CLICOLOR_FORCE=1 ls -l | less

20

Sorun büyük olasılıkla, lsprogramınızın --color=autotemelde çıktının sadece terminale bağlı olması durumunda renklendirilmesi gerektiği, aksi halde (bir boruya veya dosyaya bağlı çıkış) hiçbir renk yayılmaması gerektiği anlamına gelmesidir.

Renklere sahip olmak istiyorsanız böyle bir --colorseçenek seçmelisiniz always, bu yüzden deneyin

ls --color=always | less -R

Bu davranış her zaman beklediğiniz şeyse, yalnızca takma ad oluşturun:

alias ls='ls --color=always'

Kurulumumda bash sürüm 4.3, --color geçersiz bir seçenek .. "color" için Grepping bana "-G" seçeneğini anlatıyor ancak otomatik veya her zaman seçeneği hakkında bir şey söylemiyor. Herhangi bir fikir?
nunos

5
@nunos lsgelmiyor bash, bağımsız bir program. ls --versionSürümünü kontrol etmek için çalıştırın . Benimki GNU coreutils) 8.21 .
jimmij

@jimiij lsversiyonumda --versionbayrak bulunmuyor . OS X’den varsayılanı kullanıyorum, yardımcı olup olmadığından emin değilim.
nunos

@nunos lütfen daima işletim sisteminizden bahsedin. Linux ve OSX gibi GNU olmayan ekler arasında büyük farklar vardır.
terdon

0

Jimmij'in cevabını yorumlayamıyorum, çünkü 50'den az temsilcim var ama Bash'de benim için neyin işe yaradığını açıklamak istiyorum.

Eğer koşarsan

$ man ls | grep color

manBelirli kabuk ortamınız için -page'in tüm girişlerini göreceksiniz (bizim durumumuzda bash).

Benim için aşağıdaki ayar hile yaptı:

$ alias ls='ls -G'

3
Bu ne için çalıştı? -GBayrak nasıl bir ilgisi vardır lsonun renkli çıktısını yönetir. Bu sadece grupları çıktısından kaldırır ls -l. BSD'lerdeki (OSX'te de kullanılan) renk çıktısını etkiler, demek istediğin bu mu? Her durumda, bir dosyaya yönlendirildiğinde renk göstereceğini sanmıyorum, sadece komut satırında renk gösterecek.
terdon
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.