我想知道是否有 ls -l
彩色。当然,我不是在谈论--color
。我在ls -l
命令中找到了一个有用的别名,以显示八进制许可,现在可以上色吗?以同样的方式,当我进行ls -l
时,可能只有红色的权限显示?
我不知道如何使用颜色代码,但是grep
具有--color
选项
如果ls -l
的第一行对您不重要,则可以考虑使用grep
ls -l | grep --color=always '[d-][r-][w-][x-][r-][w-][x-][r-][w-][x-]'
或以较短的形式:
ls -l | grep --color=always '[d-]([r-][w-][x-]){3}'
您可以使用多个实用程序进行操作,例如将ls (OPTIONS...)
的输出输送到SuperCat(在违反规则之后)。或突出显示(定义规则之后)。
或使用Regexes使用Awk/Sed进行漂亮的打印。例如。使用gensub
尴尬,您可以将ANSI颜色代码插入输出...
我想到的第一件事是您可以使用--color=auto
:
ls -l --color=auto
创建一个别名可能很方便:
alias lls='ls -l --color=auto'
但是我看到你不想要那个。为此,我们必须创建一个更复杂的功能,该功能使用echo -e "colours..."
:
print_line () {
red='e[0;31m'
endColor='e[0m'
first=${1%% *}
rest=${1#* }
echo -e "${red}$first${endColor} $rest"
}
lls () {
IFS=$'n'; while read line;
do
# echo "$line"
print_line $line
done <<< "$(find $1 -maxdepth 1 -printf '%M %pn')"
}
如果您将它们存储在~/.bashrc
中并源(. ~/.bashrc
),则每当您执行lls /some/path
时,都会执行这些功能。
如果您询问是否有一个选项可以在LS中指定自定义列的颜色,我不这么认为。但是你可以做类似的事情。
> red() { red='e[0;31m'; echo -ne "${red}$1 "; tput sgr0; echo "${*:2}"; }
> while read -r line; do red $line; done < <(ls -l)