Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

comandi Bash su Mac da Java

7 views
Skip to first unread message

dennis

unread,
Aug 30, 2019, 6:06:15 AM8/30/19
to
Buongiorno a tutti, non riesco a far eseguire un comando di shell
(Bash, su Mac OS) da un programma Java.

Ho bisogno di salvare l'output del comando ls su un file di testo. Il
file compilato del programma si trova nella stessa cartella che
contiene anche la cartella con i files il cui elenco voglio
visualizzare in ls.

questa è la parte di codice:

String comando = "/bin/bash -c \"ls CartellePratiche > ElencoPratiche.txt\"";

System.out.println(comando);

Runtime.getRuntime().exec(comando);

la System.out.println l'ho inserita per verificare il corretto output
del comando: /bin/bash -c "ls CartellePratiche > ElencoPratiche.txt"

lanciando direttamente il comando dal terminale, funziona. Perché dal
programma Java no?

con il pronpt di Windows non ho problemi:

Runtime.getRuntime().exec("cmd /c dir /b CartellePratiche >
ElencoPratiche.txt && exit");

Grazie in anticipo per l'aiuto.

Enrico Bianchi

unread,
Aug 30, 2019, 9:33:00 AM8/30/19
to
On 2019-08-30, dennis <dennis...@outlook.it> wrote:

> Ho bisogno di salvare l'output del comando ls su un file di testo.

Una domanda: perché non lo fai direttamente da Java? Files.walk serve per
questo

Enrico

Dr.UgoGagliardelli

unread,
Aug 30, 2019, 10:44:41 AM8/30/19
to
Il 30.08.2019 12.06, dennis ha scritto:
> Buongiorno a tutti, non riesco a far eseguire un comando di shell (Bash,
> su Mac OS) da un programma Java.
>
> Ho bisogno di salvare l'output del comando ls su un file di testo. Il
> file compilato del programma si trova nella stessa cartella che contiene
> anche la cartella con i files il cui elenco voglio visualizzare in ls.
>
> questa è la parte di codice:
>
> String comando = "/bin/bash -c \"ls CartellePratiche >
> ElencoPratiche.txt\"";

In genere utilizzo il metodo
exec(String[] cmdarray, String[] envp, File dir)

dove cmdarray sarebbe:

String[] cmdarray = {"/bin/bash", "-c", "\"ls CartellePratiche >
> ElencoPratiche.txt\""};

e envp e dir possono essere null.

Gioacchino

unread,
Aug 30, 2019, 12:34:01 PM8/30/19
to
prova a creare un reader che legge l'inputstream dal processo :


import java.io.*;

public class List
{
public static void main(String[] args)
{
try
{
Process proc=Runtime.getRuntime().exec(comando);
BufferedReader read=new BufferedReader(new
InputStreamReader(proc.getInputStream()));

while(read.ready())
{
System.out.println(read.readLine());
}
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
}
}
0 new messages