Path: csiph.com!aioe.org!.POSTED.hqPgifCF1TaqUfx+6Uvsxg.user.gioia.aioe.org!not-for-mail From: Gioacchino Newsgroups: it.comp.java Subject: Re: comandi Bash su Mac da Java Date: Fri, 30 Aug 2019 18:33:53 +0200 Organization: Aioe.org NNTP Server Lines: 58 Message-ID: References: NNTP-Posting-Host: hqPgifCF1TaqUfx+6Uvsxg.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 Content-Language: it X-Notice: Filtered by postfilter v. 0.9.2 Xref: csiph.com it.comp.java:9320 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\""; > > 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. > 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()); } } }