Linux プラットフォームでプロセス自動化用のスクリプトを作成するには、どのスクリプト言語が適していますか? シェル スクリプト、Perl、Python、または他に何かありますか? 私はそれらすべてに新しいです。それで、どれに行くか考えているだけですか?
21 に答える
答えは: 仕事に最も適したものは何でも!
私の経験則;
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
bash、awk、sedをお勧めします。
bash - http://tldp.org/LDP/abs/html/
awk - http: //www.uga.edu/~ucns/wsg/unix/awk/
http://www.grymoire.com/Unix/Awk.html
sed - http: //www.ce.berkeley.edu/~kayyum/unix_tips/sedtips.html
http://www.grymoire.com/Unix/Sed.html
いくつかのアイデア。
自動化するタスクの複雑さによると思います。個人的には、私は常にシェルスクリプトを使用してきました。これにより、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 スクリプトは、単純なシステム自動化タスクに対しては迅速で汚いものです。ファイルの移動やコマンドの実行よりも複雑なことについては、個人的には、事実上のsys-admin goto 自動化ツールとして Perl が次の候補になると思います。コードの再利用と可読性/保守性をさらに重視するために、Python または Ruby にステップアップしたいと考えています。
PHP を使用してタスクを自動化することもできますが、私の経験では、この目的で広く受け入れられているわけではありません。
どの言語を学習することに最も興味があるかは、他の多くのことに加えて、ほとんどの言語が自動化に使用できることに帰着します。
私は、非常に小さなタスクにのみシェル スクリプトを使用することを好みます。堅牢なシェル スクリプトを作成するには、考えられる落とし穴について多くの知識が必要です。しかし、基本さえ学ぶことで、生産性が大幅に向上します。
複雑なロジックが必要な場合は、通常 Python を使用します。複雑とは、if ステートメントが 2 つ以上あるものを意味します =)
Perl は本来の目的には問題ありませんが、学習した Perlism の多くは他のどこにも適用できないことに注意してください。
Python と Ruby はほぼ同等です。そのうちの 1 つをよく学び、もう 1 つのチュートリアルをチェックすることをお勧めします。私は Python の方が好きですが、それは個人的な好みによるものです。
要約:シェル スクリプトの基本を学びます。少なくとも Python か Ruby をよく学びましょう。
私はいつもPythonを推奨してきました。それはあなたに何でもさせてくれるはずです。小さなタスクにはシェルスクリプトを使用します。
私は通常、あなたが望む結果を達成することができるあなたが最もよく知っているものを言うでしょう。すべての宗教戦争のように、そして多くの言語を学んだ後、あなたはほとんどの言語でほとんどのことをすることができることに気づきます(私がほとんど言ったことに注意してください)。私はPerlを使用しています。PythonやRubyほど最新ではないかもしれませんが、CPANからの大規模なライブラリサポートがあります。そして、私はまだそれでできないことを何も見つけていません。私がそうするとき、私は他の言語を見て、どの言語がそのギャップを埋めることができるかを見つけます。
今日から始めたら、PythonかRubyを選ぶかもしれませんが、判断を下すのに十分な知識がありません。友達や同僚にスクリプト言語を知っていますか。新しい言語を学ぶときのサポートは非常に重要なので、これはあなたを大いに助けるかもしれません。
幸運を
ミニマルでコンパクトで高速なソリューション (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
さて、それはこのようなものです:
Perl は最もユーザーフレンドリーなスクリプト言語ではありませんが、CPAN (Comprehensive Perl Archive Network) があり、考えられるほとんどすべてを実装する何千ものライブラリが含まれており、テキスト処理に関しては Perl は非常に強力です。欠点は、perl コードの保守がやや難しいことです (よくわからない場合)。
Python は、スクリプト作成者の間でますます人気が高まっているスクリプト言語です。CPAN のようなコミュニティは (まだ) ありませんが、より読みやすく、保守も容易です。これは、perl と同じくらい高速です。
Ruby はスクリプト言語の最新トレンドです。Ruby は完全な OOP です。つまり、すべてがオブジェクトです。その利点は、コードが非常に読みやすく、初心者にとって非常に簡単に習得できることです。主な欠点は、その実行速度です。これは、s*x のようなものです。
これは、自動化をテストしている場合のように、どのタイプの自動化を行っているかによって異なります。Perlは、オンラインのPerlモジュールインベントリであるCPANを介した非常に強力な拡張モジュールであるため、Perlをお勧めします。単純なソースファイルを完成させるために便利なツールだけが必要な場合は、awkが非常に便利です。スクリプトを使用して大きなプロジェクトを自動化することを計画している場合は、より多くの機能を備えたPerlの方が適しています。繰り返しますが、Pythonは最初からオブジェクト指向言語として設計されました。Perl 5にはいくつかのoo機能が追加されていますが、私には厄介な改造のように見えます。Pythonには、多重継承、ポリモーフィズム、およびカプセル化のためのoo機能が適切に実装されています。要約すると、かなり短いシェルスクリプトの種類のアプリケーションを除いて、ほとんどのアプリケーションでPythonがPerlを支配しているように見えます。
1つ選ぶとしたら、それはAWKでなければなりません。軽量で、学習曲線が短く、index や substr などの多くの便利な機能を備えています。
単純なスクリプト プログラムで別の (もちろんコマンド ライン) プログラムを "制御" することを目指している場合は、Tcl/Tk、特にその方言を確認する必要があります。それらは単純で、その目標に向けられています。 ftp を制御するスクリプトを作成し、それらで su を実行することもできます!
Awk は、テキスト ファイルを処理するのに非常に優れています。perl ほど強力ではありませんが、はるかにシンプルで簡単です (恐ろしい構文はありません)。
もちろん、あなたのマイレージはさまざまなので、何のためにスクリプトを書きたいですか?次に:言語のスクリプトに精通していますか? これらの質問に対する回答は、それぞれの長所と短所、および主なターゲットに応じて、使用する必要があるスクリプト言語を示しています。
コマンドを次々に記述し、それをファイルに入れて、このファイルを実行するだけです
promp> bash file
これで最初の自動化が完了しました。次に、bash 変数、ループ、および制御構造について学びます。
あなたが何をしたいかにもよりますが、私はそれらすべてを定期的に使用しています:
- おそらくループまたは if ステートメントを使用したコマンドの単純なバッチ処理のためのシェル。
- ファイルをむしゃむしゃ食べたり、テキストの置換などを行ったりするときは、Perl を使用します。
- より多くのロジックが必要な場合の Python。
*nix では、適切な作業には適切なツールを使用する必要がありますが、学ぶべきことが非常に多いため、初心者にとっては難しい場合があります (*nix ユーザーとして 15 年ほど経った今でも、新しいことを見つけています)。私のお勧めは、すべての言語をすばやく調べて何ができるかを確認し、すべてにシェルを使用することから始めて、スクリプトが扱いにくくなったら別の言語に移動することです。
私は Python を 2 位につけています。perl や bash と比較して、強力で、シンプルで、パフォーマンスが高く、... 実際には非常に楽しいものです。また、それを知っていれば、多くのプロジェクトで使用されている他の用途を見つけることができます。「古典的な」スクリプト言語としてだけでなく、ねじれたプロジェクトを例に挙げてみましょう。それはPerlにも当てはまると思いますが、私はPythonの方が桁違いに好きです
要するに、前に言われたようなものですが、仕事に適したツールがあることを確認してください...
Linuxでは?基本的にあなたの毒を選んでください。私はPython、他のRuby、さらに他のPerlが好きです。1つ選んでそれを選びましょう。:-)
私はPythonだと思います-非常に読みやすく、シンプルです(中括弧がなく、キーワードができるだけ英語に近いなど)、シンプルなものから非常に複雑なものまで、ほとんどすべてを実行できます。コーディングも人気で楽しいです。
これは少し奇妙に聞こえるかもしれませんが、私は 10 年以上 bash を使用していました。私は PHP5 を使い始めましたが、最初は難しかったのですが、今では再利用可能なコード ベースが大幅に改善されています。
ただし、出発点としてはお勧めしません!