• ベストアンサー

シェルスクリプトのbashとperlについて

シェルスクリプトのbashとperlについて 今さら気づいたのですが、PerlもUNIXのコマンドやシェルスクリプトとして使用できるということでしょうか。 RubyやPHPをUNIXのコマンドやシェルスクリプトとして使用することはできますでしょうか。 学ぶとしたら、bashとPerlのどちらが良いでしょうか。 また、シェルスクリプトはどんな用途や利点がありますでしょうか。 Webアプリケーションによるバックアップやログをタイマーでセットして自動的に取得したりすることは可能でしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

perlやphpをシェルとしては使い物にはなりません。 コマンドシェルとして使用するには最低限一行ずつ命令を読み取り、その都度実行する仕組みが必要です。 perl等は1行ずつではなくファイルすべてを読み終わってから実行するため、シェルとしては役に立ちません。 イメージでいうと、ログインしてからひたすら文字を入力して、実際に実行されるのは、ログアウトしてからということになります。 シェルスクリプトの利点としては、普段使用しているコマンドをそのままの書式で作成できるというところです。 また、UNIX系のOSであれば何らかのシェルは必ず入っています。Perl等は別途インストールする必要があります。とくに、サーバーを構築する場合はサービスに不要なツールはインストールしたくないので、perl等の言語は入れていない場合も多いです。

noname#139165
質問者

お礼

ご回答ありがとうございます。 参考になりました。 >perl等は1行ずつではなくファイルすべてを読み終わってから実行するため、シェルとしては役に立ちません。 >シェルスクリプトの利点としては、普段使用しているコマンドをそのままの書式で作成できるというところです。 なるほどです。 この文章がシェルスクリプトとPerlの違いが大変よく分かりました。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

まずは用語の確認 bashはシェルなので、そのプログラムは「シェルスクリプト」になります。 PerlはPerlなので、perlのプログラムは「シェルスクリプト」ではありません。「Perlスクリプト」とか、単に「スクリプト」と呼びます。 >PerlもUNIXのコマンドやシェルスクリプトとして使用できるということでしょうか。 発想が逆です。 もともと、UNIX等で使われていたPerlが、その特徴(文字列を扱いやすいとか)からWebでも使うようになったのです。 Rubyもそうです。 それぞれ、入門書やサイトを見てください。最初はコマンドラインからの使い方で始まってると思います。 PHPはWebでの動作を目的にしたものなので、ちょっと毛色が異なります。 >学ぶとしたら、bashとPerlのどちらが良いでしょうか どちらにもそれぞれの得意分野があるので、一概には言えませんが.... bashは普段のコマンドライン入力でも使われています。 つまり、bashのスクリプトでできることは、コマンドラインからでもできる、ということなので、これを覚えれば、コマンドラインの入力だけでかなりのことができるようになります。 >どんな用途や利点 シェルスクリプトもPerl等のスクリプトも、基本、プログラムなので大抵のことはできます。 多い使い方は、何度か繰り返すような作業をスクリプトにしておき、実行時に楽をする、というものでしょうか。 あとは、C等で書こうとすると、どうしても複雑になるもの、あるいは逆に、簡単な処理なので、いちいちコンパイルして動作確認してといった手順を踏む程のものではない場合などに使います。 >Webアプリケーションによるバックアップやログをタイマーでセットして自動的に取得したりすることは可能でしょうか。 これなどは、まさにスクリプトの出番です。 いちいちログのファイル名とバックアップ先を指定してコピー、といった作業も、スクリプトにまとめておけば自動化できます。

noname#139165
質問者

お礼

ご回答ありがとうございます。 参考になりました。 >もともと、UNIX等で使われていたPerlが、その特徴(文字列を扱いやすいとか)からWebでも使うようになったのです。 >Rubyもそうです。 >それぞれ、入門書やサイトを見てください。最初はコマンドラインからの使い方で始まってると思います。 >PHPはWebでの動作を目的にしたものなので、ちょっと毛色が異なります。 知らなかったです。私はPHPのみだけやって、PerlやRubyは触れていませんでした。確かにPHPはWebを目的にした特殊的な言語と言えますね。