Fügen Sie dem benutzerdefinierten ls-Alias ​​Farbe hinzu

Ich habe einen Alias ​​erstellt, um Berechtigungen im Oktettformat anzuzeigen:

alias lso="ls -l | awk '
{
  k=0;
  for (i=0;i<=8;i++)
    k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));
  if (k)
    printf("%0o ",k);
  print
}'

Ich habe auch diesen Code hinzugefügt, um ls in einem farbigen Format anzuzeigen:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

Was ich mich frage, ist, wie ich meinen Alias ​​auch in einem farbigen Format anzeigen kann? Auch, wenn jemand die Syntax des Alias ​​​​(nach der Pipe) erklären könnte? Ich habe den Text kopiert und versuche zu lernen, wie man Befehle wie diesen synthetisieren kann.

Antworten (1)

Die lsmit OSX bereitgestellte Standardeinstellung stammt von BSD und erlaubt Ihnen nicht, das zu tun, was Sie wollen.

Verwenden von CoreUtils ls (mit Macport installiert, ist mit dem glsBefehl verfügbar)

Sie erhalten Ihre Farben mit --color=always:

ls -l --color=always | awk '
{
  k=0;
  for (i=0;i<=8;i++)
    k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));
  if (k)
    printf("%0o ",k);
  print
}'

Über den awk-Teil:

  • lsgibt Dateiberechtigungen als 9 Zeichen aus. Deshalb gibt es eine Schleife.
  • die substrgibt bei jedem Schritt einen der Zeichen zurück (inkrementierter Index, Teilzeichenfolge mit 1 Zeichenlänge)
  • ~/[rwx]wandelt das Zeichen in 1 um, wenn es a roder a woder a istx
  • Die Operation dahinter führt nur die Operation aus, um das Dezimalergebnis zu erhalten
  • print("%0o ", k)druckt nur das Oktalergebnis des zuvor berechneten Dezimalwerts