Odpowiedzi:
W systemie macOS ls
nie jest to GNU ls
i nie akceptuje --color=always
opcji, której użytkownicy Linux mogliby oczekiwać w przypadku tej funkcji.
W wersji macOS ls
kolory są kontrolowane przez dwie zmienne : $CLICOLOR
i $CLICOLOR_FORCE
. Jeśli to pierwsze jest zdefiniowane, terminal określony przez $TERM
obsługuje kolor, a dane wyjściowe są na terminalu, wówczas dane wyjściowe będą kolorowe, podobnie jak --color=auto
opcja 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'
-G
jest równoznaczne ze zdefiniowaniem $CLICOLOR
(a zatem niewystarczającym)
Będę ślepo domyślić, że dystrybucja, jak wiele ma aliasu, że mapy ls
się ls --color=auto
. ls -la --color=always | sed …
powinno działać.
( auto
Ustawienie to, ogólnie mówiąc, ls
sprawdza, 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.)
ls
ma również-G
opcję włączenia koloru, ale nie jestem pewien, jak zachowuje się w potoku.