Réponses:
Sous macOS, le lsn'est pas GNU lset n'accepte pas l' --color=alwaysoption que les utilisateurs Linux peuvent attendre pour cette fonctionnalité.
Dans la version macOS de ls, les couleurs sont contrôlées par deux variables : $CLICOLORet $CLICOLOR_FORCE. Si le premier est défini, le terminal spécifié par $TERMprend en charge la couleur et la sortie est vers un terminal, alors cette sortie sera colorée, tout comme l' --color=autooption de GNU . Si cette dernière variable est également définie, la condition finale est supprimée, se comportant comme les GNU --color=always.
Donc, pour que la couleur passe à travers sed, vous auriez besoin de quelque chose comme ceci:
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
-Géquivaut à définir $CLICOLOR(et donc pas suffisant)
Je devine aveuglément que votre distribution, comme beaucoup, a un alias qui correspond lsà ls --color=auto. ls -la --color=always | sed …devrait marcher.
(Le autoparamètre permet, d'une manière générale, de lsvérifier si sa sortie est affichée ou non, et uniquement la couleur de l'affichage. La raison en est que la couleur est réalisée par des séquences d'échappement, c'est-à-dire des caractères de commande invisibles, donc un programme peut les confondre pour une partie du nom de fichier, des choses comme ça.)
lségalement la-Gpossibilité d'activer la couleur, mais je ne sais pas comment elle se comporte dans un pipeline.