Odpowiedzi:
W systemie macOS lsnie jest to GNU lsi nie akceptuje --color=alwaysopcji, której użytkownicy Linux mogliby oczekiwać w przypadku tej funkcji.
W wersji macOS lskolory są kontrolowane przez dwie zmienne : $CLICOLORi $CLICOLOR_FORCE. Jeśli to pierwsze jest zdefiniowane, terminal określony przez $TERMobsługuje kolor, a dane wyjściowe są na terminalu, wówczas dane wyjściowe będą kolorowe, podobnie jak --color=autoopcja GNU . Jeśli ta ostatnia zmienna jest również zdefiniowana, warunek końcowy jest odrzucany, zachowując się jak GNU --color=always.
Aby przejść do koloru sed, potrzebujesz czegoś takiego:
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
-Gjest równoznaczne ze zdefiniowaniem $CLICOLOR(a zatem niewystarczającym)
Będę ślepo domyślić, że dystrybucja, jak wiele ma aliasu, że mapy lssię ls --color=auto. ls -la --color=always | sed …powinno działać.
( autoUstawienie to, ogólnie mówiąc, lssprawdza, czy jego dane wyjściowe trafiają na ekran, czy nie, i tylko kolor na wyświetlaczu. Powodem tego jest to, że kolor jest realizowany przez sekwencje specjalne, tj. Niewidoczne znaki poleceń, więc program może je pomylić dla części nazwy pliku, takie rzeczy.)
lsma również-Gopcję włączenia koloru, ale nie jestem pewien, jak zachowuje się w potoku.