AKTUALIZACJA: Dodałem nowy (inny) skrypt ... Ignacio Vazquez-Abrams
miał rację: pytanie naprawdę executable scripts are green, et cetera
nasuwa pytanie ... ok ... znajdziesz taki (prototypowy) skrypt na końcu tej odpowiedzi.
Ta pierwsza (oryginalna) sekcja dotyczy grc
i grcat
.
To powinno działać; grc
... (jak zauważył enzotib . Nazwa pakietu to grc
... Podrzędnym narzędziem użytym w tym przykładzie jestgrcat
generic colouriser for everything
generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.
Zostanie wydrukowany następujący przykład
./
w kolorze magenta
bin/cpp/
w cyjanie
bigint
w odważnej bieli
Nie w pełni ustaliłem, jak obsługuje plik konfiguracyjny, ale wygląda na to, że zrobi to, co chcesz (kiedy go oswoisz) .. np. dla pliku bez podkatalogu, a sekwencja kolorów wydaje się nie być w tej samej sekwencji, co wyrażenia.
Zakładam, że jest to możliwe (ale w tej chwili jestem trochę zajęty) ...
echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi
find . -maxdepth 3 -name '*' | grcat findhi
Oto nowy skrypt inspirowany Ignacio :)
Działa to, jeśli jako pierwszy argument użyjesz pojedynczej ścieżki find
.
W tym skrypcie występują problemy NIEZBADANE . To tylko koncepcja.
Jednym z zagadnień jest: dowiązania symboliczne ... mętne wody ...
W tej chwili drukuje, ERROR
gdy napotka nieznany typ (np. Dowiązanie symboliczne), a następnie kontynuuje przetwarzanie.
Dzięki enzotib
za tput
przykłady.
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
funkcją znajdowania,