El lenguaje de programación que más conozco es Java. Actualmente tengo que escribir bastantes "scripts de shell" para automatizar mis servidores. ¿Hay algo así como un "Shell de Java" para que yo pueda escribir los scripts de shell en Java?
El lenguaje de programación que más conozco es Java. Actualmente tengo que escribir bastantes "scripts de shell" para automatizar mis servidores. ¿Hay algo así como un "Shell de Java" para que yo pueda escribir los scripts de shell en Java?
Respuestas:
Puedes ponerte maravilloso y usar groovysh. He hecho algunas cosas con eso, pero encuentro que perl o bash / sh es lo más útil para hacer scripts de administrador. Un lenguaje de aplicación como Java agrega mucha sobrecarga cuando todo lo que necesita hacer es ejecutar comandos del sistema operativo y buscar texto.
No existe un requisito real de que los "scripts de shell" tengan que escribirse en un lenguaje de shell, puede hacer todo con C o incluso Assembler, si así lo desea.
En el contexto de los scripts de shell, el shell no es más que un intérprete para un lenguaje de programación, al igual que Perl o PHP, pero está muy optimizado para el tipo de trabajo que realiza principalmente con un script de shell.
A largo plazo, te sugiero que aprendas bash o algo así, lo que no es realmente difícil porque los proyectiles son muy limitados en sus habilidades para que no haya mucho que aprender.
Algunos de los lenguajes jvm más ligeros tienen shells, pero esos son front-end para el intérprete, no dialectos personalizados para ministrar. Un buen shell del sistema debe tener un excelente proceso y soporte de descriptor de archivo y tener una sintaxis concisa y componentes incorporados, y no creo que exista en Java.
Puede mezclar programación con secuencias de comandos con cosas como chef, puppet, vlad y similares, pero eso significa aprender primero las secuencias de comandos bash, porque esos lenguajes, bastante sensatamente, delegan comandos en el shell. Lenguajes como Ruby, Perl y Python son menos detallados y verás que se usan mucho. La verbosidad de Java y algunos de sus valores centrales (hacer todo en la jvm, no abandonar el ide) lo hacen muy inadecuado para la tarea.
Sí hay. He estado usando BeanShell de vez en cuando, a pesar de que no está en desarrollo activo en este momento. Es un intérprete para la sintaxis estándar de Java y también viene con un intérprete / entorno gráfico, si es necesario.
Puede escribir sus scripts de shell como se describe en los documentos de BeanShell , pero tendría que hacer que el archivo jar de Beanshell esté disponible para su instalación de Java para esto (por ejemplo, ponerlo en la /ext/lib
carpeta de su instalación de JRE), de lo contrario, Java no encontrará la bsh.Interpreter
clase .
Sin embargo, también recomendaría que eche un vistazo más de cerca a sus opciones de exploración de shell (no mencionó su entorno, pero la recomendación de TiZon con bash es genial cuando usa Linux). El uso de un lenguaje de programación de propósito general completo como Java solo se interpondrá cuando intente ser productivo con tareas similares a shell, por ejemplo, mover archivos, invocar comandos y similares.
Probablemente deberías echar un vistazo a Bash Scripting .
Escribí jpad.io para permitir la ejecución de "scripts de shell" de Java y fragmentos interactivos al tiempo que proporcionaba una buena visualización de los resultados. Esto muestra lo que quiero decir:
Para copiar un archivo usando esto como un lenguaje de script, usaría: http://jpad.io/example/1I/fileio
final File file = new File("outt.csv");
Object o = new int[] {1,2,3};
JPad.writeCsv(o, file);
java.nio.file.Files.copy(file.toPath(), Paths.get("copy.csv"));
Que también puede ejecutar desde la línea de comandos como:
> jpad fileio.jpad
> dir
29/04/2017 13:30 <DIR> .
29/04/2017 13:30 <DIR> ..
29/04/2017 13:30 16 copy.csv
29/04/2017 13:30 160 fileio.jpad
29/04/2017 13:30 16 outt.csv
PowerShell, un shell orientado a objetos que puede usar bibliotecas C #, se ha abierto y está disponible para Linux .