-----------------------------------------------------------

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
schorschruffneck
Beiträge: 174
Registriert: 29.04.2012 22:55:06

-----------------------------------------------------------

Beitrag von schorschruffneck » 02.12.2013 19:29:03

--------------------------------------------------------------------------------------------------------------------------------------------------------
Zuletzt geändert von schorschruffneck am 06.06.2014 11:01:19, insgesamt 2-mal geändert.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Farbige bash-Ausgabe

Beitrag von Cae » 02.12.2013 23:47:52

Pack' die Escape-Sequenzen einfach in das Array mit rein:

Code: Alles auswählen

$ yes 'c=(" " "  " "   " "\e[32m02\e[m" "\e[34m1\e[m"); printf "${c[$(($RANDOM%55))]}"' | bash
(Ich hab' auch 'ne Subshell dazu gebaut, weil das Berechnen zumindest hier nicht ohne ging.)

Bei der Anwendung als Bildschirmschoner solltest du beachten, dass es aehnlich wie eine Endlosschleife mit Volllast auf der CPU laeuft. Das "schonen" in Bildschirmschoner koennte dabei ein wenig zu kurz kommen.
So als Idee haette ich da

Code: Alles auswählen

#!/bin/bash

thisvt="$(tty)"
vlock &
yes | bash >/dev/tty10 &    # siehe oben
chvt 10
read -rn1 fnord </dev/tty10 # blockt
kill $!
chvt "$thisvt"
(die Bash braucht's nur wegen read -n1) Das wuerde das aktuelle TTY sperren, den Lauftext anwerfen und auf tty10 schreiben und anschliessend dorthin wechseln. Durch die Eingabe eines Zeichens wird der Lauftext abgebrochen und zur urspruenglichen Konsole zurueckgekehrt. Ungetestet. Man sollte vielleicht abfangen, ob's tatsaechlich ein VT ist, und tty10 durch eine Konbination aus openvt(1) und deallocvt(1) ersetzen.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten