Як вимкнути колір за допомогою ls?


50

Це , як правило , приємно мати колір виведення ls, grepі т.д. Але якщо ви не хочете (наприклад, в сценарії , де ви конвеєр результатів в іншу команду) є перемикач , який може відключити його? ls -Gвмикає його (з деякими версіями BSD ls), якщо це не за замовчуванням, але ls +Gне вимикає його. Чи є ще щось, що буде?


4
Пізно, але для тих, хто шукає: для GNU ls і grepпід час трубопроводу вам нічого не потрібно робити, тому що --color=autoвже вимикає забарвлення, коли на виході є труба, або насправді нічого, крім tty; ось що означає "авто". Так само FreeBSD ls -Gабо "CLICOLOR" відключено, якщо вихід не спрямований до терміналу, якщо ... CLICOLOR_FORCE ... ".
dave_thompson_085

Відповіді:


69

Виведення кольорів для, lsяк правило, увімкнено псевдонімом у більшості дистрибутивів сьогодні.

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

Ви завжди можете відключити псевдонім тимчасово, встановивши його за допомогою нахилу.

$ \ls

Виконання вищезазначеного коротко замикатиме псевдонім лише для цього одного виклику. Ви можете використовувати його будь-коли, коли ви хочете вимкнути будь-який псевдонім.


3
Ви також можете використовувати command ls, звичайно, але це трохи швидше.
іконоборство

Акуратний трюк! Потрібно оновити сценарії, щоб мати провідне ``.
В'єт

1
Мені сподобалось \ ls
Alex Angelico

27

За допомогою GNU lsможна вказати ls --color=neverявно відключити кольоровий вихід. (Навіть якщо у вас є alias ls='ls --color=auto', коли ви запустите ls --color=never, він розшириться до ls --color=auto --color=never, і пізніший варіант матиме перевагу.)


1
Це справді відповідь, яку я шукав, але я зберігатиму відповідь slm як обрану, оскільки вона обробляє випадки не-GNU ls, як BSD-версії (OS X, Solaris, і звичайно * BSD).
іконоборство

3

Ви також можете просто (як у DOS):

dir

Він покаже результати без кольору, ви можете додати аргументи такі ж ls, як -l.


2
alias ls=ls

або

unalias ls

Це назавжди відключає забарвлення.


3
Звичайно, це трохи схоже на вбивство мухи з рушниці: ви втрачаєте всі інші опції, які ви додали до lsпсевдонімів, і ви втрачаєте їх протягом усього сеансу, а не лише одну команду.
іконоборство

Ось чому я сказав "постійно" :-)
Slyx

2

У багатьох дистрибутивах Linux це ввімкнено користувачами за замовчуванням .bashrc.

Відредагуйте ~/.bashrcта видаліть рядок, який виглядає так:

alias ls='ls --color=auto'

Якщо ви бажаєте в майбутньому вимкнути цю функцію для всіх нових облікових записів, створених на цій машині, видаліть цей самий рядок із:

/etc/skel/.bashrc 

1

У Centos7 це налаштовано у /etc/profile.d/colorls.sh... останні 3 рядки цього сценарію:

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

Якщо у вас є бажання та дозволи ... коментуючи небажану лінію, слід зробити трюк.


Або unalias ls ll lу вас, .bashrcякщо у вас немає дозволів
avsej

0

Щоб вимкнути колір: unalias ls

Щоб увімкнути колір: псевдонім ls = 'ls --color = auto'

Щоб тимчасово відключити колір: \ ls -ltr


0

Можливо, щось ще відбувається. lsне повинен використовувати кольори, якщо він не вважає, що він підключений до чогось інтерактивного. Він не повинен забарвлювати речі, коли ви передаєте іншу програму.

Псевдонім, як правило, погана ідея, тому що ви ніколи не зможете позбутися цього варіанту, і ви звикнете до особистих налаштувань, які ви, можливо, не зможете взяти з собою до іншої машини, над якою вам доведеться працювати. Якщо вам потрібно вимкнути його, щоб передати його на щось інше, використовуйте перемикач у цій трубі. Але кольорів не повинно бути в трубі.

Бо lsдивіться, чи підтримує ваша LS_COLORSзмінна середовище. У trapd00r / LS_COLORS показує, як працює. THT dircolors дозволяє вам налаштувати кольори щоденно та відповідно до типу файлу. Якщо ви не встановили, LS_COLORSале забарвлення увімкнено, lsзробить купу системних дзвінків, щоб визначити типи файлів та атрибути, щоб він міг розібратися в те, що потрібно забарвити. Люди, що стояли за Шерлоком, виявили, що налаштування LS_COLORSможе уникнути всього цього та покращити швидкість у 40 разів . Прочитайте їхні деталі, щоб побачити, що вони знайшли.

Я змушую всі типи файлів використовувати кольори за замовчуванням:

$ 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:'

Ось файл LS_COLORS, який я подав у кольори кольорів:

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

Для grepсм , якщо у вас підтримує GREP_COLORSабо GREP_OPTIONS.


Зауважте, що це все ще робить lsпослідовності виходу GNU для вибраних кольорів. Порівняйте висновок ls --color=always | od -aз тим з ls --color=never | od -aцієї установки LS_COLORS.
Kusalananda

Справжня хитрість полягає в тому, ls | od -aщо не випромінюється втеча, і саме цього я хочу. Він lsповинен випускати ці послідовності лише тоді, коли він надсилає вихід до терміналу. Якщо ви скажете це, але впевнені, що це буде робити. Отже, не робіть цього.
Brian d foy

-1

додаючи відповідь @ brian-d-foy, більшу частину часу існує простий дратівливий колір, який вам подобається, щоб змінити екземпляр невидимого синього каталогу або блискучого зеленого кольору "OTHER_WRITABLE", тому давайте скористаємося нашими 24- бітовий дисплей :)

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

переосмислити лише колір каталогів та його інший записаний колір

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

читати більше про код ANSI de


1
Питання в тому, що стосується видалення всіх кольорів з виходу GNU ls, а не про те, як змінити окремі кольори.
Kusalananda

ок, як щодо "вимкнення одного конкретного кольору з" ls "за допомогою: export LS_COLORS = 'ow = 00', щоб вимкнути лише OTHER_WRITABLE.
Iggy Lake
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.