Hallo
ich suche eine Möglichkeit um Ausgaben eines Shellscriptes bzw. dessen Befehle immer auf ein und der selben Zeile auszugeben.
Also quasi soll der alte text(vorherige Ausgabe) einfach überschrieben werden. Wie funktioniert das ?
Danke
bash ausgabe immer auf der gleicher zeile
Re: bash ausgabe immer auf der gleicher zeile
Mittels "\e[1A". Beispiel
Code: Alles auswählen
echo "Zeile eins"; echo "\e[1AZeile zwei"
Re: bash ausgabe immer auf der gleicher zeile
Code: Alles auswählen
for ((i=1;$i<=10;i++)) do echo -en "\015\033[K$i "; sleep .5; done
Die Escape-Sequenz lässt den Cursor erst zum Zeilenanfang springen und löscht die Zeile, bevor sie neu beschrieben wird.
Re: bash ausgabe immer auf der gleicher zeile
Ich kenne ja dein Ziel nicht. Aber falls es immer dieselbe Berechnung ist kannst du dir noch "watch" anschauen, welches defaultmäßig alle 2 Sekunden, schnellstens alle 0,1 Sekunden einen Befehl wiederholt und im Terminal aktualisiert.
Beispiele:
Beispiele:
Code: Alles auswählen
watch date
watch cat /proc/stat
watch -n 0,1 date
watch -n 0,1 cat /proc/stat
Re: bash ausgabe immer auf der gleicher zeile
Eventuell hilft Dir tput, damit kann der Cursor gezielt gesetzt werden.
Falls Du nur eine Menüabfrage bauen möchtest, hilft Dir eventuell auch eine select Abfrage ?
Code: Alles auswählen
#!/bin/bash
Zeile=5
Spalte=6
tput cup $Zeile $Spalte
echo "Hallo"
sleep 1
tput cup $Zeile $Spalte
echo "Welt "
Falls Du nur eine Menüabfrage bauen möchtest, hilft Dir eventuell auch eine select Abfrage ?
Das Glück kommt zu denen, die lachen.
Re: bash ausgabe immer auf der gleicher zeile
perfekt, danke euch allen, ich denke das genau den Zweck erfüllt den ich gesucht habe :)
Danke.
Ausgabe:
./lineot.sh
start
:) <--- wo genau in dieser Zeile, das Wort "hallo", "du", "da" und dann ":)" mit jeweils 1Sek Verzögerung dargestellt wird.
stop
Code: Alles auswählen
echo -en "\015\033[K"
Danke.
Code: Alles auswählen
#!/bin/bash
i="hallo du da :)"
echo "start"
for x in $i; do
echo -en "\015\033[K$x"
sleep 1
done
echo -e
echo "stop"
./lineot.sh
start
:) <--- wo genau in dieser Zeile, das Wort "hallo", "du", "da" und dann ":)" mit jeweils 1Sek Verzögerung dargestellt wird.
stop