Linuxプラットフォームでプロセスを自動化するためのスクリプトを作成する場合、どのスクリプト言語が優れていますか?シェルスクリプト、PerlまたはPythonまたは他に何かありますか?私はそれらすべてに慣れていません。
答えは:仕事に最適なものは何でも!
私の経験則;
Bash-何かを繰り返し実行するためにforループが必要になる可能性がある短いスクリプトの場合。
Perl-ある種のテキスト処理またはファイル処理に関係するもの、特にそれが1回限りの場合。汚い厄介なPerlスクリプトを実行し、それで完了します
Python-もしそれがあなたがもう一度やりたいかもしれない何か、またはそれにとても似ている場合。そうすれば、少なくともスクリプトを再利用できる可能性があります。
3つすべてを実行し、bash/awk/sedとfileutils(grep、findなど)から始めて、Perlとpythonで抽象化階層を上に移動します。
そうすれば、ニーズに最も合うものを自分で決めることができます。ユビキタスなので、bashや友達から始めましょう。一部のマシンにはPerlまたはpythonがインストールされておらず、特に伝統的なUNIXの土地(つまり、Linuxではない)では無力と感じるでしょう)
Linux/UNIX環境を自動化するのに役立つスクリプト言語を選択するとき、私の意見で最も重要なことは...代わりのものです:-)
つまり、スクリプトを保守する必要がある次のシステム管理者を意味します。私は現在、主導的なUnixの人が本物のスクリプトヘッドである環境で働いていますが、彼は主にbashの使用に制限しており、幸運のためにいくつかのPerlおよびWindows vbscriptが投入されています。少なくとも、Perlをブラッシュアップする必要がありました。
ここでの他のコメントに同意しながら、私の提案はbashを習得することです-可能であれば、bashで可能な限り多くのことを行い、ほとんどの人はそれを知っており、それを維持/デバッグできます。そして、それは最もポータブルです。 sed&awkでの使用は特に強力です。
習得したら、ここに戻って、「bash後にどのスクリプト言語を学ぶべきですか?」と尋ねます。 :-)
JB
それは、自動化したいタスクがどれほど複雑であるかによると思います。個人的に、私は常にawk、sed、grep、find、ls、catなどを呼び出すことができるシェルスクリプトを使用してきました。これらを組み合わせると、Perlまたはpythonを使用して達成できるほとんどすべてのことを実行できます。一方、自動化するプロセスが複雑な場合(たとえば、直線的な一連のステップだけではない)、Perlまたはpython(またはRuby!)でもはるかに高速で、保守が容易になります。
非常に単純なスクリプト以外にもPerlを使用しています。
また、_'use warnings'
_、_'use strict'
_、バッククォートを避け、システムを'system($command, @and_args)'
として呼び出します。そして、私がそれを保守可能にしたいので、IPC :: Run(パイプの場合)、File :: Fu(ファイル名、一時ファイルなどの場合)、YAML(構成またはその他のデータの場合)、およびGetopt :: Helpful(覚えやすいように)オプションは何でしたか。)
手元のタスクの複雑さと問題の領域に依存します。
Bashスクリプトは、単純なシステム自動化タスクにはすばやくて汚いです。ファイルを移動してコマンドを実行するよりも複雑なことについては、個人的には、Perlが次のdefacto sys-admin goto自動化ツールとして並ぶと思います。コードの再利用と可読性/保守性にさらに焦点を当てるには、PythonまたはRubyまでステップアップしたいと思います。
PHPはタスクの自動化にも使用できますが、私の経験では、この目的で広く受け入れられていません。
それは本当に他の多くのものに加えて、学習に最も興味のある言語、ほとんどが自動化に使用できる言語に帰着します。
私は非常に小さなタスクにのみシェルスクリプトを好みます。堅牢なシェルスクリプトを作成するには、考えられる落とし穴に関する多くの知識が必要です。しかし、基礎さえ学べば生産性が大幅に向上します!
複雑なロジックが必要な場合は、通常Pythonを使用します。複雑とは、-statements =)の場合に2つ以上あるものを意味します
Perlは元々の目的には問題ありませんが、学習した多くのperlismは他のどこにも適用できないことに注意してください。
PythonとRubyはほぼ同等です。そのうちの1つをよく学び、もう1つのチュートリアルを確認することをお勧めします。Pythonが本当に個人的な好みに帰着します。
要約するとシェルスクリプトの基本を学びます。少なくともPythonまたはRuby well。)を学んでください。
私は常にPythonを推奨しています。何でもできるようになっているはずです。小さなタスクにはシェルスクリプトを使用します。
私は通常、あなたが望む結果を達成できる最もよく知っているものを言います。すべての宗教戦争のように、そして多数の言語を学んだ後、ほとんどの言語でほとんどのことを行うことができることに気付きます(私がほとんど言ったことに注意してください)。私はPerlを使用しています。 PythonやRubyほど最新ではないかもしれませんが、CPANからの大規模なライブラリサポートがあります。そして、私がまだできないことはまだ見つけていません。他の言語を調べて、そのギャップを埋めることができる言語を見つけます。
今日始めたのなら、PythonまたはRubyを選ぶかもしれませんが、判断を下すのに十分な知識がありません。スクリプト言語を知っている友達や同僚に教えてください。これは新しい言語を学ぶときのサポートは非常に重要であるため、あなたを大いに助けることができます。
幸運を
まあ、それはこのようなものです:
Perlは、最もユーザーフレンドリーなスクリプト言語ではありませんが、CPAN(包括的なPerlアーカイブネットワーク)を備えています。これには、考えられるほとんどすべてのものを実装する何千ものライブラリが含まれています。Perlは、テキスト処理に関して非常に強力です。短所は、Perlコードの保守が少し難しいことです(よく知らない場合)。
Pythonは、スクリプト作成者の間でますます人気が高まっているスクリプト言語です。 CPAN(まだ)のようなコミュニティーはありませんが、より読みやすく、保守が容易です。 Perlと同じくらい高速です。
Rubyはスクリプト言語の最新トレンドです。 Rubyは完全なOOPです。つまり、すべてがオブジェクトです。その利点は、コードが非常に読みやすく、初心者であれば簡単に習得できることです。主な欠点は、実行速度。これはs * xです。
Perlは、オンラインのPerlモジュールインベントリであるCPANを介した非常に強力な拡張モジュールであるため、自動試行をテストする場合など、どのような自動化を行っているかによって異なります。Perlが推奨されます。単純なソースファイルを完成させるのに便利なツールだけが必要な場合は、awkが非常に便利です。スクリプトを使用して大きなプロジェクトを自動化することを計画している場合は、Perlがより多くの機能を備えたより良い選択です。ここでもPythonは最初からオブジェクト指向言語として設計されました。 Perl 5にはいくつかのo-o機能が追加されていますが、私には見苦しい改造のように見えます。 Pythonには、多重継承、ポリモーフィズム、およびカプセル化のための適切に実装されたoo機能があります。要約すると、Pythonは、かなり短いシェルスクリプトの並べ替えを除いて、ほとんどのアプリケーションでPerlを支配しているようですアプリケーションの、そしてそこにそれらはおおよそ比較可能です。
ミニマリズムでコンパクトで高速なソリューションが必要な場合(Python/Rubyより高速)、-> LUAスクリプト言語を使用します:-)ただし、Luaの速度とコードのコンパクトさは、比較的小さなLua言語コアによって実現されるため、「バッテリーが含まれている」場合(別名:非常に大きな「標準」ライブラリ)そしてLuaはあなたのためではありません。それ以外の場合、C/C++の世界から来た人はLuaの速度を非常に楽しんでいます:-)
pS.
Lua vs Ruby 1.9ベンチマーク(Lua Vs Python 3)も確認できます):
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=lua&lang2=yarv