it-swarm.com.de

Wie wird die Spalte [OK] oder [FAIL] erstellt?

Ich möchte wissen, wie die Shell die letzte Spalte (OK oder FAIL) anzeigen kann, wie in diesem Bild gezeigt

enter image description here

(Von dieser Frage Einen Server über die Befehlszeile neu starten? .)

Könnte mir jemand helfen, herauszufinden, wie das gemacht wird?

3
Sandra Ross

Was sind diese ?

Diese ausgefallenen OK/FAIL-Meldungen, die Sie sehen, sind Startmeldungen, die während des Startvorgangs an TTY1 ausgegeben werden. Normalerweise können Sie während des Startvorgangs diese Meldungen anstelle des hübschen Startlogos anzeigen, indem Sie auf drücken Esc Schlüssel. Das Gleiche kann beim Herunterfahren gemacht werden. Der Bildschirm sollte normalerweise gelöscht werden, sobald der Startvorgang abgeschlossen ist. Dies ist jedoch nicht immer der Fall (unter anderem, weil die Meldungen mit einer bestimmten Geschwindigkeit oder Baudrate angezeigt werden und TTY1 dann auf gesetzt wird mit unterschiedlicher Baudrate sein)

Um Ihre Frage zu beantworten, ist dies technisch gesehen keine Shell, sondern ein separates Programm, nämlich das systemd -Initialisierungssystem, das diese Meldungen ausgibt (in Versionen vor 15.04 wäre das upstart -Initialisierungssystem). Wenn Sie gerade erst anfangen, Linux zu lernen, machen Sie sich keine Sorgen um systemd, aber dies ist ein sehr gutes Thema, da systemd alle wichtigen Dienste auf dem System starten soll.

Wie kann ich das alleine machen?

Technische Aspekte des Schreibens solcher Nachrichten sind einfach: Sie können Steuerzeichen "\ r" und spezielle Escape-Sequenzen verwenden, um eine bestimmte Farbe auszugeben. Diese Steuerzeichen können in jeder Programmiersprache verwendet werden, unabhängig davon, ob es sich um ein C- oder ein Shell-Skript handelt. In der Tat habe ich eine verwandte Frage zuvor beantwortet und ein einfaches Skript geschrieben, um zu demonstrieren, wie man Statusmeldungen drucken kann. Informationen zur Farbe finden Sie im Artikel des Linux-Dokumentationsprojekts über Einfärben der Skripte

8

Das Programm, das diese Ausgabe anzeigt, ist nicht die Shell. Es ist systemd, das in C geschrieben ist.

Was das Programm wahrscheinlich tut, ist die Breite des Bildschirms/Fensters (technisch "Anzahl der Spalten", d. H. Für Zeichen verfügbare Leerzeichen) zu bestimmen und dann die OK/Fail-Spalte entsprechend mit der rechten Maustaste auszurichten.

Um dasselbe in Bash zu tun, Sie können Spalten aus $COLUMNS abrufen , dann verwenden Sie printf, um die Ausgabe rechtsbündig zu drucken . Zum Beispiel:

print_status(){
    local message="$1"
    local status="$2"

    # Get the number of columns, but subtact 8 to leave space for the status.
    local columns=$((COLUMNS-8))

    # Print left-aligned message and right-aligned status.
    printf "%-*s [%s] \n" "$columns" "$message" "$status"
}

# Print a status.
print_status "Doing something..." " OK " 

# Print another status.
print_status "Doing something else..." "fail"

Zum Einfärben können Sie dies tun:

print_status "Doing something else..." $'\e[31mfail\e[m'
7
wjandrea