Linux で which コマンドを使用するための包括的なガイド

Linux で which コマンドを使用するための包括的なガイド

Linux は、広範なカスタマイズ オプションから詳細なシステム管理機能まで、コンピューティング環境に対する比類のない制御をユーザーに提供します。利用可能な多数のツールの中でも、whichコマンドは、コマンド ライン エクスペリエンスを調和させる重要なツールとして際立っています。このユーティリティを使用する$PATHと、変数で指定されたディレクトリをスキャンして、実行可能ファイルの正確な場所を見つけることができます。この包括的なガイドでは、 コマンドの動作を詳しく調べwhich、その構文とオプションを明確にし、コマンド ラインの熟練度を高めるための実用的な例を示します。

which コマンドの構文と機能の理解

コマンドwhichは、特定のコマンドに関連付けられた実行可能ファイルを見つけるための頼りになるツールです。このコマンドは、PATH 環境変数で概説されているディレクトリを調べることで機能します。このコマンドは、コマンドを実行したときにどのファイルが実行されるかを明らかにし、検索結果に基づいて関連する出力を提供します。

  • 0指定されたすべてのコマンドが見つかり、実行可能であることを示します。
  • 11 つ以上のコマンドが欠落しているか実行できないことを示します。
  • 2無効なオプションが使用されたことを示します。

Linux でコマンドを呼び出すための標準構文はwhich簡単です。

which [file1] [file2]...

[file1]およびを、[file2]検索したい実行可能ファイルの名前に置き換えるだけです。

which コマンドを使用する理由は何ですか?

このwhichコマンドは、Linux で複数の重要な機能を果たします。このコマンドを使用すると、コマンドが実際の実行可能ファイル、エイリアス、またはシンボリック リンクに対応しているかどうかを確認できます。さらに、実行可能ファイルの正確な場所を特定し、PATH 変数内で不足しているコマンドや競合しているコマンドを識別するのに役立ちます。このコマンドを使用すると、whichシステムに複数のバージョンが存在する場合でも、目的のバージョンのコマンドが効果的に実行されることが保証されます。このコマンドを使用すると、特にさまざまなツールやスクリプトを処理するときに、生産性を大幅に向上できます。

whichコマンドの実際的な応用

whichここで、実際のシナリオでこのコマンドをどのように適用できるかを示すために、さまざまな実用的な例を見てみましょう。

例 1: 実行ファイルのパスを見つける

コマンドの実行可能ファイルがどこにあるかを特定するのは、次のwhichコマンドで簡単にできます。

which grep

実行ファイルのパスを見つける

/usr/bin/grep実行可能ファイルの正確な場所を明確に示す「 」などの出力が表示されます。

例2: 複数のコマンドのパスの検索

次のコマンドを使用して、複数のコマンドを同時にクエリすることができますwhich

which awk sed cat touch

awkこのコマンドは、、、sedおよびコマンドのパスを取得しますcat

複数のコマンドのパスを見つける

例3: コマンドのすべてのインスタンスを表示する

のデフォルトの動作ではwhich、PATH で最初に見つかったものだけが返されます。-aオプションを使用すると、特定のコマンドのすべてのインスタンスを検出できます。

which -a cat

これにより、が見つかるすべての場所のリストが提供されますcat

すべてのインスタンスを表示

これらのファイルの詳細を確認するには、実際の実行可能ファイルか重複ファイルかを識別するオプションlsを指定したコマンドを使用します。-lh

ls -lh /usr/bin/cat && ls -lh /bin/cat

実行可能ファイルの検証

出力には、異なるディレクトリにある 2 つの同一コマンドが示され、両方とも 35 KB の実行可能ファイルとして例示されています。

例4: コマンドの存在を確認する

次のコマンドを使用して、特定のコマンドが存在するかどうかを確認しますwhich

which cats

不足しているコマンド

コマンドが存在しない場合は出力は表示されず、終了ステータスはゼロ以外になり、コマンドが見つからないことを示します。

例5: シンボリックリンクの識別

システムに同じプログラムの複数のバージョンがある場合、特定のインスタンスは実際のバイナリではなくシンボリック リンクである可能性があります。シンボリック リンクを識別するには、次のオプションwhichを使用してコマンドを実行します-a

which -a crontab

シンボリックリンクを確認する

次に、次のコマンドでファイルの詳細を確認しますls

ls -lh /usr/bin/crontab && ls -lh /bin/crontab

ファイルの詳細を検査する

出力に が表示される場合、->そのファイルは別の場所を指すシンボリック リンクであることを示します。

例6: シェル組み込みコマンドの除外

特に、whichコマンドはシェルの組み込みコマンドを省略し、外部実行可能ファイルのみを表示するため、プログラムがインストールされている場所の識別が容易になります。たとえば、 はlsパスを返しますがread、組み込みコマンドである は次の処理を実行しません。

which ls read

シェル組み込みコマンドを除外する

which コマンドの制限

このwhichコマンドには、特定のコンテキストでその有効性を妨げる可能性のある特定の制限があります。主に外部実行可能ファイルに焦点を当てており、やなどの組み込みコマンドcdread識別しません。さらに、バイナリ ファイルとシンボリック リンクを区別できません。変数で指定されたディレクトリ内を厳密に検索するため$PATH、別の場所に保存されているプログラムは見つかりません。さらに、ファイルの種類、権限、バージョン情報などの詳細を提供する機能がありません。特に、コマンドが存在しない場合は、エラー メッセージではなく、単に出力が返されます。

これらの制限を回避するには、、、またはなどの代替コマンドの使用を検討しwhereistypeくださいls

Where コマンドと Which コマンド

whereとコマンドはどちらもwhichファイルの検索を目的としていますが、目的は異なります。whereコマンドは通常、Windows および特定の Unix 系システム内で使用され、ファイルとディレクトリの両方を検索し、システムの PATH に一致するものをすべて一覧表示します。

逆に、このwhichコマンドは Unix 系システム専用であり、$PATH変数で指定されたディレクトリ内の実行可能ファイルのみを対象とします。デフォルトでは、最初に見つかった一致のみを返しますが、オプションを使用すると、-aすべての一致を一覧表示できます。

違いを説明すると、where nodeWindows で実行すると、ノード実行ファイルが見つかるすべての場所が表示されますが、Linux で実行すると、which gccGCC コンパイラが配置されている最初のディレクトリが返されます。

豊富な機能を提供する一方で、whichコマンドにはいくつかの機能が欠けている場合があります。それでも、ユーザーは補助コマンドを使用することでその制約を克服できます。whichは 内の実行可能ファイルのみを検出することにも注意してください$PATH。スクリプトまたはプログラムが識別されない場合は、単に実行権限がない可能性があります。したがって、 にリストされているディレクトリにスクリプトが$PATH適切な実行権限で存在することを確認することが重要です。

よくある質問

1.which コマンドの主な目的は何ですか?

このコマンドの主な目的は、環境変数whichで指定されたディレクトリを検索して、特定のコマンドに関連付けられた実行可能ファイルを見つけることです。$PATH

2.which コマンドを使用して複数の実行可能ファイルを一度に検索するにはどうすればよいですか?

which次のようにスペースで区切って1 つのステートメントで複数のコマンドを指定しwhich command1 command2、指定したすべての実行可能ファイルのパスを一度に取得することができます。

3.which コマンドを使用する際に注意すべき制限事項は何ですか?

このwhichコマンドには、組み込みのシェル コマンドが見つからない、バイナリ ファイルとシンボリック リンクが区別されない、$PATH変数で指定されたディレクトリ内でのみ検索されるなど、いくつかの制限があります。実行ファイルが見つからない場合は、エラー メッセージが返されないため、誤解を招く可能性があります。

出典と画像

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です