Respostas:
No macOS, o lsnão é GNU lse não aceita a --color=alwaysopção que os usuários do Linux podem esperar para essa funcionalidade.
Na versão do macOS ls, as cores são controladas por duas variáveis : $CLICOLORe $CLICOLOR_FORCE. Se o primeiro for definido, o terminal especificado por $TERMsuporta cores e a saída é para um terminal, então essa saída será colorida, como a --color=autoopção do GNU . Se a última variável também for definida, a condição final será eliminada, comportando-se como as GNU --color=always.
Portanto, para passar a cor sed, você precisaria de algo como o seguinte:
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
-Gé equivalente a definir $CLICOLOR(e, portanto, não suficiente)
Vou cegamente acho que a sua distribuição, como muitos, tem um alias que mapeia lspara ls --color=auto. ls -la --color=always | sed …Deveria trabalhar.
(A autoconfiguração faz, de um modo geral, lsverificar se a saída vai para a tela ou não, e apenas cores para a tela. A razão disso é que a cor é realizada por seqüências de escape, ou seja, caracteres de comando invisíveis, para que um programa possa confundi-las. para parte do nome do arquivo, coisas assim.)
lstambém tem a-Gopção de ativar a cor, mas não tenho certeza de como ela se comporta em um pipeline.