'Ls` ile renk nasıl kapatılır?


50

Renk çıkışı normalde güzel ls, grepvs. Ama (örneğin başka bir komuta sonuçları boru olduğunuz bir komut gibi) bunu kapatabilirsiniz bir switch var istemiyorsanız? ls -G(ile yanar bazı BSD türevi sürümleri lsvarsayılan değil, ama eğer) ls +Gkapatmak etmez. Olacak başka bir şey var mı?


4
Son zamanlarda ama arayan herkes için: GNU için ls ve grepboru tesislerinde herhangi bir şey yapmanıza gerek yok çünkü --color=autoçıktı bir boru olduğunda renklendirmeyi kapatıyor veya aslında bir tty'den başka bir şey yok; 'otomatik' bunun anlamı. Benzer şekilde, FreeBSD ls -Gveya 'CLICOLOR', eğer… CLICOLOR_FORCE ... 'dışında bir terminale yönlendirilmezse' devre dışı bırakılır.
dave_thompson_085

Yanıtlar:


69

Renkli çıktılar lsgenellikle günümüzde çoğu dağıtımda bir takma adla etkinleştirilir.

$ alias ls
alias ls='ls --color=auto'

Bir takma adı her zaman geçici olarak, ters eğik çizgi ile ekleyerek devre dışı bırakabilirsiniz.

$ \ls

Yukarıdakilerin yapılması, sadece bu çağrı için takma adı kısa devre yapacaktır. Herhangi bir takma adı devre dışı bırakmak istediğiniz zaman kullanabilirsiniz.


3
command lsTabii ki de kullanabilirsiniz , ama bu biraz daha hızlı.
iconoclast

Düzgün hile! `` İçin lider kodları güncellemeliyim.
Viet

1
Sevdim
Alex Angelico

27

GNU ile ls, ls --color=neverrenk çıkışını açıkça devre dışı bırakmayı belirleyebilirsiniz . (Bir tane bile olsanız bile alias ls='ls --color=auto', kaçtığınızda ls --color=nevergenişler ls --color=auto --color=neverve sonraki seçenek öncelik kazanır.)


1
Bu gerçekten aradığım cevaptı, ancak BSD'den türetilmiş versiyonlar (OS X, Solaris ve tabii ki * BSD) gibi GNU'lu olmayan vakaları ele aldığından slm'in cevabını seçilen cevap olarak tutacağım.
iconoclast

3

Ayrıca sadece (DOS'ta olduğu gibi) kullanabilirsiniz:

dir

Renksiz sonuçları gösterecek ls, benzer argümanlar ekleyebilirsiniz -l.


2
alias ls=ls

veya

unalias ls

Bu, renkleri kalıcı olarak devre dışı bırakır.


3
Elbette bu biraz av tüfeğiyle uçmak gibi bir şey: lstakma adlara eklediğiniz diğer bütün seçenekleri kaybediyorsunuz ve sadece bir komut yerine tüm oturum boyunca kaybediyorsunuz.
iconoclast

Bu yüzden "kalıcı olarak" dedim :-)
Slyx

2

Çoğu Linux dağıtımında bu, kullanıcılarda varsayılan olarak açıktır .bashrc.

Şuna ~/.bashrcbenzeyen satırı düzenleyin ve kaldırın:

alias ls='ls --color=auto'

Gelecekte bu makinede oluşturulan tüm yeni hesaplar için bu özelliği devre dışı bırakmak istiyorsanız, aynı satırı aşağıdakilerden kaldırın:

/etc/skel/.bashrc 

1

Centos7'de bu /etc/profile.d/colorls.sh… yazının son 3 satırı şöyle:

alias ll='ls -l --color=auto' 2>/dev/null
alias l.='ls -d .* --color=auto' 2>/dev/null
alias ls='ls --color=auto' 2>/dev/null

Eğer arzu ve izinleriniz varsa ... istenmeyen çizgiyi yorumlamak hile yapmalı.


Ya unalias ls ll lda sizin .bashrciçin izinleriniz yoksa
avsej

0

Rengi Kapatmak İçin: unalias ls

Rengi Açmak İçin: alias ls = 'ls --color = auto'

Rengi geçici olarak devre dışı bırakmak için: \ ls -ltr


0

Devam eden başka bir şey olabilir. lsetkileşimli bir şeye bağlı olduğunu düşünmediği sürece renkleri kullanmamalı. Başka bir programa aktarırken bazı şeyleri renklendirmemelidir.

Takma ad genellikle kötü bir fikirdir, çünkü bu seçenekten asla kurtulmazsınız ve üzerinde çalışmanız gereken başka bir makineye taşıyamayabileceğiniz kişisel ayarlara alışırsınız. Başka birşeye borulamak için kapatmanız gerekirse, o borudaki düğmeyi kullanın. Ancak renkler bir boruda olmamalıdır.

Örneğin ls, sizin LS_COLORSortam değişkenini destekleyip desteklemediğine bakın . Trapd00r / LS_COLORS size nasıl tht işleri gösterir. dircolor renkleri kolayca ve her dosya türü için ayarlamanıza olanak sağlar. Ayarlamazsanız LS_COLORSancak renklendirmeyi açmışsanız ls, dosya türlerini ve niteliklerini bulmak için bir sürü sistem çağrısı yapar, böylece renklerin ne renkleneceğini bulur. Sherlock'un arkasındaki insanlar, ortamın LS_COLORStüm bunlardan kaçınabileceğini ve hızda 40x iyileştirme sağlayabileceğini buldu . Ne bulduğunu görmek için kanlı ayrıntılarını okuyun.

Tüm dosya türlerinin varsayılan renkleri kullanmasını sağlarım:

$ export LS_COLORS='bd=0:ca=0:cd=0:di=0:do=0:ex=0:pi=0:fi=0:ln=0:mh=0:no=0:or=0:ow=0:sg=0:su=0:so=0:st=0:tw=0:'

İşte dircolors beslediğim LS_COLORS dosyası:

BLK                   0
CAPABILITY            0
CHR                   0
DIR                   0
DOOR                  0
EXEC                  0
FIFO                  0
FILE                  0
LINK                  0
MULTIHARDLINK         0
NORMAL                0
ORPHAN                0
OTHER_WRITABLE        0
SETGID                0
SETUID                0
SOCK                  0
STICKY                0
STICKY_OTHER_WRITABLE 0

Çünkü grep, sizinki GREP_COLORSveya destekleyip desteklemediğini kontrol edin GREP_OPTIONS.


Bunun yine lsde seçilen renkler için GNU çıkışı çıkış dizileri yaptığını unutmayın . Çıktısını karşılaştırın ls --color=always | od -ao ile ls --color=never | od -aait bu ayarla LS_COLORS.
Kusalananda

Asıl püf noktası bu ls | od -akaçışları yaymaz ve istediğim de bu. Bu lssadece çıkışları bir terminale gönderirken bu sekansları yaymalıdır. Yine de söylersen, kesinlikle bunu yapacak. Yani bunu yapma.
brian d foy

-1

@ brian-d-foy'nin cevabını ekleyerek, çoğu zaman, örneğin dizinin görünmez mavisini veya "OTHER_WRITABLE" ın gösterişsiz yeşilini değiştirmek gibi basit bir sinir bozucu renk vardır , bu yüzden 24- bit görüntüleme :)

export LS_COLORS='di=04;01;38;5;33:ow=04;01;38;5;33;48;2;60;10;0'

Yalnızca dizin rengini ve diğer yazılabilir rengini yeniden tanımlamak için

04: underline;
01: bold/brighter;
38;5;33: redifined-blue;
48;2;60;10;0: dark red background

de ANSI kodu hakkında devamını oku


1
Eldeki soru, lstek tek renkleri nasıl değiştireceğimizle ilgili değil, tüm renkleri GNU'nun çıktısından çıkarmakla ilgilidir .
Kusalananda

. Tamam, nasıl "ile 'ls' ile belirli bir renk kapatma hakkında: İhracat LS_COLORS = 'kumaşla = 00' sadece OTHER_WRITABLE kapatmak için
Iggy Gölü
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.