Na ich guck dem ja nicht die ganze Zeit zu 🙂
On-Topic: Zwar keine Funktion, sondern eher schon ein ausgewachsenes Script (das geht sicher auch kürzer bei selbem Ergebnis)
#!/bin/bash
# vim: ts=4:sw=4
# Printing all defined colors to terminal.
# Dirk Sohler
# spam@0x7be.de
# Enter your definitions file here
RES="${HOME}/.Xresources"
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
CLINES=$(grep "color[0-9]\{1,3\}:" "${RES}")
COUNT=$(grep "color[0-9]\{1,3\}:" "${RES}" | wc -l)
NLEN=$(echo -ne "${COUNT}" | wc -m)
ELEN=$(expr $(grep "color[0-9]\{1,3\}:" "${RES}" \
| head -n1\
| sed s/"\(.*color\)[0-9]\{1,3\}.*"/"\1"/g\
| wc -m) - 1 + ${NLEN})
VLEN=$(expr $(grep "color[0-9]\{1,3\}:" "${RES}"\
| head -n1\
|awk '{print $2}'\
| wc -m))
echo -ne "\n\e[1;4m "
printf %${NLEN}s " "
echo -ne " Example "
printf %-${ELEN}s "Entry"
echo -ne " "
printf %-${VLEN}s "Value"
echo -ne "\033[0m\n"
IFS=$(echo -ne "\n\b")
I=0
for C in ${CLINES}; do
I=$(expr $I + 1)
NUM=$(echo ${C} | sed s/".*color\([0-9]\{1,3\}\).*"/"\1"/g)
EXA=$(echo -e "\e[48;05;${NUM}m \e[0m")
NAM=$(echo ${C} | sed s/"\(.*color[0-9]\{1,3\}\).*"/"\1"/g)
STR=$(echo ${C} | awk '{print $2}')
LNUM=$(printf %${NLEN}d ${I})
LNAM=$(printf %-${ELEN}s ${NAM})
echo -e " ${LNUM} ${EXA} ${LNAM} ${STR}"
done
echo -ne "\n"
Gibt alle in der entsprechenden Datei angegebenen Farbdefinitionen aus, und ist dabei fähig, beliebig viele Definitionen auszugeben (wer in einem entsprechenden TErminal mehr als die üblichen 16 Farben definiert hat, bekommt die auch alle angezeigt.)
Zur Abstandsmessung wird die erste Farbdefinition hergenommen, wer also mehrere verschiedene Definitionen hat (urxvt*color, bliblablubb*color, etc.), bekommt zwar probleme mit den Abständen, aber ansonsten finde ich das schon sehr schick 🙂