ejecutar comandos desde Interfaz java

Hola y gracias de ante mano.
Uso la clase Runtime "Process process = Runtime.getRuntime().exec(command);" y todo lo de mas, me ejecuta comandos como "mkdir carpeta" "rm -r carpeta" pero me ejecurta comando como el "ls -l" y el q mas me interesa "cd /home/" y muchos otros comandos q faltan.

Como puedo resolverlo.

wSilverWolfw escribió:

me ejecuta comandos como "mkdir carpeta" "rm -r carpeta" pero me ejecurta comando como el "ls -l" y el q mas me interesa "cd /home/" y muchos otros comandos q faltan.
Como puedo resolverlo.

Perdona, ¿Tú entiendes lo que escribiste?

Según leo, te ejecuta los comandos "mkdir...", pero también los "ls..." y el que más te gusta "cd..." y también otros que faltan... ¿ah? ¿Voy bien?

Aviso Escribe con propiedad

No uses q en lugar de que.

Saludos.

Hola y gracias de nuevo.
Para empezar lamento no explicarme bien ya que era muy tarde y me mataba el sueño.
Estoy utilizando la distribucion Debian.
Tengo diseñada una Interfaz en java basicamente es un JTextArea.
Todos los comandos validos los guardo en un LinkList para poder reusarlos
oprimiendo las teclas DOWN y UP del teclado.
Para ejecutar los comandos utilizo las clases Runtime y Process de java.

  • Logre que funcionen los comandos "mkdir ..." y el "rm ..." y estos solo me crean y eliminan
    carpetas en el directorio donde esta mi .jar. Cuando ingreso el comando "ls ..." me gustaria que se viera en el JTextArea pero eso no sucede, si uso System.out.write(...); solo puedo ver el listado de archivos en la consola de java.
  • Cuando ingreso el comando "cd /..." me sale como comando no encontrado,estoy usando try cath para
    capturar error, y realmente necesito moverme en los directorios.

Bueno lamento molestar recien empizo en linux y ya me piden que me invente mi propia consola.

No recuerdo como se hacía en java, pero lo que tienes que hacer es capturar la salida estandar del proceso al que llamas, puedes intentar ejecutar el ls con los parametros que tengas que pasarle y pasarlo a un archivo

ls -a >> lectura_java.txt y desde java abrir un fileinputstream a ese archivo cargarlo en el JTextArea y posteriormente eliminar ese archivo temporal.

Gracias por la pronta respuesta.
Me sirvio de mucho.
Para los q se cruzen con el mismo problemas la solucion que hice fue.

para ls, ls -... guardar con tuberias por ejemplo ls -l |cat >lsjava.txt y desde java leo el archivo y lo muestro en el area de texto. Gracias a Tigreci.

para hacer uso de cd aki manejo un "String direccion" al inicio ejecuto un archivo direccion.sh

pwd |cat >direccion.txt y leo una ves esta direccion. luego al usar cd /home/user/Desktop/ por ejemplo le asigno /home/user/Desktop/
cuando quiero hacer uso de ls, mkdir, rm, cat ... creo un archivo
(direccion+comando+"java.sh") >> por ejemplo si uso ls tendre un archivo creado en escritorio con el nombre de lsjava.sh dentro del archivo >> ls |cat >lsjava.txt.
y para el mkdir uso mkdir direccion carpeta.

Si no comprenden bien me avisan para aclarar algunos puntos.

Para realizar operaciones como las que tu dices listar archivos, crear directorios, cambiar nombre archivos, copiar, cortar, pegar archivos, etc. lo que yo utilice fue lo siguiente:

Tengo un JFrame con un JLabel y una JTextArea
En el JLabel escribo las instrucciones de manejo de archivos
escribo la instrucción mas enter, evaluó la instrucción y como por ejemplo para hacer un ls realizo lo siguiente :

//Te hace una lista de los archivos y directorios que contiene el Dir. Origen
//area es un JTextArea

public void listarDirectorio(File dirOrigen){

String[] misDir = dirOrigen.list();

for(int i = 0; i<misDir.length; i++){

area.append(misDir[i]+"\n");

}

}

Y para crear un Directorio

//para crear directorio

public void creaDirectorio(File dirDest){

if (dirDest.exists()) {

                area.append("ERROR el Directorio ya existe\n");

               }

        else {

        dirDest.mkdir();

        area.append("El Directorio se creo con exito\n");

        }

}

Y así vas realizando las demás operaciones como por ejemplo copiar archivos, eliminar archivos, etc en fin todo es manejo de la clase File de Java, otra idea mas para lo que estés haciendo wink

wSilverWolfw escribió:

Hola y gracias de nuevo.
Para empezar lamento no explicarme bien ya que era muy tarde y me mataba el sueño.
Estoy utilizando la distribucion Debian.
Tengo diseñada una Interfaz en java basicamente es un JTextArea.
Todos los comandos validos los guardo en un LinkList para poder reusarlos
oprimiendo las teclas DOWN y UP del teclado.
Para ejecutar los comandos utilizo las clases Runtime y Process de java.

  • Logre que funcionen los comandos "mkdir ..." y el "rm ..." y estos solo me crean y eliminan
    carpetas en el directorio donde esta mi .jar. Cuando ingreso el comando "ls ..." me gustaria que se viera en el JTextArea pero eso no sucede, si uso System.out.write(...); solo puedo ver el listado de archivos en la consola de java.
  • Cuando ingreso el comando "cd /..." me sale como comando no encontrado,estoy usando try cath para
    capturar error, y realmente necesito moverme en los directorios.

Bueno lamento molestar recien empizo en linux y ya me piden que me invente mi propia consola.

Creo sería mejor y aunque no pudiera parecertelo, mas sencillo hacerlo en C o en su caso C++, la API de Linux y de cualquier derivado UNIX se basa en estos lenguajes. Se que no es algo tan trivial, pero te aseguro que estudiando un poquito puedes hacer maravillas.
Java es bueno y sencillo de usar, eso no te lo niego, pero no se me hace la herramienta adecuada para esta situación. Al menos que sea obligatorio hacerlo en este lenguaje o que no sepas usar otro se podría justificar.
La solución anterior de capturar salida estándar del comando es lo mas viable, pero en Java es muy ritualista hacerlo. En C/C++ puedes ayudarte de los pipes y algunas manipulaciones "especiales" de estos, que repito, no es muy trivial pero tampoco es algo que sea extremadamente complicado de hacer, de hecho es mas limpio y entendible que hacerlo en Java.

Aqui -> http://blog.txipinet.com/2006/11/05/48-curso-de-programacion-en-c-para-gnu-linux-vii/ viene algo sobre eso de redireccionar salida estandar (inclusive la entrada) de un programa ya sea para pasarla a otro programa o al nuestro propio, todo totalmente desde el código pudiendo manipular esa salida a nuestra conveniencia. Pero eso si, tendrías que estudiar mucho sobre el manejo de la API de UNIX/Linux sobre C y si quieres meter interfaces gráficas pues con GTK+ o Qt lo cual requiere un extra de aprendizaje.
En Java no sabría decirte con certeza como puedes hacer esto mismo pero lo que si puedo decirte es que es un ritual hacerlo en este lenguaje porque no está integrado tan estrechamente con el sistema operativo, en este caso Linux, como lo está C o C++.

hola atodos esper que me ayuden prfavor
tego este codigo
try {
InputStream in = getClass().getResourceAsStream("reglas.txt");
BufferedReader bufferde = new BufferedReader(new InputStreamReader(in));
String linea = "";
for (linea = bufferde.readLine(); linea != null; linea = bufferde.readLine())

System.out.println(linea);
} catch (Exception e) {
e.printStackTrace();
}

pero en ves que me muestre el texto en System.out.println(linea); quero que lo muestre en JTextPane
porfavor es urjente

waltelp escribió:

hola atodos esper que me ayuden prfavor
tego este codigo
try {
InputStream in = getClass().getResourceAsStream("reglas.txt");
BufferedReader bufferde = new BufferedReader(new InputStreamReader(in));
String linea = "";
for (linea = bufferde.readLine(); linea != null; linea = bufferde.readLine())

System.out.println(linea);
} catch (Exception e) {
e.printStackTrace();
}

pero en ves que me muestre el texto en System.out.println(linea); quero que lo muestre en JTextPane
porfavor es urjente

Aviso No invadas o desvíes temas abiertos por otros usuarios

Por favor waltelp, crea tu propio hilo y recuerda que esto no es un servicio técnico.

waltelp escribió:

soy nuecvo en esto
pero detodas formas disculpa

porfavor nesesito ayuda urje
hola atodos esper que me ayuden prfavor
tego este codigo
try {
InputStream in = getClass().getResourceAsStream("reglas.txt");
BufferedReader bufferde = new BufferedReader(new InputStreamReader(in));
String linea = "";
for (linea = bufferde.readLine(); linea != null; linea = bufferde.readLine())

System.out.println(linea);
} catch (Exception e) {
e.printStackTrace();
}

pero en ves que me muestre el texto en System.out.println(linea); quero que lo muestre en JTextPane
porfavor es urjente

¡Importante! No invadas hilos.

¿Que no has entendido? Si vuelves a reincidir directamente borrare tus post

como creo un hilo porfavor