Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Linuxのwhichコマンド徹底解説!使い方・オプション・活用例をわかりやすく紹介

このチュートリアルでは、Linuxにおける which コマンドの基本的な使い方を、シンプルな実例とともに解説します。

which コマンドを使うと、システム上のコマンドに対応する実行ファイル(バイナリ)のパスが存在する場合、その場所を確認することができます。

whichコマンドはどんなときに役立つ?

たとえば、MySQL の実行ファイルがシステム上に2つインストールされていて(異なる方法でインストールした場合など)、「実際に使われているのはどちらか」を知りたい場面を考えてみましょう。which コマンドを使えば、コマンドラインで MySQL を実行した際に呼び出されるのがどちらのパスなのかを特定でき、不要な方を削除する判断材料になります。

Linux whichコマンドの基本構文

which コマンドの構文は以下のとおりです。

which OPTIONS COMMAND

各要素の意味は次のとおりです。

  • OPTIONS:省略可能。後述のオプション一覧から選択し、which コマンドのデフォルト動作を変更できます。
  • COMMAND:実行ファイルのパスを調べたいコマンド名を指定します。
    • COMMAND の指定は必須です。指定しないと which は何も検索できません。

主なコマンドオプション一覧

which コマンドでよく使われる主なオプションは以下のとおりです。

オプション 説明
--all, -a PATH内にある一致するすべての実行ファイルを出力します。最初に見つかった1つだけではなく、全件を表示したい場合に使用します。
--read-alias, -i 標準入力からエイリアスを読み込み、一致するものを標準出力に表示します。which 自体にエイリアスを設定している場合などに便利です。
--skip-alias --read-alias オプションを無視します。エイリアスや関数の中で --read-alias を使っている場合に、通常のバイナリだけを明示的に検索したいときに役立ちます。
--read-functions 標準入力からシェル関数の定義を読み込み、一致するものを標準出力に表示します。which 自体をシェル関数として定義している場合などに有用です。
--skip-functions --read-functions オプションを無視します。エイリアスや関数内で --read-functions を使っている場合に、通常のバイナリだけを明示的に検索したいときに利用します。

その他、いつものように which コマンドの完全なユーザーマニュアルは以下のコマンドで参照できます。

man which

whichコマンドの実行例

ここでは、ターミナルから nano を実行した際に呼び出される実行ファイルのパスを調べてみます。

which nano

システムに nano テキストエディタがインストールされている場合は、次のような結果が返されます。

/usr/bin/nano

逆に、nano がインストールされていない場合は、以下のように表示されます。

nano not found

このことからも分かるように、which コマンドは「実行ファイルがどこにあるかを確認する」だけでなく、「パッケージがインストール済みかどうか(利用可能かどうか)をチェックする」用途にも活用できます。

複数のコマンドを一度に調べたい場合は、実行ファイル名を続けて指定することもできます。

which cat less

実行結果は次のようになります。

/bin/cat
/usr/bin/less

戻り値(終了ステータス)の使い方

シェルスクリプトの中で which を使う場合、コマンドが返す終了ステータス(戻り値)によって、実行ファイルのパスが見つかったかどうかを判定できます。

戻り値 意味
0 指定されたすべてのコマンドが見つかり、実行可能である。
1 指定されたコマンドの1つ以上が見つからない、または実行不可能である。
2 不正なオプションまたは構文が使用された。

この戻り値は、シェルスクリプトの移植性を高めたいときに非常に便利です。スクリプト内でコマンドを実行する前に which コマンドでその存在をチェックしておけば、必要なソフトウェアがインストールされていない環境でも、エンドユーザーに予期しないエラーを表示させずに済みます。

  1. Rubyのgrepメソッド徹底解説!使い方とselectとの違いを実例で学ぶ

    今回はRubyのgrepメソッドについて詳しく見ていきます。 このメソッドにはどんな便利さがあるのでしょうか? grepを使えば、配列(Array)や範囲(Range)など、Enumerableモジュールを含むオブジェクトから、条件に一致する要素だけを効率よく抽出できます。 「それってselectでも同じことができるのでは?」 確かにそうですが、grepはselectとは異なる仕組みで動作し、得られる結果も異なります。この違いを理解すれば、コードをより簡潔に書けるようになりますよ。 それでは、実際の例を見てみましょう。 Ruby grepメソッドの実例集 まず、次のような配列を用意します。

  2. Linuxのwatchコマンドの使い方と実用例をわかりやすく解説

    Linuxのwatchコマンドは、指定したコマンドを一定間隔で繰り返し実行し、その結果を画面に表示し続けるためのツールです。コマンドの出力が時間とともにどう変化するかをリアルタイムで監視したい場合に非常に便利です。この記事では、watchコマンドの基本的な使い方と、覚えておくと役立つ実用的な例を紹介します。 watchコマンドの基本構文 watchコマンドの構文は以下のとおりです。 watch オプション コマンド 各要素の意味は次のとおりです。 オプション: 後述の表から選択したオプションを指定します。watchコマンドのデフォルト動作を変更できます。 コマンド: watchが繰り返し実行