Pulire il Terminale o la console via codice

Da Gambas-it.org - Wikipedia.
(Reindirizzamento da Pulire la console via codice)

Come sappiamo, per pulire la console dell'IDE di Gambas da quanto è stato in esso stampato, è sufficiente cliccare sull'apposito tastino scuro con la x interna bianca posto poco sopra la console stessa sulla sinistra, oppure premere Ctrl+l.

Per pulire via codice la console dell'IDE di Gambas o il Terminale da quanto in essi stampato da un programma Gambas, si possono adottare almeno tre modalità.

Uso della sequenza di escape \e[2J

Si può fare uso della funzione Print o della funzione Write seguita dalla sequenza di escape \e[2J .

Esempio:

Public Sub Main()
 
 Print "Testo qualsiasi"
 
 Wait 1
 
 Print "Testo qualsiasi"
 
 Wait 1
 
 Write "\e[2J"
 
' Se il Terminale o la Console non viene pulito dal testo presente, potrebbe rendersi necessario l'uso della funzione "Flush":
 Flush
 
End


Uso di Shell e del comando clear

Pulizia del Terminale

Di norma, la pulizia del Terminale avviene con il comando "clear" (ma anche con Ctrl+l da tastiera). Pertanto, se si opera con un applicativo a riga di comando, bisognerà inviare detto comando al Terminale.

Nel caso di pulizia del Terminale va segnalato che potrebbe essere necessario inviare preliminarmente la riga: export TERM=xterm, al fine di evitare il problema "TERM environment variable not set". Infatti, per un corretto funzionamento è necessario conoscere l'esatto tipo del terminale su cui si sta lavorando. Andrebbe quindi settata la variabile TERM con la sintassi propria del sistema su cui si lavora.

Mostriamo un esempio pratico:

Public Sub Main()  
 
  Dim i As Integer  
 
' Va verificato se l'attivazione di questa riga è necessaria:
' Shell "export TERM=xterm"
 
 For i = 1 To 2  
   Print "Testo qualsiasi"
   Wait 1    
 Next
 
 Wait 1  
    
' Puliamo il Terminale inviandogli il comando "clear":
 Shell "clear"  
   
 Wait 0.01  
 Print "Testo qualsiasi"  
 Wait 2  
    
End

Pulizia della Console

La pulizia della Console con l'uso di Shell e del comando clear è più semplice:

 Public Sub Main()

 Print "Testo qualsiasi"

 Wait 2

 Shell "clear"

End


Uso della funzione esterna "system()" e del comando clear

Un'altra modalità prevede l'uso della funzione esterna "system()", contenuta nella libreria dinamica condivisa "libc.so.6 ", e del comando clear. [nota 1]

Esempio pratico:

Library "libc:6"

' int system (const char *__command)
' Execute the given line as a shell command.
Private Extern system_C(__command As String) As Integer Exec "system"


Public Sub Main()

 Print "Testo qualsiasi"

 Wait 2

 system_C("clear")

End


Note

[1] Qualcuno sconsiglia l'uso della funzione "system()" per pulire il Terminale: https://forum.ubuntu-it.org/viewtopic.php?f=33&t=481589#p3772094