私が最もよく知っているプログラミング言語はJavaです。現在、サーバーを自動化するには、かなり多くの「シェルスクリプト」を作成する必要があります。Javaでシェルスクリプトを記述できるように、「Javaシェル」のようなものはありますか?
私が最もよく知っているプログラミング言語はJavaです。現在、サーバーを自動化するには、かなり多くの「シェルスクリプト」を作成する必要があります。Javaでシェルスクリプトを記述できるように、「Javaシェル」のようなものはありますか?
回答:
groovyを取得してgroovyshを使用できます。私はそれでいくつかのことをしましたが、perlまたはbash / shが管理スクリプトを実行するのに最も役立つと思います。Javaのようなアプリケーション言語では、OSコマンドを実行してテキストを検索するだけで、多くのオーバーヘッドが発生します。
「シェルスクリプト」をシェル言語で作成する必要があるという本当の要件はありません。Cやアセンブラーですべてを実行できます。
シェルスクリプトのコンテキストでは、シェルは、PerlやPHPと同じように、プログラミング言語のインタープリターにすぎませんが、シェルスクリプトで主に行う種類の作業に大きく最適化されています。
長期的には、bashか何かを学ぶことをお勧めします。これは、シェルの能力が非常に制限されているので、学習することが多すぎないため、それほど難しくありません。
より軽いjvm言語のいくつかはシェルを持っていますが、それらはインタプリタのフロントエンドであり、sysadminingのカスタムの方言ではありません。優れたシステムシェルは、優れたプロセスとファイル記述子をサポートし、簡潔な構文とビルトインを備えている必要があり、Javaには存在しないと思います。
chef、puppet、vladなどのプログラミングとスクリプトを組み合わせることができますが、これらの言語は非常に賢明な方法でコマンドをシェルに委任するため、最初にbashスクリプトを学習することを意味します。Ruby、Perl、Pythonなどの言語は冗長性が低く、よく使用されます。Javaの冗長性とそのコア値の一部(jvmですべてを実行し、ideを残さない)により、Javaはタスクに非常に不適切です。
はいあります。現時点ではBeanShellは活発に開発されていませんが、時々使用しています。これは、標準のJava構文のインタープリターであり、必要に応じてグラフィカルインタープリター/環境も付属しています。
BeanShell docsで説明されているようにシェルスクリプトを記述できますが、Beanshell jarファイルをJavaインストールで使用できるようにする必要があります(たとえば/ext/lib
、JREインストールのフォルダーに配置する)。そうしないと、javaがbsh.Interpreter
クラスを見つけられません。
しかし、私はあなたのシェルsciptingオプションをさらに詳しく見ることをお勧めします(あなたはあなたの環境について言及しませんでしたが、Linuxを使用する場合、bashでのTiZonの推奨は素晴らしいです)。Javaなどの本格的な汎用プログラミング言語を使用すると、シェルのようなタスク(ファイルの移動、コマンドの呼び出しなど)で生産性を高めようとする場合にのみ邪魔になります。
おそらくBash Scriptingを見てください。
私はjpad.ioを作成して、Javaの「シェルスクリプト」とインタラクティブなスニペットを実行できるようにし、同時に結果を視覚化しました。これは私が何を意味するかを示しています:
これをスクリプト言語として使用してファイルをコピーするには、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"));
コマンドラインから次のように実行することもできます。
> 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
C#ライブラリを使用できるオブジェクト指向シェルであるPowerShellはオープンソース化されており、Linuxで使用できます。