Pregunta

Creé un alias para mostrar permisos en formato de 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é agregado este código 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, ¿alguien podría explicar la sintaxis del alias (después de la tubería)?Copié el texto y estoy tratando de aprender a poder sintetizar comandos como este.

¿Fue útil?

Solución

El valor por defecto ls proporcionado con OSX proviene de BSD y no le permitirá hacer lo que quiera.

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

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

Acerca de la parte awk:

  • ls genera permisos de archivos de 9 caracteres.Por eso hay un bucle.
  • el substr devuelve en cada paso uno de los caracteres (índice incrementado, subcadena de 1 longitud de carácter)
  • ~/[rwx] convierte el carácter a 1 si es un r o un w o un x
  • la operación detrás simplemente hace la operación y obtiene el resultado decimal
  • print("%0o ", k) simplemente imprime el resultado octal del valor decimal calculado antes
Licenciado bajo: CC-BY-SA con atribución
No afiliado a apple.stackexchange
scroll top