UPDATE: adicionei um novo script (diferente) ...Ignacio Vazquez-Abrams
tinha um ponto: a pergunta realmente pede executable scripts are green, et cetera
... ok ... você encontrará um script (protótipo) no final desta resposta.
Esta primeira seção (original) é sobre grc
e grcat
.
Isso deve funcionar; grc
... (como o enzotib indicou .. 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 branco arrojado
Ainda não resolvi completamente como ele lida com o arquivo de configuração, mas parece que ele fará o que você deseja (depois de domá-lo) .. por exemplo. para um arquivo sem subdiretório e a sequência de cores parece não estar na mesma sequência que as expressões.
Presumo que seja 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 inspirado em Ignacio :)
Isso funciona se você usar um único caminho como o primeiro argumento para find
.
Existem problemas não previstos neste script. É apenas conceito.
Uma questão é: Links simbólicos ... águas turvas ...
No estado atual , ele imprime um ERROR
quando encontra um tipo desconhecido (por exemplo, um link simbólico) e, em seguida, continua o processamento além disso.
Obrigado enzotib
pelos tput
exemplos.
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
bfs
que tem essa funcionalidade: github.com/tavianator/bfs