Antworten:
Unter macOS ist das ls
kein GNU ls
und akzeptiert nicht die --color=always
Option, die Linux-Benutzer für diese Funktionalität erwarten.
In der macOS-Version von ls
werden die Farben durch zwei Variablen gesteuert : $CLICOLOR
und $CLICOLOR_FORCE
. Wenn ersteres definiert ist, das von spezifizierte Terminal $TERM
Farbe unterstützt und die Ausgabe an ein Terminal erfolgt, wird diese Ausgabe farbig, ähnlich wie bei der --color=auto
Option von GNU . Wenn auch die letztere Variable definiert ist, wird die endgültige Bedingung gelöscht und verhält sich wie bei GNUs --color=always
.
Um Farbe zu erhalten sed
, benötigen Sie etwa Folgendes:
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
-G
ist gleichbedeutend mit Definition $CLICOLOR
(und daher nicht ausreichend)
Ich werde blind erraten , dass Ihre Verteilung, wie viele ein Alias hat , die Karten ls
zu ls --color=auto
. ls -la --color=always | sed …
sollte arbeiten.
(Mit dieser auto
Einstellung wird im Großen und Ganzen ls
überprüft, ob die Ausgabe auf dem Display angezeigt wird oder nicht, und nur die Farbe für das Display. Der Grund dafür ist, dass die Farbe durch Escape-Sequenzen, dh unsichtbare Befehlszeichen, realisiert wird, sodass ein Programm sie möglicherweise verwirren kann für einen Teil des Dateinamens solche Dinge.)
ls
hat die-G
Option, auch Farbe zu aktivieren, aber ich bin mir nicht sicher, wie es sich in einer Pipeline verhält.