Обычно существует [0] 3 аргумента, которые можно использовать с опцией --color для grep: "auto", "always" и "none". Похоже, что ваш grep может иметь псевдоним для использования --color always , и в этом случае экранирующие коды ANSI, используемые для раскрашивания вывода, мешают способности ls показать их. Когда вы используете --color=none , вы говорите grep не использовать их, чтобы решить вашу проблему. Опция auto является хорошим компромиссом: она говорит об использовании цвета, когда вывод является терминалом, но не о том, если вывод является файлом или конвейером, или вообще чем-то другим, где коды ANSI не будут работать должным образом.
Тем не менее, slhck - это правильно, и вам, вероятно, не нужно обвязывать вывод grep чем-то в этом случае, но хорошо понимать связанные с цветом проблемы на будущее.
[0] Я обычно говорю, потому что моя страница руководства говорит, что вы можете использовать "никогда", "всегда" и "авто". Возможно, "нет" и "никогда" являются синонимами.