SelfLinux Grundlagen Bunte Shells - Benutzung der Shellfarben Abschnitt 2 | SelfLinux-0.13.0

| Bunte Shells - Benutzung der Shellfarben | Autor Formatierung GPL

#### 2 Eine andere Form der Anwendung

Die Fähigkeit der Farbsetzung in der Shell macht nicht nur Sinn, wenn man einen schöneren Shell-Prompt haben möchte, sondern kann auch in der Programmierung eines Programmes für die Konsole sinnvoll sein.

So müsste man bei jeder Benutzung von Farben auf Bibliotheken wie slang oder ncurses zurückgreifen, was die Größe der Binärdatei beachtlich steigen ließe. Ncurses hat allerdings den Vorteil, dass es mehr oder weniger unabhängig vom Terminal-Typ ist.

#### 2.1 Beispiele in C

Ein Hello World mit grüner Schrift:

Hello World

    #include <stdio.h>
    int main(void){
        const char *const green = "\033[0;40;32m";
        const char *const normal = "\033[0m";
        printf("%sHello World%s\n", green, normal);
    return 0;
    }

Eine weitere nützliche Escape Sequenz ist printf("\033[2J"); Sie hat denselben Effekt wie system(clear); allerdings kann man damit auf die Headerdatei unistd.h verzichten.

Mit printf("\033[1K"); lässt sich eine Zeile löschen.

#### 2.2 Beispiel für die init-Scripte

Möchte man nicht, dass beim Starten der init-Scripte in /etc/init.d nur ein '.' beim erfolgreichen Starten des Prozesses angezeigt wird, sondern statt dessen eine farbliche, besser lesbare Ausgabe, so ist dies auch mittels einer Escape-Sequenz lösbar.

Hier ein Auszug aus einem Cron init-Script:

Cron init-Script

    #!/bin/sh
    # Start/stop the cron daemon.
    test -f /usr/sbin/cron || exit 0

    case "$1" in
     start)  echo -n "Starting periodic command scheduler: cron"
          start-stop-daemon --start --quiet --exec /usr/sbin/cron
          echo "."
    ;;

Beim erfolgreichen Starten von Cron wird dann ein Punkt ausgegeben. Farblich könnte man das auch durch [Ok] gestalten, indem man den echo String ändert. Z.B. so:

Cron init-Script 2

    #!/bin/sh
    # Start/stop the cron daemon.
    test -f /usr/sbin/cron || exit 0
    case "$1" in
    start)  echo -n "Starting periodic command scheduler: cron"
            start-stop-daemon --start --quiet --exec /usr/sbin/cron
    echo "\[ \033[1;34;40m[ \033[1;32;40mOk \033[1;34;40m]\033[0m\]"
    ;;

Möchte man diese Einstellungen allerdings für alle init-Scripte vornehmen, ist das sehr zeitaufwändig, es sei denn, man benutzt als Escape Sequenz \033, da `Strg+``v` `ESC` nicht als Zeichen interpretiert wird.

Es kann sich allerdings ein weiteres Problem ergeben: Bei einer System-Aktualisierung, wie z.B. der Einspielung von Sicherheitsaktualisierungen können veränderte init-Scripte und andere Konfigurationsdateien durch Distributionsstandards überschrieben werden. Dadurch könnte das farbige [ OK ] schneller verschwinden, als es eingerichtet wurde.