Rendere la console dell'IDE funzionale come un Terminale

Da Gambas-it.org - Wikipedia.

E' possibile rendere funzionale la console dell'IDE di Gambas similmente ad un Terminale.

Per ottenere questo risultato è necessario lanciare da codice la shell mediante l'istruzione "Exec[]" usando il comando bash:

Public Sub Button1_Click()

 Exec ["bash"]

End


Usare la Proprietà ".Shell" della Classe System

Public Sub Button1_Click()

 Exec [System.Shell]

End

Si potrà anche scegliere la "shell" da utilizzare, assegnandola alla Proprietà ".Shell".
Esempio:

System.Shell = System.Find("bash")

Per disattivare tale funzionalità, bisognerà gestirne il processo con Process e distruggerlo mediante il metodo .Kill:

Private pr As Process


Public Sub Button1_Click()

' Gestisce il processo, creato da "Exec", mediante una variabile di tipo "Process":
 pr = Exec [System.Shell]

End


Public Sub Button2_Click()

' Distrugge il processo creato con "Exec":
 pr.Kill

End


Lanciare comandi e programmi dalla console dell'IDE di Gambas

In particolare si potranno lanciare in tal modo dalla console comandi bash e programmi in generale sia scrivendoli manualmente (proprio come in un Terminale), sia in alternativa - come nell'esempio che segue - via codice con l'uso di Process:

Private pr As Process


Public Sub Form_Open()

 pr = Exec [System.Shell] For Write

End


Public Sub Button1_Click()

 Print #pr, "whereis gambas"

 Print #pr, "gedit"

End


Inoltre, via codice sarà anche possibile raccogliere i dati di risultato dalla console, ponendo sotto osservazione il processo della shell, per gestirli altrove:

Private pr As Process


Public Sub Form_Open()

 pr = Exec [System.Shell] For Read Write As "processo"

End


Public Sub Button1_Click()

 Print #pr, "whereis gambas"

End


Public Sub processo_Read()

 Dim s As String

 Line Input #pr, s
  
 TextArea1.Text &= s & "\n"
 
End


Intercettare il testo scritto nella console dell'IDE di gambas

L'attribuzione delle funzionalità tipiche di un terminale alla console dell'IDE di Gambas consente inoltre di poter intercettare e gestire altrove quanto viene semplicemente scritto nella console medesima. Dopo aver scritto il testo nella console, l'utente dovrà premere per ogni riga di testo il tasto "Return" o il tasto "Invio":

Private pr As Process
Private fl As File 


Public Sub Form_Open()

 pr = Exec [System.Shell] For Write

' Apre in lettura e sottopone in osservazione lo standard Output:
 fl = Open "/dev/stdout" For Read Watch

End


Public Sub File_Read()

 Dim s As String
 
 Line Input #fl, s
  
 TextArea1.Text &= s
 
 Print "Osservato: "; s

End


Public Sub Button1_Click()

' Per andare "a capo" nella TextArea:
 TextArea1.Text &= Chr(10)
 
End