すべてのLinuxベースのディストリビューションで利用可能な標準コマンドはどれですか?


39

すべてのLinuxシステムで使用可能な標準コマンドはどれかを知りたいです。

たとえば、debian / ubuntu / redhat / suse / arch / slackwareなどを入手した場合、次のようなコマンドが常に表示されます。

cd、mkdir、ls、echo、grep、sed、awk、pingなど

上記のコマンドの一部はシェルに組み込まれていますが、他のコマンドはそうではありませんが、それらは常にそこにあります(これまでの私の知識と経験に基づいて)。

一方、gawk、parted、traceroute、および他の非常に有名なコマンドのようなコマンドは、異なるLinuxディストリビューションではデフォルトでインストールされません。

さまざまなWeb検索を行いましたが、これに対する直接的な答えは見つかりませんでした。

目的は、シェルスクリプトを作成し、スクリプトで使用されているコマンドがシステムで使用できるかどうかを確認するためです。そうでない場合は、必要なバイナリをインストールするようにユーザーに求める必要があります。


5
ちょっとしたヒント:「スクリプトで使用されているコマンドがシステムで使用できる場合、いくつかの健全性チェックを行う必要がありますは、Autoconfと非常によく似ています
sr_

間違いなく自動構成の場合...またはおそらくより科学的ないとこ、約束理論
ワイルドカード

@Wildcard、私は、初期インストール後も継続的な健全性チェックとシステムの自己修復が必要でない限り、このような場合には構成管理システムが過剰になると信じています。
ヴァンゲリスタズーラス16

@VangelisTasoulas、私はそうは思わない。自宅のコンピューターなどのシングルユーザーセットアップで、なぜスクリプトを作成する必要があるのですか?構成管理は過剰になりますが、スクリプト化されたチェックと手動では違います。一貫性を確保したい複数のボックスがあるシナリオでは、スクリプティングは過剰ではありませんが、どちらも構成管理はしません。または、製品のパッケージのインストール中に健全性チェックを実行したいだけのソフトウェア開発者ですか?はい、シナリオによって異なりますが、構成を管理したい場合、構成管理ツールは過剰ではありません。;)
ワイルドカード

1
@Wildcard、この質問を書いたとき、私は後者について考えていました:ソフトウェアが正しく実行されることを保証するために、インストール中に単一マシンで健全性チェックを実行したいだけです。もちろん、複数のサーバーを管理し、分散展開などを処理したい場合は、構成管理が長期的に進むべき方法であることに同意します。
ヴァンゲリスタズラス16

回答:


41

残念ながら、利用可能なものがあるという保証はありません。

ただし、ほとんどのシステムにはGNU coreutilsがあります。それだけで約105個のコマンドが提供されます。代わりにBusyBoxを使用する可能性のある組み込みシステムでない限り、おそらくこれらに依存できます。

おそらくbashcronGNU findutilsGNU grepgzipiproute2iputilsman-dbmodule-init-toolsnet-tools、passwd(passwdまたはshadow)、procpstar、およびutil- Linuxの

一部のプログラムでは、ディストリビューション間にいくつかの違いがあることに注意してください。例えば、/usr/bin/awkあるかもしれないgawkののmawk/bin/shかもしれないダッシュPOSIXモードではbash。一部の古いシステムで/usr/bin/hostは、BINDバージョンと同じ構文を持たないため、digを使用した方がよい場合があります。

いくつかの標準を探している場合、Linux Standard Baseはいくつかの一般的に見られるプログラムを定義していますが、すべてのディストリビューションが標準に準拠していると主張しているわけではなく、オプションのLSB互換パッケージをインストールした場合にのみそうしているものもあります。この例として、私が見たいくつかのシステムlsb_releaseはデフォルトのインストールに付属していません。

これに加えて、POSIXによって標準化されたコマンドリストが役立つ場合があります。

問題に対する別のアプローチは、各ディストリビューションのパッケージツール(Red HatのRPM、DebianのDEBなど)を使用してスクリプトをパッケージし、必要な他のプログラムまたはパッケージへの依存関係を宣言することです。少し手間がかかりますが、ユーザーにわかりやすいエラーメッセージが表示され、不足しているものだけでなく、インストールする必要があるパッケージが示されます。

詳細:


パッケージと-アドオンの依存関係素晴らしいです-idea、ダウンAutoconfの手の中にダイビングを打つ:)
sr_

2
素晴らしい答え、私はすべてに同意します。私は余分な注意ステップを追加します:使用しているコマンドの特定のバージョンの特別なオプションを考慮してください...それらはすべてのバージョンで動作しない可能性があります(これは私が働いていたプロジェクトで発生しました)。
ホセヌノフェレーラ

これらのコマンドのリストを含むプレーンテキストファイルはどこにもないと思いますか? pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlは比較的簡単に変換できますが、まだ多くのものがありません。
ディランニコルソン

7

非組み込みLinuxシステムでは、通常、ほとんどのGNUユーティリティを使用できます。

プラスのutil-linuxののスイートとprocpsのスイート/bin/sh常にbashであるとは限らないことに注意してください。これは、ashの複数のフォークの1つなど、機能の少ないシェルにすることができます。

Linuxの標準ベースは、すべての準拠のシステムで期待されている機能を備えた一般的なユーティリティのセットを定義します。POSIXで指定されているユーティリティのほとんども期待できます。注目すべき例外はでpax、これは多くのディストリビューションのデフォルトインストールの一部ではありません。

物事をシンプルに保ちたい場合は、lsb_releaseパッケージのインストールをリクエストしてください。多くのディストリビューションには、LSBに必要なすべての依存関係を取り込むパッケージがあります。

組み込みシステムでは、すべてのベットがオフになっています。組み込みLinuxシステムは通常BusyBoxを実行しますが、多くのユーティリティと機能はオプションであるため、確実に入手できるものはほとんどありません。


6

すべてではありませんが、ほとんどのLinuxディストリビューションのコマンドセットがあります。そのため、Unixディストリビューションも提供します。これらは、POSIX標準で指定されている必須コマンドです。

あなたが引用コマンドのほとんど(cdmkdirlsechogrepsedawk、など)ことです。例外はping、WhiteWinterWolfが正しくコメントしたことです。


1
実際にpingはPOSIXの一部ではありません
...-WhiteWinterWolf

POSIXホームページ彼らは確保に焦点を当てると述べ、「ソース・コード・レベルでのアプリケーションの移植性を」、すなわち。私の理解では、システムAPI、システム(シェルを含む)の動作、およびアプリケーションの構成、コンパイル、インストール、およびソースコードの処理に使用できるコマンドに関心があります。
ホワイトウィンターウルフ

彼らは、ユーティリティ(ネットワーキングを気にしない「システム構成やリソースの可用性」のようなので、ユビキタスコマンド、明示的に外の範囲ですが)pingifconfigtelnet、などは、彼らはただ、この規格の一部(また、他の1私の知る限りではありませんベストエフォートベースで「歴史的な実装」との互換性を目指します)。
ホワイトウィンターウルフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.