Respuestas:
En macOS, ls
no es GNU ls
y no acepta la --color=always
opción que los usuarios de Linux pueden esperar para esta funcionalidad.
En la versión de macOS de ls
, los colores están controlados por dos variables : $CLICOLOR
y $CLICOLOR_FORCE
. Si se define el primero, el terminal especificado por el $TERM
color soporta, y la salida es a un terminal, entonces esta salida será coloreada, al igual que la --color=auto
opción de GNU . Si la última variable también se define, la condición final se descarta, comportándose como las GNU --color=always
.
Por lo tanto, para pasar el color sed
, necesitaría algo como lo siguiente:
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
-G
es equivalente a definir $CLICOLOR
(y por lo tanto no es suficiente)
Voy a ciegas adivinar que su distribución, como muchos, tiene un alias que se asigna ls
a ls --color=auto
. ls -la --color=always | sed …
Deberia trabajar.
(La auto
configuración hace, en términos generales, ls
verificar si su salida va a la pantalla o no, y solo el color para la pantalla. La razón de esto es que el color se realiza mediante secuencias de escape, es decir, caracteres de comando invisibles, por lo que un programa podría confundirlos para parte del nombre del archivo, cosas así)
ls
tiene la-G
opción de habilitar el color, pero no estoy seguro de cómo se comporta en una tubería.