Befehl zum Löschen im Konsolendialog

Mein Bash-Skript enthält den Befehl clear, der bei Ausführung über dialog führt zu seltsamen Buchstaben. Wie kann ich den Befehl clear weiterhin verwenden, ohne diese Ausgabe im Dialogfeld zu sehen?

Dies ist ein Beispiel für die Erstellung dieses Befehls:

#!/bin/bash echo "starting..." clear echo "" echo "End" 

Ich verwende die dialog wie folgt:

bash /tmp/1.sh | dialog --progressbox 30 80 

Geben Sie hier die Bildbeschreibung ein.

Antwort

Sie können die Ausgabe von clear an das Terminal umleiten:

#!/bin/bash echo "starting..." clear >$(tty) echo "" echo "End" 

clear schreibt in seine Standardausgabe, die sich (wenn sie auf diese Weise umgeleitet wird) von der unterscheiden kann Die Standardausgabe des Skripts.

Kommentare

  • Es funktioniert fast für mich, weil Sie aus irgendeinem Grund ' sleep ' Befehl auch zwischen echo ' s Befehl der Dialog völlig verzerrt. Fügen Sie einfach ' sleep 1 ' zwischen dem Echo-Befehl und see hinzu, um ihn zu simulieren.
  • sleep ist ein anderes Problem: Beim Schreiben durch eine Pipe werden die Daten nicht zeilengepuffert, und die sleep macht dies deutlich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.