|
|
(12 versioni intermedie di uno stesso utente non sono mostrate) |
Riga 1: |
Riga 1: |
− | La questione è abbastanza complessa. Si tratta di capire come poter raccogliere (leggere) quanto viene mostrato all'interno di una finestra di un Terminale.
| + | #REDIRECT [[Intercettare_quanto_viene_scritto_manualmente_nella_console_o_in_un_Terminale]] |
− | | |
− | E' il caso di precisare che è <SPAN style="text-decoration:underline">non</span> si intende capire come intercettare, ma come raccogliere tutto ciò che è leggibile nel Terminale.
| |
− | | |
− | Facciamo un esempio pratico: si apra un Terminale, e si lanci per esempio il comando: ''ls''.
| |
− | | |
− | La domanda è: una volta che il comando ''ls'' ha esercitato la sua funzione, ed il risultato è mostrato nel terminale, come raccogliere con codice Gambas <SPAN style="text-decoration:underline">ogni</span> riga appunto visibile nel Terminale ?
| |
− | | |
− | Allo stato attuale delle conoscenze di chi scrive, bisognerà trovare un compromesso fra comandi ''Bash'' e funzioni Gambas.
| |
− | | |
− | | |
− | ==Uso del comando "''Script''"==
| |
− | Faremo in modo da aprire una finestra di Terminale e lanciarvi all'interno il comando ''Script'':
| |
− | '''Public''' Sub Form_Open()
| |
− |
| |
− | Shell "gnome-terminal -e <FONT color=#B22222>script</font>"
| |
− |
| |
− | '''End'''
| |
− | Nel medesimo percorso ove è posizionato l'eseguibile Gambas, sarà creato un file, chiamato: "''typescript''". Si comincerà a scrivere e ad usare normalmente il terminale. Conclusa la scrittura, si dovrà lanciare in Terminale il comando ''Exit''. Questa fase finale chiuderà il Terminale, e procederà a copiare all'interno del file "''typescript''" quanto scritto e ritornato nel predetto Terminale, aggiungendovi dei codici speciali, leggibili ed interpretabili solo da un Terminale.
| |
− | Quindi, tornando in Gambas, si potrà leggere agevolmente in un nuovo Terminale, quanto presente nel file "''typescript''":
| |
− | '''Public''' Sub Button1_Click()
| |
− |
| |
− | Desktop.OpenTerminal
| |
− |
| |
− | <FONT color=#006400>' ''Attendiamo la creazione del file speciale "/dev/pts/1":''</font>
| |
− | Do
| |
− | Wait 0.01
| |
− | Loop Until Exist("/dev/pts/1") |[[#Note|1]]|
| |
− |
| |
− | <FONT color=#006400>' ''Leggiamo dal file "typescript", ed indirizziamo il contenuto al nuovo Terminale appena aperto:''</font>
| |
− | Shell "cat /percorso_del_file/typescript > /dev/pts/1"
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | | |
− | ==Uso del comando "''xterm -l''"==
| |
− | Per usare questa modalità, bisognerà aver installato nel proprio sistema il Terminale "''xterm''".
| |
− | | |
− | Si dovrà lanciare il comando ''xterm -l'':
| |
− | '''Public''' Sub Button1_Click()
| |
− |
| |
− | Shell "<FONT color=#B22222>xterm -l</font>"
| |
− |
| |
− | '''End'''
| |
− | si aprirà quindi il Terminale "''xterm''". Nel medesimo percorso ove è posizionato l'eseguibile Gambas, verrà creato un file, il cui nome inizia con: ''Xterm.log.'' . Si potrà quindi scrivere ed utilizzare regolarmente il Terminale "''xterm''".
| |
− | | |
− | Successivamente, per rivedere quanto scritto ed ottenuto nel terminale, si dovrà andare a leggere il contenuto del predetto file.
| |
− | '''Public''' Sub Button1_Click()
| |
− |
| |
− | Desktop.OpenTerminal
| |
− |
| |
− | <FONT color=#006400>' ''Attendiamo la creazione del file speciale "/dev/pts/1":''</font>
| |
− | Do
| |
− | Wait 0.01
| |
− | Loop Until Exist("/dev/pts/1")
| |
− |
| |
− | <FONT color=#006400>' ''Leggiamo dal file "typescript", ed indirizziamo il contenuto al nuovo Terminale appena aperto:''</font>
| |
− | Shell "cat /percorso_del_file/Xterm.log.* > /dev/pts/1"
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | | |
− | ----
| |
− | ==Note==
| |
− | | |
− | [1] Per diverse ragioni, in modo particolare se sono aperti altri Terminali e Console, il numero del file in ''/dev/pts/'' potrebbe non essere 1.
| |