如何对 ls 的输出进行着色?

如何对 ls 的输出进行着色?

我在 Linux 文本模式下运行 CentOS。当我运行命令时ls /usr/,输出太难以阅读(黑底深蓝色)。如何更改文本颜色?

ls 输出的屏幕截图

答案1

如果您想在控制台中更改颜色,那就是X 之外,然后您可以在 中指定颜色.bashrc,如下所示:

if [ "$TERM" = "linux" ]; then
    echo -en "\e]P0222222" #black
    echo -en "\e]P8222222" #darkgrey
    echo -en "\e]P1803232" #darkred
    ....
    fi

您将黑色定义为的位置#222222请参阅此帖子了解详细信息:http://phraktured.net/linux-console-colors.html

如果你正在工作在 X,然后您可以通过定义颜色来自定义您的设置,如下.Xresources所示:

!black
 *color0:  #3D3D3D
 *color8:  #5E5E5E
!red
 *color1:  #8C4665
 *color9:  #BF4D80
 ...

然后在启动 X 时获取此文件,通常来自您的.xinitrc

xrdb -merge ~/.Xresources

Arch Wiki 在 .Xresources 上有一个页面,解释了所有选项: https://wiki.archlinux.org/index.php/Xresources

您可以进行的另一个增强要么在 X 中,要么不在 X 中是指定您想要着色的所有不同文件类型以及它们在文件中各自的颜色.dir_colors,如下所示:

.xinitrc       01;31 
.Xauthority    01;31
.Xmodmap       00;31
.Xresources    01;33
 ...

首先,复制/etc/dir_colors到您的用户/home目录并进行更改。然后从您的.bashrc源中获取它eval $(dircolors -b ~/.dir_colors),这将允许您在使用时对文件和文件类型的颜色进行细粒度控制ls

您可以在这里找到(非常详细和彻底的).dir_colors示例文件: https://github.com/trapd00r/LS_COLORS/blob/master/LS_COLORS

通过结合所有三种方法,无论您是在控制台还是在 X 中工作,您都可以创建相当统一的设置。

答案2

你想要的文件是/etc/DIR_COLORS.我遇到了与您完全相同的问题,并将目录更改为青色。效果好多了。

cp /etc/DIR_COLORS /home/yourusername/.dir_colors

编辑/home/yourusername/.dir_colors,你会看到这一行:

DIR 01;34    #directory

将其更改为:

DIR 01;36    #directory

这使得目录颜色变成青色。

答案3

您可以手动设置 ls 颜色,但我更喜欢这种方法:

首先有

dircolors

命令。

dircolors --print-database > ~/.dir_colors

更改该文件内的颜色(这是非常不言自明的,并且颜色在文件内可视化)
应用更改:

eval $(dircolors ~/.dir_colors)

为了持久使用,请将其放入~./bashrc

if [ -f ${HOME}/.dir_colors ]; then
  eval $(dircolors ~/.dir_colors)
fi

答案4

使用ls --color=no标志是最直接的选择。较短的版本是ls --col=n.

管道自动ls设置--color=nols | cat或者ls | tee会起作用。

也可以使用 ,ls | grep .默认情况下使所有输出为红色,或者ls | grep ''默认情况下使所有输出为白色。

相关内容