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

apple.stackexchange https://apple.stackexchange.com/questions/113319

  •  29-09-2020
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

По умолчанию ls поставляемый с OSX, исходит из 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] преобразует символ в 1, если это r или w или x
  • операция, стоящая за ней, просто выполняет операцию по получению десятичного результата
  • print("%0o ", k) просто печатает восьмеричный результат десятичного значения, вычисленного ранее
Лицензировано под: CC-BY-SA с атрибуция
Не связан с apple.stackexchange
scroll top