Linuxで最も一般的なスクリプト言語は何ですか?

Linuxで最も一般的なスクリプト言語は何ですか?

私たちはLinuxシステム用のスクリプトを書いており、現在最も一般的なLinux用のスクリプト言語が何であるかについていくつかの議論があります。バッシュ、SH、Poixix?何?

答え1

すべてのUNIXシリーズオペレーティングシステムには2つのTuring-completeプログラミング環境があり、他のプログラムを呼び出すことができます。アッシェン、Bourne/POSIXシェルシリーズ。 AWKはテキスト処理(より専門的なユーティリティを補完する)に向けられていますが、shはプログラムを1つにまとめる接着剤言語を指します。何ですかこれLinux および UNIX 世界の汎用スクリプト言語です。

これPOSIX標準は、sh 自体および関連ユーティリティの必須機能を定義します。ほとんどのUNIXシリーズシステムは次のとおりです。POSIX 1003.1-2004(別名Single Unix v3、別名Open Group Base Spec Issue 6)この規格の最新バージョンは次のとおりです。POSIX 1003.1-2008(別名Single Unix v4、別名Open Groupの基本仕様の問題7)。

すべてのLinuxおよびunixまたはUnixファミリーシステムにはパスにBourneスタイルのシェルがあり/bin/sh、アンティーク以外のシステムにはPOSIX互換シェルがあります(断続的なバグを除く)。すべての最新のUNIXシリーズシステム(Linuxを含む)でサポートされています。彼女の心が飛んだしたがって、/bin/sh最初の行がある場合は自動的にスクリプトが実行されます#!/bin/sh。一部のPOSIXシステムは、sh他の場所(通常はUnixとは思わないオペレーティングシステムの一番上のエミュレーション層)にあります。

組み込みLinuxシステムにはライトバージョンがある可能性があります。忙しい箱すべてのPOSIX機能を実装していないシステム。 BusyBoxには、小規模なシステムに適応できる多数のコンパイル時間オプションがあるため、何が起こるのかを事前に知ることが難しく、特定のデバイスに合わせてスクリプトを調整する必要があります。 BusyBoxは、shおよびさまざまなユーティリティの最も一般的な小規模な実装です。発生する可能性があるもう1つの問題は、Androidのシェル環境が非常に単純化されることです(以降のバージョンはもはや無菌状態ではありません)。

非埋め込みLinuxシステムはほぼ常にスプリントまたは強く打つのように/bin/sh。 Dashは、POSIX機能のみを実装する小型で高速なシェルです。 Bashは、より多くの機能を備えたより大きなシェルです。

非組み込みLinuxシステムには、ほとんど常にBashがインストールされています/bin/bash。したがって、非埋め込みLinuxシステムでの移植性のためにbashを使用できると仮定できます。 Bashの便利な追加機能には、配列、ドットファイルで便利に機能する機能、pipestatusパイプライン内のすべてのコマンドの戻り状態を取得する変数、ファイル時間の追加比較演算子、および(最新バージョンの場合)正規表現の一致が含まれます。

シェルプログラミングの特徴の1つは、プログラムだけを使用するのではなく、shさまざまなプログラムを使用することです。便利。 Linuxのほとんどのファイル操作とテキスト処理ユーティリティは、GNUコアツール(組み込みシステムでは通常BusyBoxで提供されます。)

Linux 以上の移植性が必要な場合、最良のオプションは POSIX を使用することです。他のUnixバリアントにはbashがインストールされていない可能性があります(bashはOSXの標準インストールの一部ですが、* BSDおよびほとんどの商用Unixではオプションのパッケージです)。 Linux および OSX (*BSD や商用 Unix など) を除く、ほぼすべての Unix バリアントには次のバージョンがあります。コーエンシェル、少なくともPDKSH。 Bashへの多くの便利な拡張はkshで提供されているので、両方で実行できるスクリプトを書くと便利ですが、未知のシステムでbashまたはkshがどこにあるかを検出するのは少し面倒です。

シェルがすべてを行うことはできません。より複雑な言語が必要な場合、最も一般的な2つの選択肢はPerlとPythonです(他のすべての言語はUNIXスクリプト言語よりはるかに劣ります)。 Perlは組み込みのLinuxシステムにはほとんどない伝統的なスクリプト言語ですが、Pythonが進んでいます(部分的にはUbuntuの推奨スクリプト言語になります)。 Linux以外の環境では、PerlはOSXとOpenBSDの基本インストールの一部です。これはオプションですが、通常 FreeBSD にインストールされ、オプションですが、通常は NetBSD にインストールされます。

答え2

利用可能な順序で:

  1. sh、しかしPOSIX指定機能の使用にこだわります。
  2. bashを使用しますが、shebangで明示的に指定することを忘れないでください。そうしないと、ダッシュが表示されることがあります。
  3. Python。ほとんどすべての人がそれを使用します。
  4. 真珠。しかし、必ず書かなければなりません。

その後はできないことがないので誰も気にしません。

答え3

一般的に…と言いたいのですが、shLinuxを指定したので、bash周辺のすべてのLinuxシステムにあることが保証されます(まあ、ミニマリズムにこだわる曖昧で賢明な小さなシステムを除く)。

Linux以外の移植性を心配する必要がない場合(および小さなディストリビューションやプラスチックボックスルーターなどの組み込みLinuxデバイスで実行する必要がない場合)、次の主な改善点を活用することもできます。sh。それ以外の場合を使用してくださいsh

bash(および)次に、Linux用の最も一般的なスクリプト言語はいくつかの方言(通常または)shです。普通のawkに固執し、不器用な動作を避けると、スクリプトはほぼすべてのLinuxシステム(小規模なディストリビューションや組み込みデバイスでは失われる可能性があります)でうまく動作します。ほとんどのLinuxシステムで使用できますが、一部のディストリビューション(Debianなど)はデフォルトでインストールされ、必要に応じて直接インストールする必要があります。awkmawkgawkmawkgawkmawkgawk

次に、perlAFAIK、デフォルトのPerlは、すべての一般的なLinuxディストリビューションにデフォルトでインストールされるので、良い選択です。さらに幸いにも、Perl5バージョンとのバージョンの非互換性はほとんどありません(Perl 5.12またはおそらく5.14はついに約15年間使用されていなかったいくつかのあいまいな機能を削除しましたが…使用しないことを警告します)。本当に奇妙で、10年間「これをしないでください」という警告を無視したい場合は、Perlスクリプトはほとんどどこでもうまく機能します。言語は強力で強力で、できることとそれ以上のことができawkますsed。少しの努力だけを傾ければ、sh伝統的に有益な作業(外部コマンドの実行や/ piping出力消費など)も実行できます。標準のPerlライブラリも非常に包括的で、基本的なもの以上を扱っています。

Perlの唯一の問題は、考えられるほとんどすべてのタスクを実行できる(そして考えられない追加のタスク)、巨大なCPANモジュールライブラリがあることです。 Perlシステムで使用されているすべてのシステムでこれらすべてを使用できるわけではありません。一般的に品質が非常に高いので、使用する習慣を持ちやすくなります。ただし、使用する場合は必ずインストールしてください。多くのCPANモジュールはLinux用に事前パッケージされており、残りはcpanツールを使用して簡単にインストールできます(またはdh-make-perldebian/ubuntu/etcからCPANモジュールを.debパッケージに変換)。

python次の文を言いたいのですが、実際にはできません。 Pythonについて気にすることはたくさんありますが、多くのLinuxシステムにはデフォルトで含まれておらず、バージョン互換性(Python自体といわゆる「標準」ライブラリの両方)は正直にめちゃくちゃです。いくつかのディストリビューションは混乱を解決するために多くの努力をしていますが、他のディストリビューションはそうではありません。 Pythonは、基本的にプログラマー(システム管理者ではない)がプログラマーのために書いた言語です。システム彼らのコードは非常に重要な場所にインストールされます...彼らのコードは本当に素晴らしいです。特別なしたがって、既存のシステムに統合するなど、退屈な作業を心配する必要はありません。

(ここで私の鼻の言葉を誤解しないでください。私はPythonを言語で本当に好きです。バージョンと依存関係の管理がPITAであるという事実が嫌いです。で何かをコンパイルして実行するためのパッチ)

答え4

私が言いたいのは、利用可能かどうかは次のような順序で行われているということです。

  1. シェン
  2. アッ
  3. Perl(BSDを含むPerlのない* nixを見たことがありません)

Pythonは良い言語のように聞こえますが、デフォルトのインストールに付属のオペレーティングシステムではPythonを使用していません。もちろん、Ubuntuでは使ったかもしれません。

関連情報