Answers:
更新:我添加了一个新的(不同的)脚本... Ignacio Vazquez-Abrams
有一点:问题确实要求executable scripts are green, et cetera
..好的...您将在此答案的结尾找到这样的(原型)脚本。
第一(原始)部分是关于grc
和grcat
。
这应该起作用;grc
...(如enzotib所指出。。包名称为grc
...该示例中使用的子实用程序为grcat
generic colouriser for everything
generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.
以下示例打印
./
洋红色 bin/cpp/
青色 bigint
粗体白色 我还没有完全弄清它如何处理配置文件,但是看起来它会做您想要的(一旦您驯服了它)。对于没有子目录的文件,颜色顺序似乎与表达式的顺序不同。
我认为有可能(但是我现在有点忙)...
echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi
find . -maxdepth 3 -name '*' | grcat findhi
这是Ignacio启发的新脚本:)
如果您将单个路径用作的第一个arg,则此方法有效find
。
有UNTESTED在这个脚本的问题。这只是概念。
一个问题是:符号链接... 浑水 ......
作为-是,它打印的ERROR
,当它遇到未知类型(例如一个符号链接),然后继续处理过去那种。
感谢enzotib
提供tput
示例。
dircol=$(tput bold ;tput setaf 4)
coloff=$(tput sgr0)
root="$HOME" # define path here, not in 'find` arg
root="${root:-.}" # default to '.'
root="${root%/}/" # add trailing '/'
#
find "$root" -maxdepth 1 -name '*' -printf "%y %P\n" |
while read -r line ;do
case $line in
d ) printf "%s\n" "$dircol$root$coloff";;
d\ *) printf "%s\n" "$dircol$root${line:2}$coloff";;
f\ *) l="$root${line:2}"
d="${l%/*}/"
f="${l##*/}"
cd -P "$d"
printf "%s" "$dircol$d$coloff"
ls --color=always -R1 "$f"
cd - >/dev/null
;;
*) printf "ERROR - type not yet catered for\n";;
esac
done
grcat
从grc
软件包中引用了该实用程序:)刚开始时,我在理解您的要求时遇到了一些困难。
您可以-exec
用来完成大部分操作(我的解决方案不会对目录部分进行不同的着色)。如果你-print
在你的find
命令,通过更换-exec ls --color -d
; 如果您使用的是隐式打印,请添加它。假设您ls
支持该--color
选项。
find . -exec ls --color -d {} \;
这只会对路径和文件名使用两种颜色的高亮显示,而不会对按文件类型进行显示 ls
:
grep
以正确的方式为匹配和不匹配的部分配置输出的颜色,并匹配文件名:
$ export GREP_COLORS="sl=0;33;49:ms=1;34;49"
$ find /etc/ -type f | head | grep --color=always '^\|[^/]*$'
您可能不想覆盖该变量GREP_COLORS
,因此仅将其设置为grep
:
$ find /etc/ -type f | head | GREP_COLORS="sl=0;33;49:ms=1;34;49" grep --color=always '^\|[^/]*$'
(不赞成使用的变量的定义的GREP_COLOR
优先级低于中的定义GREP_COLORS
)
有关颜色代码,请参见colortest-16
包装colortest
,
以及ANSI端子命令序列中的 “设置图形渲染”部分。
我喜欢-exec的想法。我用它来创建此功能:
function ff {
find . -name $1 -exec ls -G -d {} \;
}
bfs
,它具有以下功能:github.com/tavianator/bfs