Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Shell bash in java

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da rizz1 Visualizza il messaggio
    Salve a tutti, chiedo se qualcuno sa come poter fare un piccolo programma Java che preso in input un comando bash, riesca ad eseguire tala comando. I comandi che mi servono sono di ripulitura e filtraggio di un file txt (grep, cut, ecc...).
    Non mi sembra un progrmmma lungo, però mi servirebbe almeno un aiuto su come impostarlo. So di dover utilizzare qualche libreria, io ho provato con la VNGX-JSCH trovata su Internet, ma poco mi è chiaro l'utilizzzo.
    Se si tratta di eseguibili esterni alla shell (indipendentemente dal S.O./shell), come grep e cut (che sono eseguibili esterni a qualuque shell ... non sono comandi "builtin" della bash!), allora basta usare il classico java.lang.Runtime (con i suoi vari exec() ) oppure da Java 5, il java.lang.ProcessBuilder.

    Questo vale per qualunque "eseguibile". E l'unica cosa da tenere presente è che se il processo lanciato fa dell'output su standard-output/error, questo output deve essere letto lato Java.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    79
    Provo ad utilizzare java.lang.Runtime dato che i comandi non sono builtin. Mi manca un pò di pratica con tale libreiria, dovrei trovare esempi su Internet, nel caso provo a chiederti.
    Grazie mille dell'aiuto

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    79
    Il metodo exec() esegue un comando prendendo come parametro il file eseguibile del comando bash , giusto?
    Per eseguire il comando cut, dovrei avere tale file a disposizione. In ambiente Linux è semplce. In Windows devo scaricare una bash contentente tali file?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    79
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Se si tratta di eseguibili esterni alla shell (indipendentemente dal S.O./shell), come grep e cut (che sono eseguibili esterni a qualuque shell ... non sono comandi "builtin" della bash!), allora basta usare il classico java.lang.Runtime (con i suoi vari exec() ) oppure da Java 5, il java.lang.ProcessBuilder.

    Questo vale per qualunque "eseguibile". E l'unica cosa da tenere presente è che se il processo lanciato fa dell'output su standard-output/error, questo output deve essere letto lato Java.
    Hai suggerimenti su come posso visualizzare l'output da Java. Nel programma che ho fatto, il risultato del metodo exec() su un oggetto di tipo Runtime, è stato salvato in una variabile di tipo Process.Come posso vedere a video il risultato dell'esecuzione?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da rizz1 Visualizza il messaggio
    Il metodo exec() esegue un comando prendendo come parametro il file eseguibile del comando bash , giusto?
    Gli exec sono in diverse varianti. Puoi passare un eseguibile+argomenti in unico String o separati in un String[].

    Quote Originariamente inviata da rizz1 Visualizza il messaggio
    Per eseguire il comando cut, dovrei avere tale file a disposizione. In ambiente Linux è semplce. In Windows devo scaricare una bash contentente tali file?
    Esistono "porting" su Windows dei tools di Linux/Unix.
    https://www.google.it/#q=grep+cut+windows

    Quote Originariamente inviata da rizz1 Visualizza il messaggio
    Hai suggerimenti su come posso visualizzare l'output da Java. Nel programma che ho fatto, il risultato del metodo exec() su un oggetto di tipo Runtime, è stato salvato in una variabile di tipo Process.Come posso vedere a video il risultato dell'esecuzione?
    Process ha getInputStream() / getErrorStream() che forniscono un InputStream (non conviene però leggere "a byte" ma incapsularli in InputStreamReader e/o altro di più alto livello).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.