Agregar color al alias ls personalizado

1

Creé un alias para mostrar los permisos en formato octeto:

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
}'

También configuré el código agregado para mostrar ls en un formato de color:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

Lo que me pregunto es cómo hacer que mi alias se muestre también en un formato de color. Además, si alguien pudiera explicar la sintaxis del alias (después de la tubería)? Copié el texto y estoy tratando de aprender a sintetizar comandos como este.

    
pregunta user52470 09.12.2013 - 23:00

1 respuesta

4

El ls predeterminado provisto con OSX proviene de BSD y no le permitirá hacer lo que quiere.

Usando CoreUtils ls (instalado con macport está disponible con el comando gls )

Obtendrás tus colores usando --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
}'

Sobre la parte awk:

  • ls genera permisos de archivo como 9 caracteres. Es por eso que hay un bucle.
  • el substr devuelve en cada paso uno de los caracteres (índice incrementado, 1 subcadena de longitud de caracteres)
  • ~/[rwx] convierte el char en 1 si es un r o un w o un x
  • la operación detrás solo hace la operación para obtener el resultado decimal
  • print("%0o ", k) solo imprime el resultado octal del valor decimal calculado antes
respondido por el Matthieu Riegler 09.12.2013 - 23:50

Lea otras preguntas en las etiquetas