Frage

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 lassen kann?Auch wenn jemand die Syntax des Alias (nach der Pipe) erklären könnte?Ich habe den Text kopiert und versuche zu lernen, solche Befehle synthetisieren zu können.

War es hilfreich?

Lösung

Standard ls OSX kommt von BSD und erlaubt Ihnen nicht, das zu tun, was Sie wollen.

Wobei Kernelemente ls (installiert mit macport ist es mit dem verfügbar gls Befehl)

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 :

  • ls gibt Dateiberechtigungen als 9 Zeichen aus.Deshalb gibt es eine Schleife.
  • der substr gibt bei jedem Schritt eines der Zeichen zurück (inkrementierter Index, 1 zeichenlange Teilzeichenfolge)
  • ~/[rwx] konvertiert das Zeichen in 1, wenn es ein ist r oder ein w oder ein x
  • die Operation dahinter führt nur dazu, dass die Operation das dezimale Ergebnis erhält
  • print("%0o ", k) druckt einfach das Oktalergebnis des zuvor berechneten Dezimalwerts
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit apple.stackexchange
scroll top