Como ejecutar un comando unix desde Java

Lo que quiero es poder ejecutar el comando 'grep' de unix desde una aplicación Java. Quisiera saber si hay alguna forma de hacer esto y ademas poder obtener, en la aplicación, el resultado que me devuelve 'grep' en pantalla.
Respuesta
1
Se pueden ejecutar comandos desde cualquier aplicación java utilizando la clase java. Lang. Runtime . Si miras el API verás que tienes una serie de métodos exec, cualquiera de ellos puede funcionarte. Lo único que tendrías que hacer es pasar al método exec por parámetro un String con el nombre del comando que quieres que se ejecute. Esto creará un proceso por separado del programa que tú estás ejecutando y ejecutará el comando. Ahora bien, otra cosa es ver el resultado que te devuelve grep... normalmente (y te hablo de windows que es donde he probado el comando exec) en windows se abre una ventana de comandos y ahí ves la ejecución del comando que hayas invocado (ftp, dir...)... pero en UNIX no sé cómo será.
Acabo de mirar y creo que he encontrado la solución. Vamos a ver, cuando ejecutas el método exec que te he dicho, te devuelve un objeto Process. Pues bien, tienes que guardar ese objeto, y luego utilizar el método getInputStream() de la clase Process para obtener un InputStream que luego ya puedes utilizar tanto como para sacarlo por pantalla como para guardar el resultado en un fichero o lo que quieras. Más o menos, la cosa sería así:
Process p=java.lang.Runtime.exec("grep");
IntputStream output=p.getInputStream();
BufferedInputStream buffer=new BufferedInputStream(output);
while (buffer.available()){
System.out.print(buffer.read());
}
Esto debería funcionar. Aún así lo probaré en mi casa (ahora mismo no puedo) y veré qué tal funciona. Hay que tener en cuenta algunas consideraciones que aparecen en la explicación de la clase Process del API de java, que creo que deberías leer para ver si se adecua al uso que tú quieres darle. Un saludo y no dudes en volver a preguntar si no te ha quedado clara la solución.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas