MISE À JOUR: J'ai ajouté un nouveau script (différent) ... Ignacio Vazquez-Abrams
avait un point: la question demande vraiment executable scripts are green, et cetera
... d'accord ... vous trouverez un tel script (prototype) à la fin de cette réponse.
Cette première section (originale) porte sur grc
et grcat
.
Cela devrait fonctionner; grc
... (comme l' a souligné enzotib .. Le nom du package est grc
... Le sous-utilitaire utilisé dans l'exemple estgrcat
generic colouriser for everything
generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.
L'exemple suivant s'imprime
./
en magenta
bin/cpp/
en cyan
bigint
en blanc gras
Je n'ai pas encore complètement trié la façon dont il gère le fichier de configuration, mais cela ressemble à ce qu'il fera ce que vous voulez (une fois que vous l'aurez apprivoisé) .. par exemple. pour un fichier sans sous-répertoire, et la séquence de couleurs ne semble pas être dans la même séquence que les expressions.
Je suppose que c'est possible (mais je suis un peu occupé en ce moment) ...
echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi
find . -maxdepth 3 -name '*' | grcat findhi
Voici le nouveau script inspiré d'Ignacio :)
Cela fonctionne si vous utilisez un seul chemin d'accès comme premier argument find
.
Il y a des problèmes UNTESTED dans ce script. Ce n'est qu'un concept.
Un problème est: Liens symboliques ... eaux troubles ...
En l'état, il imprime un ERROR
lorsqu'il rencontre un type inconnu (par exemple, un lien symbolique), puis continue le traitement après cela.
Merci enzotib
pour les tput
exemples.
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
qui a cette fonctionnalité: github.com/tavianator/bfs