Gambas: Shell
Aus Wikibooks
Zurück zu Gambas
Man kann die Linux Shell von Gambas aus ansprechen und nutzen. Wie das geht zeigen die folgenden Beispiele:
[Bearbeiten] Ls unter Gambas
Das folgende Beispielprogramm zeigt, wie man sich die Dateien eines Verzeichnisses der Festplatte in einer Textarea anschauen kann.
Man braucht eine Textarea und einen Befehlsbutton, um das Programm in gang zu bringen.
' Gambas class file
PUBLIC Content AS String
'Get the content of a directory
PUBLIC SUB Button1_Click()
SHELL "ls -la > /tmp/result" WAIT
Content = File.Load("/tmp/result")
Textarea1.text = content
END
Man kann den String mit dem Namen Content aus dem Programm entfernen, wenn man die Textarea direkt mit dem Fileload füllt.
Textarea1.text = File.Load("/tmp/result")
[Bearbeiten] Noch ein Beispiel: Unterverzeichnisse anschauen
Man braucht eine Textarea und 2 Befehlsbuttons, um das Programm in Gang zu bringen.
PUBLIC SUB Form_Open()
ME.Text = "Unterverzeichnisse anzeigen - Wählen Sie einen Pfad"
ME.X = 200
ME.Y = 50
ME.Width = 1200
ME.Height = 600
Button1.Text = "Unterverzeichnisse anzeigen"
Button1.X = 16
Button1.Y = 16
Button1.Width = 300
textarea1.Text = ""
textarea1.x = 16
textarea1.y = 56
textarea1.width = 700
textarea1.height = 500
Button2.Text = "Ende"
Button2.X = 340
END
PUBLIC SUB Button1_Click()
DIM t AS String
IF Dialog.SelectDirectory() THEN RETURN
t = Dialog.Path
SHELL "ls -ld " & t & "*/. > /tmp/result" WAIT
Textarea1.text = File.Load("/tmp/result")
END
PUBLIC SUB Button2_Click()
ME.Close
END
Im ersten Unterprogramm Form_Open werden nur einige Einstellungen für die 3 Steuerelemente vorgenommen. Im 2, Unterprogramm Button1_Click steht der eigentlich wichtige Code: Zunächst wird ein string t deklariert. Dann wird eine Dialogform zur Auswahl des Verzeichnisses geöffnet. Das ausgewählte Verzeichnis (Dialog.path) wird dem String t übergeben. Mit dem Shell Befehl werden alle Unterverzeichnisse von Dialogpath in eine temporäre Datei gespeichert. Diese Datei wird geladen und in der Textarea angezeigt.
[Bearbeiten] wc = wordcount unter Gambas
Im folgenden Programm wird der Linuxbefehl wc , der die Zeilen, die Worte und die Zeichen eines beliebigen Textes zählt, innerhalb eines Gambasprogrammes genutzt.
Um das Programm in Gang zu bringen braucht man:
- 2 Befehlsbuttons
- 1 Textarea ( Hier wird der zu untersuchende Text eingegeben)
- 1 Textbox ( Hier wird das Ergebnis des wordcount ausgegeben)
Der Code dazu:
PUBLIC t AS String
PUBLIC SUB Form_Open()
Textarea1.Text = "Dies ist ein Test"
Textbox1.Text = ""
END
PUBLIC SUB Button1_Click()
File.Save(system.Home & "/test.txt",TextArea1.Text)
CATCH
IF ERROR THEN RETURN
END
PUBLIC SUB Button2_Click()
SHELL "wc " & system.Home & "/test.txt > /tmp/result" WAIT
t = File.Load("/tmp/result")
textbox1.Text = t
END
- Mit dem Befehl 1 wird der Inhalt der Textarea in einer Datei test.txt abgespeichert.
- Mit dem Befehl 2 wird diese Datei test.txt einem wordcount unterzogen. das Ergebnis in der Datei /tmp/result abgespeichert.
- Diese Datei wird dann wieder in die Textbox geladen und angezeigt.
Etwas umständlich aber es geht. Der String t ist eigentlich überflüssig und kann aus dem Programm entfernt werden wenn man
textbox1.Text = File.Load("/tmp/result")
schreibt.