Відповіді:
У 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
можливість ввімкнути кольори, але я не впевнений, як він поводиться в конвеєрі.