GeekTool ShellSkript zeigt wirre Zeichen an

kev.lin

Mitglied
Thread Starter
Dabei seit
15.03.2007
Beiträge
53
Reaktionspunkte
1
Hallo,

ich habe mir folgendes Bash-Skript geschrieben, um den Füllstand der Festplatte als horizontalen Balken im Terminal (bzw. mit GeekTool auf dem Schreibtisch) anzeigen zu lassen:
Code:
BarLength=75
FullSymbol="■"
FreeSymbol="_"
UsedPercentage=$(df | grep 'disk' | awk '{print $5}' | cut -c 1-2)
FreePercentage=$[100-$UsedPercentage]
FullLength=$[BarLength*$UsedPercentage/100]
FreeLength=$[BarLength*$FreePercentage/100]

for i in $(eval echo {1..$FullLength})
do
   printf "%s" $FullSymbol
done

for i in $(eval echo {1..$FreeLength})
do
   printf "%s" $FreeSymbol
done

Das Skript kann man bestimmt noch optimieren - ich bin für Vorschläge offen :)

Mein Problem ist aber nun ein anderes:
Wenn ich das Skript mit GeekTool auf dem Schreibtisch anzeigen lassen, erscheint vor der Anzeige eine wirre Ausgabe: [H[2J
Diese 5 Zeichen erscheinen beim Aufruf im Terminal nicht.
Die ganze Ausgabe auf dem Schreibtisch sieht dann so aus:

[H[2J■■■■■■■■■■■■■■■■■■■■■■■■■_________________________________________________

Jemand eine Idee, woran das liegen könnte?
 
Idee hab ich schon. Liegt wohl am Zeichensatz. Hab das mal bei mir laufen lassen; mit dem Script in UTF-8 gespeichert. Dann noch das Terminal auf UTF-8 gestellt und schon kam das Klötzchen richtig an.
 
Das Skript kann man bestimmt noch optimieren - ich bin für Vorschläge offen :)

Mein Problem ist aber nun ein anderes:
Wenn ich das Skript mit GeekTool auf dem Schreibtisch anzeigen lassen, erscheint vor der Anzeige eine wirre Ausgabe: [H[2J

Könnte evtl. an den printfs liegen.

Mein Vorschlag:
Code:
#!/bin/bash
#set -vx

BarLength=75
FullSymbol="█"
FreeSymbol="_"
UsedPercentage=$(df | grep "${1:-disk}" | awk '{print $5}' | cut -d '%' -f 1)
[[ $UsedPercentage -eq 1 ]] && UsedPercentage=2 # Ausnahme wg. int-Rundung 0.75
FullLength=$[BarLength*$UsedPercentage/100]

for i in $(eval echo {1..$BarLength})
do
 [[ $i -le $FullLength ]] && echo -n "$FullSymbol" || echo -n "$FreeSymbol"
done
 
Idee hab ich schon. Liegt wohl am Zeichensatz. Hab das mal bei mir laufen lassen; mit dem Script in UTF-8 gespeichert. Dann noch das Terminal auf UTF-8 gestellt und schon kam das Klötzchen richtig an.
Ich habe Skript, Terminal und GeekTool überprüft - alles war auf UTF-8 eingestellt.
Den Durchbruch hat das Löschen den clear-Befehls gebracht!
@olivetti:
Danke, ich schauen mir mal deinen Code-Vorschlag mal an!
 
Zurück
Oben Unten