Anzeige:
Ergebnis 1 bis 3 von 3

Thema: bash - ausgabe auf tty1 - Formatierungsproblem

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.05.2007
    Beiträge
    24

    bash - ausgabe auf tty1 - Formatierungsproblem

    Ich möchte mit einem bash script auf tty1 ausgeben und habe ein Problem mit dem Zeilenlängen und -umbrüchen.

    Folgende Situation:

    Ich leite die Ausgabe des sripts mittels
    Code:
    exec &> /dev/tty1
    auf die erste Konsole um.

    Gebe ich nun per 'echo' text aus erscheint dieser auch brav auf der Konsole, aber wenn kein Benutzer an der Konsole angemeldet ist dann ist Formatierung völlig kaputt.

    Solange man nur Text mit 'echo' ausgeben möchte kann man die Formatierung retten indem man 'echo' wie folgt verwendet.
    Code:
    echo -ne "TEXT\r\f"
    Aber wenn man aus dem script heraus andere Programme aufruft (in meinem Fall rsync) dann geht das natürlich nicht.

    Woran liegt es überhaupt, dass die Formatierung kaputt geht?

    Gibt es noch einen anderen Weg vernünftig formatierte Ausgabe auf einem Terminal ohne angemeldeten Benutzer zu erzeugen?

  2. #2
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von cgogolin Beitrag anzeigen
    ...
    Ich leite die Ausgabe des sripts mittels
    Code:
    exec &> /dev/tty1
    auf die erste Konsole um.
    ...
    Woran liegt es überhaupt, dass die Formatierung kaputt geht?
    ...
    Ich bin nicht sicher, vermute aber, dass die Terminalsettings erst mit dem Login gesetzt werden. Du könntest mal versuchen, mit folgendem Konstrukt zu spielen:
    Code:
    ( exec ... | xargs echo -ne ) &>/dev/tty
    Ist aber ohne Gewähr, ich habe mich damit noch nie befasst (komisch, ich wollte sowas noch nie ;-)

    Außerdem könntest Du Dir mal tput zu Gemüte führen (ich kam drauf, weil es gerade in einem anderen Thread hier auftauchte).

    Jan
    Geändert von jan61 (18-06-2007 um 22:18 Uhr) Grund: tput

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.05.2007
    Beiträge
    24
    Es war ein Kampf aber es geht!
    Code:
    sudo bash -c "( exec ls -la ~/ | awk '{print \$0 \" \\\\\\\r\\\\\\\f \" }' | xargs echo -ne ) > /dev/tty2"
    Besonders lustig ist die escape sequence Orgie \\\\\\\\\\\\\\\\\\\\\\\ ;-)

    In einem script (das mit root rechten ausgeführt werden muss) sieht das dann so aus:
    Code:
    ls -la / | awk '{print $0 " \\\\r\\\\f " }' | xargs echo -ne
    Es wäre jetzt noch praktisch wenn man das "global setzen" könne, dass alle im script erzeugten Ausgaben durch diesen Befehl gepiped werden.
    Also so was in der Art von:
    Code:
    exec &> awk '{print $0 " \\\\r\\\\f " }' | xargs echo -ne > /dev/tty2
    Doch das funktioniert leider nicht.

    Wie könnte man das machen?

    Danke für den Tipp mit xargs!
    Geändert von cgogolin (19-06-2007 um 20:12 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •