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?
Kako različito obojiti iz različitih izvora ispis na ekran?
Zaključano
Zakačeno
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.
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.
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
$ 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
Odlčno! Radi.
Finalna verzija:
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}
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
#!/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}
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...)
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...)