Il linguaggio di programmazione che conosco di più è Java. Attualmente devo scrivere molti "script di shell" per automatizzare i miei server. Esiste qualcosa di simile a una "shell Java" in modo da poter scrivere gli script della shell in Java?
Il linguaggio di programmazione che conosco di più è Java. Attualmente devo scrivere molti "script di shell" per automatizzare i miei server. Esiste qualcosa di simile a una "shell Java" in modo da poter scrivere gli script della shell in Java?
Risposte:
Puoi diventare groovy e usare groovysh. Ho fatto alcune cose con quello, ma trovo perl o bash / sh il più utile per fare script di amministrazione. Un linguaggio applicativo come Java aggiunge un sacco di sovraccarico quando tutto ciò che devi fare è eseguire i comandi del sistema operativo e cercare il testo.
Non vi è alcun reale requisito che gli "script di shell" debbano essere scritti in un linguaggio di shell, si potrebbe fare tutto con C o persino Assembler, se lo si desidera.
Nel contesto degli script di shell, la shell non è altro che un interprete per un linguaggio di programmazione, proprio come Perl o PHP, ma fortemente ottimizzata per il tipo di lavoro che svolgi principalmente con uno script di shell.
A lungo termine, suggerirei di imparare bash o qualcosa del genere, il che non è molto difficile perché le conchiglie sono molto limitate nelle loro capacità in modo che non ci sia troppo da imparare.
Alcune delle lingue jvm più leggere hanno shell, ma quelle sono front-end per l'interprete, non dialetti personalizzati per l'amministrazione del sistema. Una buona shell di sistema deve avere un eccellente supporto per processi e descrittori di file e sintassi e builtin concisi, e non credo che esista in Java.
Puoi combinare la programmazione con lo scripting con cose come chef, burattino, vlad e simili, ma ciò significa prima imparare lo script bash, perché quei linguaggi, abbastanza sensatamente, delegano comandi alla shell. Lingue come Ruby, Perl e Python sono meno dettagliate e le vedrai usate molto. La verbosità di Java e alcuni dei suoi valori fondamentali (fare tutto nel jvm, non lasciare l'ide) lo rendono molto inadatto al compito.
Si C'è. Di tanto in tanto ho usato BeanShell , anche se al momento non è in fase di sviluppo attivo. È un interprete per la sintassi Java standard e viene fornito anche con un interprete / ambiente grafico, se necessario.
Potresti scrivere i tuoi script di shell come descritto nei documenti di BeanShell , ma per questo dovresti rendere disponibile il file jar Beanshell per la tua installazione Java (es. Metterlo nella /ext/lib
cartella della tua installazione JRE), altrimenti java non troverà la bsh.Interpreter
classe .
Tuttavia, consiglierei anche di dare un'occhiata più da vicino alle opzioni di scripting della shell (non hai menzionato il tuo ambiente, ma la raccomandazione di TiZon con bash è interessante quando usi Linux). L'uso di un linguaggio di programmazione generico come Java si intromette solo quando si cerca di essere produttivi con attività simili alla shell, ad esempio spostare file, invocare comandi e simili.
Probabilmente dovresti dare un'occhiata a Bash Scripting .
Ho scritto jpad.io per consentire l'esecuzione di "script di shell" java e frammenti interattivi fornendo anche una buona visualizzazione dei risultati. Questo mostra cosa intendo:
Per copiare un file usando questo come linguaggio di scripting dovresti usare: 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"));
Che puoi anche eseguire dalla riga di comando come:
> 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, una shell orientata agli oggetti che può utilizzare le librerie C #, è stata aperta e disponibile per Linux .