Rendere la console dell'IDE funzionale come un Terminale
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