ACTUALIZACIÓN: agregué un nuevo guión (diferente) ... Ignacio Vazquez-Abrams
tenía un punto: la pregunta realmente pregunta executable scripts are green, et cetera
... bueno ... encontrarás un guión (prototipo) al final de esta respuesta.
Esta primera sección (original) trata sobre grc
y grcat
.
Esto debería funcionar; grc
... (como ha señalado enzotib ... El nombre del paquete es grc
... La subutilidad utilizada en el ejemplo, esgrcat
generic colouriser for everything
generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.
El siguiente ejemplo imprime
./
en magenta
bin/cpp/
en cian
bigint
en blanco negrita
Todavía no he resuelto por completo cómo maneja su archivo de configuración, pero parece que hará lo que quiera (una vez que lo domestique) ... por ejemplo. para un archivo sin subdirectorio, y la secuencia de colores parece no estar en la misma secuencia que las expresiones.
Supongo que es posible (pero estoy un poco ocupado en este momento) ...
echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi
find . -maxdepth 3 -name '*' | grcat findhi
Aquí está el nuevo guión inspirado en Ignacio :)
Esto funciona si usa una sola ruta como primer argumento para find
.
Hay problemas no probados en este script. Es solo concepto.
Un problema es: Enlaces simbólicos ... aguas turbias ...
Tal como está, imprime un ERROR
cuando encuentra un tipo desconocido (por ejemplo, un enlace simbólico), y luego continúa procesando más allá de eso.
Gracias a enzotib
por los tput
ejemplos.
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 tiene esta funcionalidad: github.com/tavianator/bfs