Pergunta

Eu criei um alias para exibir as permissões em octeto formato:

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

Eu também definir adicionado este código para exibir ls em um colorido formato:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

O que eu estou pensando, é como fazer o meu alias exibir em um colorido formato bem?Também, se alguém poderia explicar a sintaxe do alias (após o pipe)?Eu copiei o texto e estou tentando aprender a ser capaz de sintetizar os comandos de como ele.

Foi útil?

Solução

O padrão ls fornecido com o OSX vem do BSD e não permite que você faça o que você quiser.

Usando CoreUtils ls (instalado com o macport está disponível com a gls de comando)

Você vai ter suas cores utilizando --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 o awk parte :

  • ls saídas as permissões de arquivo de 9 caracteres.É por isso que existe um loop.
  • o substr retorna a cada passo, um dos char (incrementado índice 1 char de comprimento substring)
  • ~/[rwx] converte o char para 1 se se trata de um r ou um w ou um x
  • a operação de trás só faz a operação a obter o resultado decimal
  • print("%0o ", k) imprime apenas a octal resultado da vírgula decimal do valor calculado antes
Licenciado em: CC-BY-SA com atribuição
Não afiliado a apple.stackexchange
scroll top