UPDATE: Eu adicionei um novo (diferente) script ... Ignacio Vazquez-Abrams tinha um ponto: A pergunta realmente pede executable scripts are green, et cetera .. ok ... você vai encontrar tal script (protótipo) no final desta resposta.
Esta primeira seção (original) é sobre grc e grcat .
Isso deve funcionar; grc ... (como enzotib apontou .. O nome do pacote é grc ... O sub-utilitário usado no exemplo, é grcat
generic colouriser for everything
generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.
O exemplo a seguir imprime
-
./em magenta -
bin/cpp/em ciano -
bigintem negrito branco
Ainda não resolvi totalmente como ele lida com o arquivo de configuração, mas parece que ele fará o que você quiser (uma vez que você o domar). para um arquivo sem subdiretório ea seqüência de cores parece não estar na mesma seqüência das expressões.
Eu suponho que é possível (mas estou um pouco ocupado no momento) ...
echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi
find . -maxdepth 3 -name '*' | grcat findhi
Aqui está o novo script Ignacio inspired :)
Isso funciona se você usar um único caminho como o primeiro argumento para find .
Existem UNTESTED questões neste script. É apenas conceito.
Uma questão é: Links Simbólicos ... águas escuras ...
Como está, ele imprime um ERROR quando encontra um tipo desconhecido (por exemplo, um link simbólico) e continua processando depois disso.
Graças a enzotib para os exemplos 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
