gpt4 book ai didi

Bash:关闭出现权限错误的闪烁符号链接(symbolic link)(Amazon EC2)

转载 作者:行者123 更新时间:2023-12-03 20:21:00 28 4
gpt4 key购买 nike

我故意创建了指向我可以通过 sudo 访问的文件的软链接(soft link)。
执行 ls -la 命令时,bash 坚持目标闪烁红色,好像链接已损坏(我需要 sudo 才能访问)。
闪烁文本是最糟糕的,我不想编辑我认为可能正在设置颜色的/etc/bashrc(Amazon EC2 似乎从 ~/.bashrc 获取此文件)文件。
在不删除/触摸/etc/bashrc 的情况下删除闪烁的任何想法。

最佳答案

为什么这样做?
我同意你的观点,对于有时根本不是错误条件的东西,闪烁的红色文本是一个非常不合适的默认值,并且很少像其侵入性级别(与几乎所有其他终端输出相比)所暗示的那样严重错误。
你的情况——链接到你并不总是具有读取权限的文件——就是这样一种非错误情况。我的是另一个:我在手机 SD 卡的挂载点下有各种目录的符号链接(symbolic link);连接电话时链接很方便,否则无用但无害。我不需要终端因为未安装 SD 卡而在视觉上对我“尖叫”。我已经知道了,终端。没关系。寒意。
应该有人游说改变这种不合理的默认设置。 (不会是我;我已经在太多的火灾中拥有太多的铁杆了。)但好消息是,在你自己的环境中很容易覆盖它。
我怎样才能让它停止?
闪烁由编码在 LS_COLORS 中的参数指定。环境变量。
很可能,您的/etc/bashrc正在设置 LS_COLORS ,但您可以在自己的环境中覆盖此设置,而无需更改 /etc/bashrc .
你应该先看看/etc/bashrc看看它是如何设置LS_COLORS .很可能通过 dircolors 执行此操作— 而且,如果幸运的话,它会首先为这些设置查找文件,然后再返回默认值。例如,我的系统(未更改)/etc/bashrc包含行

    if [[ -f ~/.dir_colors ]] ; then
eval "$(dircolors -b ~/.dir_colors)"
elif [[ -f /etc/DIR_COLORS ]] ; then
eval "$(dircolors -b /etc/DIR_COLORS)"
else
eval "$(dircolors -b)"
fi
这意味着要更改颜色 ls使用,我可以编辑(或创建,如果它不存在) ~/.dir_colors/etc/DIR_COLORS .
碰巧,我的系统非常适应,提供了一个很好的评论 /etc/DIR_COLORS .以下是一些相关的行:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
...
ORPHAN 01;05;37;41 # symlink to nonexistent file, or non-stat'able file ...
MISSING 01;05;37;41 # ... and the files they point to
有了这个,很容易看出,要从损坏的符号链接(symbolic link)中删除“blink”属性,您需要使用 05ORPHANMISSING线。就我个人而言,我也改变了颜色,因为即使是反向视频突出显示这些文件也远远超过了保证。一旦你知道在哪里看,就很容易根据口味进行定制。
如果这些文件都不存在,不用担心: dircolors有一个 -p输出此文件的默认版本的选项。
如果您的 /etc/bashrc运行 dircolors但不检查任何文件,仅依赖命令的默认值,您可以在自己的 .bashrc 中覆盖它通过包含类似于上述之一的行,例如 eval "$(dircolors -b ~/.dir_colors)" .
最后,如果您的系统没有 dircolors 怎么办?命令,而不是 /etc/bashrc设置 LS_COLORS到一些硬编码的值?这比较麻烦,但你仍然可以直接使用这个环境变量。点赞 PATH ,它是一个以冒号分隔的元素列表——一次看一遍相当难以理解,但如果将冒号更改为换行符会更容易:
$ echo $LS_COLORS | tr : \\012
相关值为 or (孤儿)和 mi (失踪)。在我的系统上,默认情况下这些显示为:
$ echo $LS_COLORS | tr : \\012 | egrep '^(or|mi)'
or=01;05;37;41
mi=01;05;37;41
您可以将自己的值硬编码为 LS_COLORS在您的 .bashrc ,根据需要调整值(参见上面的键),或者您可以使用系统默认值,但使用 sed 修改选择值.例如,只为此类链接设置粗体属性,但删除闪烁和颜色变化:
LS_COLORS=$(echo $LS_COLORS | sed -E 's/:(or|mi)=[^:]+/:\1=01/g')
现在运行与上面相同的命令会产生:
$ echo $LS_COLORS | tr : \\012 | egrep '^(or|mi)'
or=01
mi=01

关于Bash:关闭出现权限错误的闪烁符号链接(symbolic link)(Amazon EC2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798795/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com