Что вызывает этот зеленый фон в выводе ls?

Существует много сложных ответов выше, это кажется более простым и более быстрым, чем все они:

find . -maxdepth 1 | sort -f | uniq -di

Если Вы хотите найти названия дубликата файла в подкаталогах затем, необходимо сравнить просто имя файла, не целый путь:

find . -maxdepth 2 -printf "%f\n" | sort -f | uniq -di

Править: Shawn J. Goff указал, что это перестанет работать, если у Вас будут имена файлов с символами новой строки. При использовании утилит GNU можно заставить их работать также:

find . -maxdepth 1 -print0 | sort -fz | uniq -diz

-print0 (для находки) и -z опция (для вида и uniq) заставляет их работать над NUL-завершенными строками вместо завершенных строк новой строки. Так как имена файлов не могут содержать NUL, это работает на все имена файлов.

152
20.07.2016, 16:08
8 ответов

Кроме окраски файлов на основе их типа (бирюзовый для звуковых файлов, яркого красного для Архивов и сжатых файлов, и фиолетовый для изображений и видео), ls также файлы цветов и каталоги на основе их атрибутов:

  • Черный текст с зеленым фоном указывает, что каталог перезаписываем другими кроме пользователя владения и группы, и имеет липкий набор битов (o+w, +t).
  • Синий текст с зеленым фоном указывает, что каталог перезаписываем другими кроме пользователя владения и группы, и не имеет липкого набора битов (o+w, -t).

Stephano Palazzo в Просит, чтобы Ubuntu сделала это очень поучительное изображение по различным цветам атрибута:

What the different colors mean in the terminal

Как terdon указанный, настройки цветов могут быть изменены через dircolors. Со списком различных настроек окраски можно получить доступ dircolors --print-database.

Каждая строка вывода, такой как BLK 40;33;01, имеет форму:

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
  • TARGET указывает на цель для окрашивающего правила

  • TEXT_STYLE указывает на стиль текста:

    • 00 = ни один
    • 01 = полужирный
    • 04 = подчеркивание
    • 05 = мигание
    • 07 = реверс,
    • 08 = скрытый
  • FOREGROUND_COLOR указывает на основной цвет:

    • 30 = черный
    • 31 = красный
    • 32 = зеленый
    • 33 = желтый
    • 34 = синий,
    • 35 = пурпурный
    • 36 = голубой
    • 37 = белый
  • BACKGROUND_COLOR указывает на цвета фона:

    • 40 = черный
    • 41 = красный
    • 42 = зеленый
    • 43 = желтый
    • 44 = синий,
    • 45 = пурпурный
    • 46 = голубой
    • 47 = белый

Поля могут быть опущены, начав справа, так например, .tar 01;31 означает полужирный и красный.

XTerm и большинство других современных эмуляторов терминала поддерживают 256 цветов.

Код основного цвета с 256 цветами XTerm имеет форму:

38;5;[FOREGROUND_COLOR]

Цветовой код с 256 цветовыми фонами XTerm имеет форму:

48;5;[BACKGROUND_COLOR]

где оба FOREGROUND_COLOR и BACKGROUND_COLOR число диапазон 0-255. Полный список цветовых кодов для 16 и 256 цветовых режимов показывают в ниже снимка экрана:

16 and 256 color mode color codes

171
27.01.2020, 19:28
  • 1
    BACKGROUND_COLOR не являются тем же как FOREGROUND_COLOR; Фоновые коды являются разрешением Добавления 40-47 –  Ryan V. Bissell 21.10.2015, 21:55
  • 2
    38;5; запускает xterm код основного цвета с 256 цветами. 48;5; запускает xterm цветовой код с 256 цветовыми фонами. Голубой в моем выводе dircolors 38;5;51 нет 36 хотя результатом является то же. поблагодарите Вас –  stevesliva 07.02.2018, 16:50
  • 3
    @stevesliva: Спасибо за Ваш комментарий. Я отредактировал ответ, чтобы указать на коды цвета фона правильно и описать коды основного цвета и цвета фона с 256 цветами. –  Thomas Nyman 22.02.2018, 11:34

Цвета ls может представить полномочия, значения по умолчанию для некоторых систем должен показать каталоги, где у всех есть полномочия записи с зеленым фоном:

enter image description here

Можно изменить цвета путем редактирования Вашего $LS_COLORS переменное использование dircolors (от man ls):

   Using color to distinguish file types is disabled both by  default  and
   with  --color=never.  With --color=auto, ls emits color codes only when
   standard output is connected to a terminal.  The LS_COLORS  environment
   variable can change the settings.  Use the dircolors command to set it.

Синтаксис является по общему признанию довольно раздражающим здесь, но можно изменить этот цвет путем создания файла с цветами, которые Вы хотите и сохранение его как ~/.dircolors:

dircolors -p > ~/.dircolors

Та команда распечатает значения по умолчанию в ~/.dircolors. Необходимо будет затем отредактировать тот файл и изменить эту строку:

OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky

Например, для создания этого черным текстом на красном фоне (см. здесь для списка цветовых кодов):

OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky

У Вас не должно быть всех значений по умолчанию, можно также просто создать файл с одной строкой, переопределив просто ту, которую Вы хотите изменить. Так или иначе, после того как Вы создали файл, загрузите его:

eval "$(dircolors ~/.dircolors)";

И здесь это в действии:

enter image description here

Чтобы иметь, которые происходят автоматически, добавьте eval команда выше к Вашему ~/.bashrc файл.

56
27.01.2020, 19:28
  • 1
    Цвета по умолчанию часто, кажется, указывают, что исходный автор ненавидит нас и наши глаза, хотя... потоки –  kurtm 10.10.2013, 23:00
  • 2
    Спасибо. ПОЧЕМУ Вы иногда пишете ~/.dirname, и иногда ~/dircolors, и иногда ~/.dircolors? они, как предполагается, являются тем же? –  StackExchange for All 26.03.2015, 17:42
  • 3
    Спасибо. Почему eval "$(dircolors ~/dircolors)"; вместо более прямого пути такой как dircolors ~/dircolors? –  StackExchange for All 22.10.2015, 18:27
  • 4
    @Tim, потому что dircolors только печатает настройки, Вам нужен к оценке он для них, чтобы быть считанными. –  terdon♦ 22.10.2015, 18:58
  • 5
    для них, чтобы быть считанным, кого? –  StackExchange for All 22.10.2015, 19:13

У меня был тот же вопрос, Ответ Тердона - это приятно, но я думаю, что между Дирнамом и Дирмалью есть путаница между Дирнамом и дирижалами?

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

Итак, 3 простых шагов:

Во-первых, как сказал Terdon, скопируйте цвета по умолчанию в файл

dircolors -p > ~/.dircolors

, затем измените этот файл. Вы можете найти некоторые значения для цветов внутри, но я нашел больше здесь :)

и, наконец, добавьте следующую строку в свой ~ / .bashrc файл для цветов, чтобы быть Автоматически загружены при открытии терминала:

eval 'dircolors ~/.dircolors' > /dev/null

VOILà :)

8
27.01.2020, 19:28

Хотя все технические ответы верны, я бы счел это немного неформальным предупреждением, что вы немного щедро раздавали права или копируете крест + крест ... (чаще всего мы все делаем, чтобы получить что-то изначально работает, а?)

Как сделать его синим на черном, ...?

Хорошее «средство защиты от зелени», чтобы вернуть права, которые вы, скорее всего, хотите, это утверждение:

chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/

Лучше всего понял, что это так, если вы понимаете назначение верхнего регистра + X «специальное выполнение», т.е. см. Википедию

Это действительно полезно только при использовании с '+' и обычно в сочетании с -R вариант для предоставления группе или другого доступа к большому дереву каталогов без установки разрешения на выполнение для обычных файлов (таких как текстовые файлы), что обычно происходит, если вы просто использовали " chmod -R a + rx ...

18
20.08.2021, 13:04

Ну, это означает, что у этой папки есть разрешения, если вы запустите это:

сhmod og-w AU_LI

удаляет bgcolor:)

1
20.08.2021, 13:04

Вы можете изменить оттенок зеленого в Putty, чтобы сделать текст читабельным.

Откройте Putty и перейдите в Window\Colours, выберите «Зеленый ANSI», установите его на более темный зеленый (R :0 G :70 B :0 ).

0
20.08.2021, 13:04

tldr; Как просто исправить?

Для быстрого решения проблемы:

LS_COLORS+=':ow=01;33'
  • Другие -перезаписываемые файлы отображаются желтым цветом на nobg
  • Отредактируйте профиль оболочки (, например. ~/.bashrc, ~/.profileи т. д. ), чтобы сделать это постоянным.

Подробнее:

Заменить 33на 34вместо blueна nobg. Еще проще сделать это nofgнаnobg:

LS_COLORS+=:ow=

Чтобы сделать ваше изменение постоянным, добавьте его в свой.profile:

echo "export LS_COLORS+=':ow=01;33'" >> ~/.profile

Для просмотра правил LS_COLORS:

, не связанных с расширением -.
echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'

sedпомещает каждое правило в одну строку, а grepудаляет правила, начинающиеся с*.'.


Чтобы изучить цвета lsна вашем терминале, рассмотрите возможность использования

C="$LS_COLORS"
function sc () {
    echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'
}
function t () {
    ls /mnt # Or the path to your example directory.
}

Тогда

LS_COLORS="$C:ow=38;5;250;48;5;025";t

Как указано в другом ответе (, ответ Томаса Наймана ), 38;5;является префиксом для переднего плана x -термин 256 -цветов, а 48;5;для фона x -термин 256 -цвета. Однако 256 -цветов поддерживаются не всеми терминалами.

См. также-Что означают разные цвета в ls?-на AskUbuntu.

11
20.08.2021, 13:04

Сделать все каталоги одного нормального цвета. Скопируйте/вставьте это в конец файла~/.bashrc

export LS_COLORS+=':tw=01;34:ow=01;34:st=01;34'

Запустите новый терминал, чтобы увидеть изменения

0
30.08.2021, 04:06

Теги

Похожие вопросы