UPDATE: Ich habe ein neues (anderes) Skript hinzugefügt ... Ignacio Vazquez-Abrams
hatte einen Punkt: Die Frage fragt wirklich nach executable scripts are green, et cetera
... okay ... ein solches (Prototyp-) Skript finden Sie am Ende dieser Antwort.
Dieser erste (originale) Abschnitt handelt von grc
und grcat
.
Das sollte funktionieren; grc
... (wie Enzotib herausgestellt hat. Der Paketname ist grc
... Das im Beispiel verwendete Unterprogramm istgrcat
generic colouriser for everything
generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.
Das folgende Beispiel wird gedruckt
./
in Magenta
bin/cpp/
in cyan
bigint
in fettweiß
Ich habe noch nicht vollständig geklärt, wie es mit der Konfigurationsdatei umgeht, aber so sieht es aus, als würde es das tun, was Sie wollen (sobald Sie es gezähmt haben). für eine Datei ohne Unterverzeichnis, und die Farbsequenz scheint nicht in der gleichen Reihenfolge wie die Ausdrücke zu sein.
Ich nehme an, es ist möglich (aber ich bin im Moment ein bisschen beschäftigt) ...
echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi
find . -maxdepth 3 -name '*' | grcat findhi
Hier ist das neue, von Ignacio inspirierte Drehbuch :)
Dies funktioniert, wenn Sie einen einzelnen Pfad als erstes Argument für verwenden find
.
Es gibt UNGEPRÜFTE Probleme in diesem Skript. Es ist nur ein Konzept.
Ein Problem ist: Symbolische Verknüpfungen ... trübe Gewässer ...
Wie sie sind, gibt sie eine aus, ERROR
wenn sie auf einen unbekannten Typ stößt (z. B. eine symbolische Verknüpfung), und setzt die Verarbeitung danach fort.
Vielen Dank enzotib
für die tput
Beispiele.
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
, der diese Funktionalität hat: github.com/tavianator/bfs