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 -
bigint
em 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