Risposte:
Su macOS, lsnon è GNU lse non accetta--color=always opzione che gli utenti Linux potrebbero aspettarsi per questa funzionalità.
Nella versione macOS di ls, i colori sono controllati da due variabili : $CLICOLORe $CLICOLOR_FORCE. Se viene definito il primo, il terminale specificato da $TERMsupporta il colore e l'output è verso un terminale, questo output verrà colorato, proprio come l' --color=autoopzione GNU . Se viene definita anche quest'ultima variabile, la condizione finale viene eliminata, comportandosi come quella di GNU --color=always.
Quindi, per far passare il colore sed, avresti bisogno di qualcosa di simile al seguente:
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
-Gequivale a definire $CLICOLOR(e quindi non sufficiente)
Immagino ciecamente che la tua distribuzione, come molti, abbia un alias lsa cui corrisponda ls --color=auto.ls -la --color=always | sed …dovrebbe funzionare.
(L' autoimpostazione fa, in linea di massima, lsverificare se il suo output va al display o meno, e solo il colore per il display. La ragione di ciò è che il colore è realizzato da sequenze di escape, ovvero caratteri di comando invisibili, quindi un programma potrebbe confonderli per parte del nome del file, cose del genere.)
lsha anche l'-Gopzione per abilitare il colore, ma non sono sicuro di come si comporti in una pipeline.