Der Titel sagt schon alles: Ich möchte diese sauberen farbigen Spalten der Ausgabe von etwas bekommen, wie zum ls -al
Beispiel in 10basetoms Antwort auf diese Frage .
8
Der Titel sagt schon alles: Ich möchte diese sauberen farbigen Spalten der Ausgabe von etwas bekommen, wie zum ls -al
Beispiel in 10basetoms Antwort auf diese Frage .
sed
oder aufteilenawk
und eine ANSI-Escape-Sequenz einfügen .Antworten:
Dies ist machbar mit
awk
. Da das Format vonls -l
nicht angegeben ist, ist es leider nicht möglich, eine Lösung zu finden, die auf jedem System funktioniert, sodass auf einigen Systemen eine Anpassung der Farbe für welche Spalte erforderlich ist.Zunächst möchten wir die ursprünglichen Räume beibehalten, die von verwendet werden
ls -l
. Andernfalls ist die Spaltenausrichtung falsch.FPAT
Dank dieser SO-Antwort können wir dies mit der Option tun :In
awk
jeder Positions param ($1
,$2
bezieht sich auf einen, etc.) Bereich, dh eine Spalte auf der aktuellen Zeile. Mit derFPAT
obigen Option wird jedes Feld neu definiert, um alle vorhergehenden Leerzeichen einzuschließen. Wenn Sieprint
es also zurücksetzen, werden die Leerzeichen beibehalten, sodass die Spalten an derselben Position bleiben.Jetzt können wir einfach jedes Feld bearbeiten, um den Farbcode einzufügen , und dann die bearbeitete Ausgabe drucken:
Beachten Sie, dass jede Spalte anschließend auf die Standardeinstellungen (
0
zwischen[
undm
) zurückgesetzt wird. Wenn die Farbe mehrere Spalten umfassen soll, können Sie diesen Code weglassen. Ich persönlich bevorzuge es, jede Spalte einzeln anzugeben.Sie können den Befehl a wiederverwendbar in Ihrem definieren
.bashrc
. Zum Beispiel:Möglicherweise müssen Sie Ihre
bash
Sitzung neu starten (oder ausführensource ~/.bashrc
), damit diese Funktionsdefinition ausgeführt werden kann.Von hier aus können Sie einfach anrufen
lsc
, um die gewünschte Ausgabe zu erhalten:quelle
--color=always
. Solange Sie keine unterschiedlichen Farben auf die Dateinamensspalte anwenden ($9
in meinem Beispiel),awk
sollten Sie diese durchlaufen.--color=always
ist eine GNU-Erweiterung. Wenn Sie also auf einem Nicht-GNU-System (z. B. macOS, andere BSDs) arbeiten, müssen Sie entweder die GNU-Version installieren oder eine Alternative verwenden .Dadurch wird die zweite Spalte
ls -alF
in Rot, die dritte bis achte in Blau und die neunte in Schwarz gedruckt :Dies ist nur als Beispiel gedacht. Sie können dies nach Herzenslust anpassen.
Für diejenigen, die ihren Code bevorzugen, der über mehrere Zeilen verteilt ist:
Einzelheiten
tput
ist ein Dienstprogramm zum Generieren einer Vielzahl von Steuercodes für Ihr Terminal. Legt beispielsweisetput setaf n
die Vordergrundfarbe so fest,n
dassn
sie zwischen 0 und 7 liegen kannWeitere Informationen
tput
und Farbfunktionen finden Sie hier .Das awk Code definiert Variablen
black
,red
undblue
daß den Anschluß enthält Codes für schwarz, rot und blau ist. Diese Codes stehen am Anfang jeder Spalte, die wir einfärben möchten.Ein Trick ist, dass Farbcodes nicht von selbst zurückgesetzt werden. Unabhängig von der letzten Farbe, die Sie in einer Zeile angeben, ist die Standardfarbe für die nächste Zeile, sofern kein anderer Farbbefehl angegeben ist.
quelle
awk
! Ich würde vorschlagen, dass Sie das Muster einschließen, um auch die Spaltenausrichtung beizubehalten :)FPAT
Trick, um den Abstand korrekt zu halten.