Добавить цвет к пользовательскому псевдониму ls

Я создал псевдоним для отображения разрешений в октетном формате:

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

Я также добавил этот код для отображения ls в цветном формате:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

Мне интересно, как сделать так, чтобы мой псевдоним отображался в цветном формате? Кроме того, если кто-нибудь может объяснить синтаксис псевдонима (после канала)? Я скопировал текст и пытаюсь научиться синтезировать подобные команды.

Ответы (1)

По умолчанию lsOSX поставляется из BSD и не позволяет вам делать то, что вы хотите.

Использование CoreUtils ls (устанавливается с помощью macport, доступно с помощью glsкоманды)

Вы получите свои цвета, используя --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
}'

О части awk:

  • lsвыводит права доступа к файлам в виде 9 символов. Вот почему есть петля.
  • возвращает substrна каждом шаге один из символов (увеличенный индекс, 1 подстрока длины символа)
  • ~/[rwx]преобразует char в 1, если это a rили a wили ax
  • операция позади просто делает операцию получения десятичного результата
  • print("%0o ", k)просто печатает восьмеричный результат десятичного значения, рассчитанного до