有没有办法控制 ls 的颜色输出以突出显示文件的特定权限? (例如写权限)。
有什么选项LS_COLORS
可以做到这一点吗? (上图来自 Emacs 24.1 上的 Dired+,而不是来自 的输出ls
)
答案1
你可以随时把ls
类固醇实现文件权限的着色效果。
答案2
我刚刚尝试过,这实际上可以通过一个名为 Ruby 的小程序实现阿科克(任意命令输出着色器)。它可用于截取任何终端程序的输出(彩色输出并且top
特别gcc
整洁),并根据用户指定的正则表达式规则文件对它们进行着色。设置起来需要一些工作,并且您必须定义规则,但这已经是最灵活的了。我能够成功添加一条规则来为世界上可写的文件着色。
如果您走这条路,需要注意以下几点:
- 该项目似乎不在任何发行版中 - 您必须从主页手动安装。
- 您需要修补项目主页上的代码才能使用现代版本的 Ruby。你可以找到补丁这里(我已联系作者让他知道该补丁,也许他会更新他的版本)。
- 在 的情况下
ls
,拦截 会acoc
丢弃现有的LS_COLORS
,因此您必须以正则表达式的形式提供所需的所有规则,包括过去使用 突出显示的内容LS_COLORS
。
答案3
如果dircolors --print-database
列出所有可能的选项,则无法在长输出中突出显示权限。
您仍然可以使用 grep:
ls -l | grep --color -P "(?<=[r-])w"
它将突出显示w
权限部分中的所有 s;它还会突出显示文件名中w
s 后面的r
s 和s,唉。-
答案4
https://altbox.dev/还提到lsd
和exa
其中(请参阅 user13742 的答案)作为完成此任务ls++
的替代。ls
两者都是用 Rust 编写的,并提供预编译的二进制文件。我自己还没有尝试过,我只是在研究课程讲师的工具链。