[ pisac @ 20.02.2011. 11:55 ] @
Pratim promene u više fajlova i interfejsa i ispisujem ih na /dev/tty12. Želim to da obojim različito u zavisnosti od izvora.

Primer:
tail -f /var/log/messages | grep ADSL > /dev/tty12
tail -f /var/log/pppd > /dev/tty12
tcpdump -i nas0 | grep LCP > /dev/tty12

Problem je, kako to uraditi (ako je uopšte moguće)? Mogu da obojim ceo ekran sa echo -e "\E[1;31;40m" > /dev/tty12, ali na koji način da to uradim zasebno za svaki ispis iz svake komande?
[ pisac @ 28.02.2011. 13:17 ] @
Vidim da nema odgovora. Da li eventualno zna neko način da na svaki isipis tipa tail dodam pre ispisa neki string ("\E[1;31;40m") koji bi u stvari bio sekvenca za boju? Znači, kada god tail treba da ispiše novi red, da pre toga ubaci "\E[1;31;40m".

Ne mora tail, može i neko drugo rešenje koje bi pratilo sadržaj fajla i ispisivalo na određeni izlaz uz prefiks recimo "\E[1;31;40m". Verujem da bi tu mogla da se napravi neka srkiptica, ali teško da bih ja to uspeo bez nekih bližih uputstava šta i kako.
[ niceness @ 02.03.2011. 18:54 ] @
Probaj nesto ovako:
Code:
$ cat color.sh
#!/bin/sh

while read line ; do
    echo -e "\e[1;32;40m$line\e[0m"
done
$ tail -f /var/log/messages | grep ADSL | color.sh > /dev/tty12
[ pisac @ 03.03.2011. 00:19 ] @
Odlčno! Radi.

Finalna verzija:

Code:

#!/usr/bin/bash

a=$1
b=$2
c=$3
a=${a:=0}
b=${b:=37}
c=${c:=40}

while read line;
do
        echo -e "\e[${a};${b};${c}m$line\e[0m"
done



Uzgred, jel može neko da mi objasni zašto ne mogu da napišem a=${1:=0} već moram izokola: a=$1; a=${a:=0}
[ niceness @ 03.03.2011. 09:08 ] @
Nemoj koristiti a=${1:=0], vec a=${1:-0] (znaci povlaka, a ne jednako).
Sa prvim pokusavas da dodelis vrednost pozicionom parametru, sto nije moguce na ovaj nacin.

Jos jedna stvar... umesto #!/usr/bin/bash stavi #!/usr/bin/env bash.
(Cisto zbog portabilnosti; na vecini Linux sistem bash je u /bin, na drugim unix-olikim OS opet negde trece...)