如何为 ls - l 命令的列着色

  • 本文关键字:命令 ls linux bash shell
  • 更新时间 :
  • 英文 :


我想知道是否有 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)

相关内容

  • 没有找到相关文章

最新更新