bash ausgabe immer auf der gleicher zeile

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
ren22

bash ausgabe immer auf der gleicher zeile

Beitrag von ren22 » 11.10.2015 07:28:46

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

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: bash ausgabe immer auf der gleicher zeile

Beitrag von Liffi » 11.10.2015 08:13:13

Mittels "\e[1A". Beispiel

Code: Alles auswählen

echo "Zeile eins"; echo "\e[1AZeile zwei"

Benutzeravatar
Phineas
Beiträge: 354
Registriert: 20.06.2012 20:26:19

Re: bash ausgabe immer auf der gleicher zeile

Beitrag von Phineas » 11.10.2015 09:15:22

Code: Alles auswählen

for ((i=1;$i<=10;i++)) do echo -en "\015\033[K$i "; sleep .5; done
So?

Die Escape-Sequenz lässt den Cursor erst zum Zeilenanfang springen und löscht die Zeile, bevor sie neu beschrieben wird.

uname
Beiträge: 12426
Registriert: 03.06.2008 09:33:02

Re: bash ausgabe immer auf der gleicher zeile

Beitrag von uname » 11.10.2015 12:35:19

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:

Code: Alles auswählen

watch date
watch cat /proc/stat
watch -n 0,1 date
watch -n 0,1 cat /proc/stat

debtux
Beiträge: 19
Registriert: 17.01.2014 19:31:45

Re: bash ausgabe immer auf der gleicher zeile

Beitrag von debtux » 11.10.2015 15:07:36

Eventuell hilft Dir tput, damit kann der Cursor gezielt gesetzt werden.

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.

ren22

Re: bash ausgabe immer auf der gleicher zeile

Beitrag von ren22 » 11.10.2015 19:47:45

perfekt, danke euch allen, ich denke das

Code: Alles auswählen

echo -en "\015\033[K"
genau den Zweck erfüllt den ich gesucht habe :)

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"
Ausgabe:
./lineot.sh
start
:) <--- wo genau in dieser Zeile, das Wort "hallo", "du", "da" und dann ":)" mit jeweils 1Sek Verzögerung dargestellt wird.
stop

Antworten