Добавить цвет к пользовательскому псевдониму 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
Что мне интересно, так это как сделать так, чтобы мой псевдоним отображался в цветном формате?Кроме того, может ли кто-нибудь объяснить синтаксис псевдонима (после канала)?Я скопировал текст и пытаюсь научиться синтезировать подобные команды.
Решение
По умолчанию 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)
просто печатает восьмеричный результат десятичного значения, вычисленного ранее
Не связан с apple.stackexchange