Відповіді:
У macOS, lsце не GNU lsі не приймає --color=alwaysопцію, яку очікують користувачі Linux для цієї функції.
У версії macOS lsкольори керуються двома змінними : $CLICOLORі $CLICOLOR_FORCE. Якщо перший визначений, термінал визначений $TERMкольором підтримки, а вихід - терміналом, то цей вихід буде кольоровим, як і --color=autoваріант GNU . Якщо також визначена остання змінна, остаточна умова знижується, ведучи себе як GNU --color=always.
Отже, щоб колір перейшов до sedвас, вам знадобиться щось на зразок наступного:
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
-Gеквівалентний визначенню $CLICOLOR(і тому недостатній)
Я сліпо припустити , що ваш дистрибутив, як і багато інші , має псевдонім , який відображає lsдо ls --color=auto. ls -la --color=always | sed …повинні працювати.
(Цей autoпараметр змушує lsперевіряти, чи відповідає його вихід на дисплей чи ні, і лише колір для дисплея. Причиною цього є те, що колір реалізується за допомогою послідовностей евакуації, тобто невидимих символів команд, тому програма може заплутати їх для частини імені файлу, подібних речей.)
lsтакож має-Gможливість ввімкнути кольори, але я не впевнений, як він поводиться в конвеєрі.