A linguagem de programação que mais conheço é o Java. Atualmente, tenho que escrever vários "scripts de shell" para automatizar meus servidores. Existe algo como um "Java Shell" para que eu possa escrever os scripts de shell em Java?
A linguagem de programação que mais conheço é o Java. Atualmente, tenho que escrever vários "scripts de shell" para automatizar meus servidores. Existe algo como um "Java Shell" para que eu possa escrever os scripts de shell em Java?
Respostas:
Você pode obter groovy e usar groovysh. Eu fiz algumas coisas com isso, mas acho o perl ou o bash / sh os mais úteis para a execução de scripts de administração. Uma linguagem de aplicativo como Java adiciona muita sobrecarga quando tudo o que você precisa fazer é executar comandos do SO e pesquisar texto.
Não existe um requisito real de que os "scripts de shell" tenham que ser escritos em uma linguagem de shell; você pode fazer tudo com C ou mesmo Assembler, se quiser.
No contexto de scripts de shell, o shell nada mais é do que um intérprete para uma linguagem de programação, como Perl ou PHP, mas altamente otimizado para o tipo de trabalho que você faz principalmente com um script de shell.
A longo prazo, sugiro que você aprenda bash ou algo assim, o que não é realmente difícil, porque as conchas são muito limitadas em suas habilidades, de modo que não há muito o que aprender.
Algumas das linguagens jvm mais leves possuem shells, mas essas são front-ends para o intérprete, não dialetos personalizados para administração de sistemas. Um bom shell do sistema precisa ter excelente suporte a descritores de processos e arquivos, além de sintaxe e componentes concisos, e não acho que exista em Java.
Você pode misturar programação com script com coisas como chef, fantoche, vlad e similares, mas isso significa aprender primeiro o script bash, porque essas linguagens, sensatamente, delegam comandos ao shell. Idiomas como Ruby, Perl e Python são menos detalhados e você os verá muito usados. A verbosidade do Java e alguns de seus principais valores (faça tudo na jvm, não deixe o ide) o tornam muito inadequado para a tarefa.
Sim existe. Eu uso o BeanShell de tempos em tempos, mesmo que não esteja em desenvolvimento ativo no momento. É um intérprete para a sintaxe Java padrão e também vem com um interpretador / ambiente gráfico, se necessário.
Você poderia escrever seus scripts de shell, conforme descrito nos documentos do BeanShell , mas teria que disponibilizar o arquivo jar do Beanshell para sua instalação Java (por exemplo, colocá-lo na /ext/lib
pasta da instalação do JRE), caso contrário, o java não encontrará a bsh.Interpreter
classe .
No entanto, eu também recomendaria que você analisasse com mais atenção as opções de extração de shell (você não mencionou seu ambiente, mas a recomendação do TiZon com o bash é legal ao usar o Linux). O uso de uma linguagem de programação de uso geral como Java só atrapalha ao tentar ser produtivo com tarefas semelhantes a shell, por exemplo, mover arquivos, chamar comandos e coisas do tipo.
Você provavelmente deveria dar uma olhada no Bash Scripting .
Eu escrevi o jpad.io para permitir a execução de "shell scripts" e trechos interativos em java, além de fornecer uma boa visualização dos resultados. Isso mostra o que eu quero dizer:
Para copiar um arquivo usando isso como uma linguagem de script, você usaria: 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 você também pode executar na linha de comando 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
O PowerShell, um shell orientado a objetos que pode usar bibliotecas C #, foi aberto e está disponível para Linux .