はじめに
which
コマンドを使用すると、ユーザーは $PATH
内のパスのリストを検索できます 環境変数と引数に指定したコマンドのフルパスを出力します。このコマンドは、指定されたコマンドに一致する実行可能ファイルを見つけることによって機能します。
このチュートリアルでは、which
の使い方を学びます。 コマンド。

前提条件
- Linux を実行しているシステム
- 端末へのアクセス (Ctrl + Alt + T )
Linux のコマンド構文とオプション
which
の構文 コマンドは:
which -a [argument]
引数
[argument]
変数は、検索するコマンドを指定します。
たとえば、次のコマンドは cat コマンドの場所を出力します:
which cat

オプション
which
コマンドには -a
という 1 つのオプションしかありません .これはオプションであり、見つかったすべての一致を出力するために使用されます。
このコマンドは、左から右に一致を検索します。 $PATH
にリストされているディレクトリに複数の一致が見つかった場合 , which
最初のものだけを印刷します。 -a
オプションは which
を指示します すべての一致を印刷します。
重要: 多くの Linux ディストリビューションでは、which
シェル組み込みコマンドを除外し、それらの場所を出力しません。
例:
which -a touch

複数の一致がある場合、1 つの一致が他の一致へのシンボリック リンクであることを意味する場合があります。ただし、同じコマンドの 2 つのバージョンを別の場所に配置したり、2 つの異なるコマンドを同じ名前で使用したりすることは可能です。
注: 他の多くのコマンドとは異なり、which
--help
がありません オプション。コマンドの説明とヘルプを表示するには、man which
を実行します .
終了ステータス
which
コマンドは、終了ステータスを示す次のいずれかの値を返します:
0
. すべての引数が見つかり、実行可能になりました。1
. 1 つ以上の引数が存在しないか、実行できません。2
. 無効なオプションが指定されました。
Linux コマンドの例
次の例は、which
がどのように機能するかを示しています。 コマンドの動作と利用可能なオプションの使用方法。
1.実行可能ファイルのパスを表示
コマンドのパスを表示するには、which
の後にコマンド名を引数として渡します。 .
例:
which tr

出力には、/usr/bin/tr にある tr コマンド実行可能ファイルへのパスが表示されます .
2.実行可能ファイルの複数のパスを表示
which
複数の引数を受け入れ、指定された順序で各引数へのパスを出力します。
例:
which nc mount sort

このコマンドは、提供されたリストを処理し、nc コマンド、mount コマンド、および sort コマンドの結果を、各結果を改行文字で区切って出力します。
3.すべてのインスタンスを一覧表示
which
$PATH
で見つかった最初の一致のみを表示します 可変ディレクトリ リスト。 -a
を使用します 指定されたコマンドのすべての一致を表示するオプション。
たとえば、less コマンドのインスタンスを検索すると、-a
を使用すると 2 つの結果が出力されます。 オプション:
which -a less

ls コマンドを使用してファイルの詳細を確認し、両方のバージョンが実行可能ファイルであるかどうかを判断します。実行:
ls -lh /usr/bin/less
ls -lh /bin/less

出力は、同じコマンドの 2 つの同一バージョンを 2 つの場所に示しています。どちらも 176 KB で、両方とも実行可能です。
注: /ビン ディレクトリには、システム管理者およびその他のユーザーが使用でき、システムの緊急修復に必要な実行可能ファイルが含まれています。 /usr/bin directory は、システム上で実行可能なコマンドのプライマリ ディレクトリです。
4.シンボリック リンクを見つける
-a
の使用 オプションは、指定されたプログラムのインスタンスを含むすべてのパスを一覧表示します。同じプログラムの複数のバージョンがシステムに存在する可能性がありますが、インスタンスの 1 つがシンボリック リンクであり、バイナリ ファイルではない場合があります。
たとえば、次のコマンドを実行すると、atq コマンドの 2 つのインスタンスが出力されます:
which -a atq

ここでも、ls
を使用します コマンドを実行して、両方のファイルの詳細を確認します。実行:
ls -lh /usr/bin/atq
ls -lh /bin/atq

出力は、両方のファイルがシンボリック リンク (->
) であることを示しています。 ) わずか 2 バイトの大きさで、at コマンドを指しています。
5.シェル組み込みを除外
前述のように、which
コマンドは、その出力からシェル組み込みを除外します。
たとえば、read および man コマンドの場所を尋ねると、man
の場所のみが出力されます。 コマンド実行可能ファイル (read
など) は bash シェル コマンドです。
which read man

結論
このチュートリアルでは、which
の使用方法を示しました。 Linux でコマンドを実行して、コマンドの実行可能バイナリへのパスを見つけます。その他の重要な Linux コマンドとその使用例については、Linux コマンド チート シートを参照してダウンロードしてください。