¿Batch en Linux? (Resuelto)

Iniciado por GaciX 69, Mayo 03, 2010, 03:04:59 AM

Tema anterior - Siguiente tema

GaciX 69

Por extraño que parezca el título del tema, sí, necesito ejecutar instrucciones batch en Linux.

Bueno, la cosa es que un amigo mío hizo un archivo .BAT que automatiza unos procesos de manejo de archivos que tenemos que hacer de una manera bastante eficiente. El problema es que se maneja por línea de comandos con un montón de comandos echo, en la cual te hace miles de preguntas las cuales debe contestar con si/no o yes/no.

Yo soy un poco "alérgico" al abuso de la linea de comandos para el manejo de archivos batch, ya que personalmente me gusta que los batch operen de manera "silenciosa" y sin preguntar nada al usuario. Pero como este programa BAT necesariamente tiene que hacer preguntas, pues le dije a mi amigo: "¿Que tal si le hacemos una GUI en Java para el programa?", y él esuvo de acuerdo para hacer la GUI. Hasta ahora llevo la mitad de la GUI escrita en Java, y a mi amigo me preguntó hace algunos minutos: "¿Que tal si porteamos el programa a Linux?", y ahí me mató con su pregunta.

Bueno, yo sé que en Linux no se pueden usar archivos .BAT y que las instrucciones batch de Windows no son compatibles. Así que mi pregunta es la siguiente: ¿Hay un equivalente al lenguaje batch de Windows en Linux?. Se que en Java hay unos comandos que te permiten detectar en que sistema operativo se está ejecutando el programa (creo que era System.getProperties("os.name") o algo así), la cosa es que le pueda decir al programa en Java que cuando se ejecute en Windows, copie las elecciones marcadas en el GUI y las ejecute en el batch, y si el programa se ejecute en Linux pues que lea las instrucciones y ejecute el equivalente al batch para Linux.

Cuento corto para el que no quiere leer lo de arriba:
Solo necesito saber si hay un lenguaje "similar o parecido" al Batch pero en Linux, la idea es crear un archivo similar al BAT en Linux, y adaptarlo al GUI que estoy haciendo, no necesito ayuda ni para batch de Windows ni para el programa en Java (eso lo puedo hacer solo), solo quiero saber como puedo "portear" el BAT a un archivo con instrucciones que me pueda leer el entorno de Linux en general.

Cualquier ayuda de los más "Linuxeros" del foro es apreciada y agradecida por adelantado, ya que yo no uso Linux como sistema operativo principal, debido a que el desarrollo de aplicaciones que hago es generalmente para Windows y solo esta vez me tocó hacer algo para Linux...

Saludos!


RicarDooM

Claro que hay y se llaman shell scripts, es la manera más comoda para realizar algunas tareas en el entorno unix y a mi parecer es mucho más completo que los bat de windows.

Mi favorito es Korn shell y combinado con perl o c y una GUI en java se pueden hacer aplicaciones muy profesionales.

Ojo con el korn shell que es recomendable sólo si la aplicación funcionara en un servidor específico.

Si necesitas verdadera portabilidad es más recomendable usar el de toda la vida (bourne shell)

Saludos.

Te dejo referencias.

http://en.wikipedia.org/wiki/Shell_script
http://www.freeos.com/guides/lsst/ -> tutorial para shell scripts
http://www.grymoire.com/Unix/Sh.html -> Otro tutorial
http://www.bolthole.com/solaris/ksh.html -> Sobre korn shell
Ya saben donde encontrarme.  Diseño Doom

Sami

Sí, es lo que ha dicho RicarDoom, pero en mi carrera los llaman guiones shell :P

Básicamente es escribir un texto plano con comandos de la terminal de linux y salvarlo luego como .sh, equivale a un .bat. Yo he utilizado el bash y no sé tampoco la potencia que tendrán los .bat en windows, pero con los guiones shell puedes escribir casi como si de programación se tratase y hacer lo que te salga del nabo, prácticamente.

Si quieres te paso la documentación de mis prácticas... xDD
Soy el mayor de los frikis!

GaciX 69

Bueno, investigando un poco más sobre los shell scripts encontré lo que andaba buscando. Efectivamente, como dice Sami, la cosa que yo deseo es programar en bash y guardarlo como un script (en este caso sería .sh).

Con respecto a lo que dice RicarDooM sobre los tipos de shell, creo que con Bourne Shell voy sobrado para lo que necesito, ya que más que nada lo que el .bat hacía era descomprimir ciertos elementos de un par de archivos comprimidos, ejecutar un par de transformaciones a ellos con un programa EXE que funciona en línea de comandos (en este momento mi amigo está porteandolo a Linux) y luego comprimir los archivos en un nuevo .zip y eliminar los archivos y librerías temporales que se usaron durante el procedimiento. Técnicamente no son operaciones complejas, pero si el procedimiento manualmente suele tomar bastante tiempo y la gracia es automatizar el proceso.

Gracias nuevamente a ustedes por sus respuestas, con las referencias de RicarDooM tengo para empezar. Sami, dejo a tu criterio si me deseas pasar tu documentación sobre el tema, y la información adicional es siempre bienvenida, por si deseas subirla.


Sami

Te paso los links, que están de forma pública, yon bastante información, la verdad. La práctica 1 era aprender comandos de linux y distintas órdenes, la segunda era ya el funcionamiento de programación del bash, puedes saltarte la primera si ya conoces bastantes comandos:

La página en cuestión es esta: http://ditec.um.es/so/ de la Universidad de Murcia

# Práctica 1

   * Apuntes de la práctica (incluye ejercicios) (PDF).
   * Comparación de Comandos de Linux y MS-DOS (PDF).
   * Ejemplos de uso de distintas órdenes (PDF).
   * Libro de comandos UNIX (tar.gz).

# Práctica 2

   * Apuntes de guiones shell (PDF).
   * Código de los ejemplos de guiones shell que aparecen en los apuntes (Fichero tgz).
   * Ejemplos de ejercicios de exámenes de guiones shell de años anteriores:
         o Enunciados (PDF).
         o Soluciones (tgz).
   * Un par de enlaces interesantes a información sobre el tema (en inglés) para los más interesados: una guía rápida de los comandos más utilizados aquí, y un buen documento explicando en bastante detalle el shell y la programación del mismo aquí.

Espero que te ayuden de alguna forma :P
Soy el mayor de los frikis!

GaciX 69

Sami, ¡eres de lo mejor! Gracias por esos enlaces, me vienen como anillo al dedo...

Gracias de nuevo a ambos por haberme ayudado, creo que ya tengo suficiente información como para comenzar en bash y poder hacer algunas cosas de pasada con los comandos de Linux...