AGGIORNAMENTO: Ho aggiunto un nuovo (diverso) script ... Ignacio Vazquez-Abrams
aveva un punto: la domanda chiede davvero executable scripts are green, et cetera
.. okay ... troverai un tale (prototipo) script alla fine di questa risposta.
Questa prima sezione (originale) riguarda grc
e grcat
.
Questo dovrebbe funzionare; grc
... (come ha sottolineato enzotib .. Il nome del pacchetto è grc
... La sottoservizi utilizzata nell'esempio ègrcat
generic colouriser for everything
generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.
L'esempio seguente viene stampato
./
in magenta
bin/cpp/
in ciano
bigint
in bianco audace
Non ho ancora risolto completamente il modo in cui gestisce il file di configurazione, ma sembra che farà quello che vuoi (una volta domato) .. es. per un file senza sottodirectory e la sequenza di colori sembra non essere nella stessa sequenza delle espressioni.
Suppongo sia possibile (ma al momento sono un po 'impegnato) ...
echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi
find . -maxdepth 3 -name '*' | grcat findhi
Ecco la nuova sceneggiatura ispirata a Ignacio :)
Funziona se usi un singolo percorso come primo argomento find
.
Ci sono problemi NON TESTATI in questo script. È solo un concetto.
Un problema è: Collegamenti simbolici ... acque torbide ...
Così com'è, stampa un ERROR
quando incontra un tipo sconosciuto (es. Un collegamento simbolico), e quindi continua a processarlo.
Grazie enzotib
per gli tput
esempi.
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
che ha questa funzionalità: github.com/tavianator/bfs