为自定义 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,并且不允许您做您想做的事情。
使用 核心工具 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
在每一步返回 char 之一(递增索引,1 个字符长度的子字符串) ~/[rwx]
如果它是 a,则将 char 转换为 1r
或一个w
或一个x
- 后面的运算只是得到小数结果的运算
print("%0o ", k)
只是打印之前计算的十进制值的八进制结果
不隶属于 apple.stackexchange