ОНОВЛЕННЯ: Я додав новий (інший) скрипт ... Ignacio Vazquez-Abrams
був пункт: Питання справді вимагає executable scripts are green, et cetera
... гаразд ... такий (прототип) сценарій ви знайдете в кінці цієї відповіді.
Цей перший (оригінальний) розділ про grc
та grcat
.
Це має працювати; grc
... (як вказував enzotib . Назва пакету: grc
... Утиліта, що використовується у прикладі, єgrcat
generic colouriser for everything
generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.
Наступний приклад друкує
./
в пурпуровий
bin/cpp/
по-блакитному
bigint
жирним кольором
Я ще не до кінця розібрався, як він обробляє конфігураційний файл, але це виглядає так, що він буде робити те, що ви хочете (як тільки ви його приручите) .. наприклад. для файлу без суб-режиму, і кольорова послідовність, здається, не в тій же послідовності, що і вирази.
Я припускаю, що це можливо (але на даний момент я трохи зайнятий) ...
echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi
find . -maxdepth 3 -name '*' | grcat findhi
Ось новий сценарій натхненний Ігнасіо :)
Це працює, якщо ви використовуєте один шлях в якості першого аргументу find
.
У цьому сценарії є НЕВЕРЕЗНІ проблеми. Це лише концепція.
Одне питання: Символічні посилання ... каламутні води ...
Так, він друкує, ERROR
коли стикається з невідомим типом (наприклад, символічним посиланням), а потім продовжує обробку минулого.
Дякуємо enzotib
за tput
приклади.
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
яка має цю функціональність: github.com/tavianator/bfs