Linux で `whereis` コマンドを使ってバイナリファイルを検索する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このチュートリアルでは、Linuxのバイナリファイル、その構造、および実際の応用について包括的な理解を提供します。また、Linuxシステム上のバイナリファイルを検索することができるwhereisコマンドについても検討します。このガイドを終えると、Linuxの内部動作について深く洞察することができ、システム上のバイナリファイルを効果的に管理および利用することができるようになります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/FileandDirectoryManagementGroup -.-> linux/find("File Searching") linux/FileandDirectoryManagementGroup -.-> linux/locate("File Locating") linux/FileandDirectoryManagementGroup -.-> linux/which("Command Locating") linux/FileandDirectoryManagementGroup -.-> linux/whereis("File/Command Finding") subgraph Lab Skills linux/find -.-> lab-409873{{"Linux で `whereis` コマンドを使ってバイナリファイルを検索する方法"}} linux/locate -.-> lab-409873{{"Linux で `whereis` コマンドを使ってバイナリファイルを検索する方法"}} linux/which -.-> lab-409873{{"Linux で `whereis` コマンドを使ってバイナリファイルを検索する方法"}} linux/whereis -.-> lab-409873{{"Linux で `whereis` コマンドを使ってバイナリファイルを検索する方法"}} end

Linux バイナリファイルの理解

Linuxオペレーティングシステムは、実行可能コードを含む機械可読ファイルであるさまざまなバイナリファイルを利用しています。これらのバイナリファイルは、システムとそのアプリケーションの正常な機能に欠かせないものです。このセクションでは、Linuxバイナリファイルの概念、その構造、およびLinuxエコシステム内での目的について検討します。

Linux バイナリファイルとは?

Linuxバイナリファイルは、実行可能ファイルとも呼ばれ、コンピュータのプロセッサによって直接実行できる機械可読命令を含むファイルです。これらのファイルは、通常、C、C++、またはRustなどのプログラミング言語で書かれたソースコードをコンパイルすることによって作成されます。生成されたバイナリファイルは、プログラムのロジックのコンパクトな表現であり、ターゲットハードウェア上での効率的な実行のために最適化されています。

Linux バイナリファイルの構造と構成要素

Linuxバイナリファイルは、オペレーティングシステムがプログラムを正しく読み込んで実行できるようにする特定の形式で構造化されています。Linuxで最も一般的に使用されるバイナリファイル形式は、実行可能およびリンク可能形式(ELF)です。ELFファイルには、さまざまなセクションが含まれており、それらは次のとおりです。

  • テキストセクション:このセクションには、プロセッサが実行できる実際の機械コード命令が格納されています。
  • データセクション:このセクションには、グローバル変数など、プログラムの初期化済みデータが含まれています。
  • BSSセクション:このセクションには、グローバル変数など、プログラムの未初期化データが格納されており、デフォルトではゼロに設定されます。
  • シンボルテーブル:このセクションには、プログラムで使用されるさまざまなシンボル(関数、変数など)に関する情報が含まれています。
  • 再配置情報:このセクションには、プログラムがメモリに読み込まれるときに、プログラムのコードとデータがどのように調整(再配置)されるかに関する情報が提供されています。

Linux バイナリファイルの実際の応用例

Linuxバイナリファイルは、オペレーティングシステムとそのアプリケーションの正常な機能に欠かせないものです。それらは、次のような幅広いシナリオで使用されます。

  • システムユーティリティ:Linuxオペレーティングシステムが提供する多くのコアコマンドやツール、たとえばlscatmkdirchmodなどは、バイナリファイルとして実装されています。
  • アプリケーションプログラム:ウェブブラウザ、テキストエディタ、メディアプレイヤーなどのユーザーがインストールしたソフトウェアは、通常、バイナリファイルとして配布されます。
  • カーネルモジュール:Linuxカーネル自体はバイナリファイルであり、追加のカーネルモジュールはバイナリファイルとして読み込まれて、カーネルの機能を拡張することができます。

Linuxバイナリファイルの構造と目的を理解することは、システム管理者、開発者、およびLinuxオペレーティングシステムを扱うすべての人にとって重要です。これらの概念を熟知することで、ユーザーはLinuxファイルシステムをより上手に操作し、問題を解決し、より堅牢で効率的なアプリケーションを開発することができます。

whereis コマンドを使ったバイナリファイルの検索

Linuxファイルシステムでは、バイナリファイルがさまざまなディレクトリに散在しており、それらを迅速に見つけるのは難しい場合があります。幸いなことに、whereis コマンドは、システム上のバイナリファイルの場所を見つけるのに役立つ強力なツールです。

whereis コマンドの使い方

whereis コマンドは、Linuxシステムユーティリティであり、システムのバイナリディレクトリ、マニュアルページディレクトリ、およびソースコードディレクトリを含む事前定義済みのディレクトリセット内で指定されたプログラムを検索します。whereis コマンドの基本構文は次のとおりです。

whereis [オプション] [ファイル名]

ここに、whereis コマンドの一般的なオプションをいくつか挙げます。

  • -b:バイナリファイルのみを検索します。
  • -m:マニュアルページのみを検索します。
  • -s:ソースファイルのみを検索します。

whereis を使ったバイナリファイルの検索

Ubuntu 22.04システム上でバイナリファイルを検索する方法を見てみましょう。たとえば、ls コマンドの場所を見つけるには、次のコマンドを実行します。

$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

出力結果から、ls のバイナリファイルは /usr/bin/ls ディレクトリにあり、対応するマニュアルページは /usr/share/man/man1/ls.1.gz にあることがわかります。

また、gitpython3 などの他のシステムユーティリティを検索するためにも、whereis コマンドを使うことができます。

$ whereis git
git: /usr/bin/git /usr/share/git /usr/share/man/man1/git.1.gz
$ whereis python3
python3: /usr/bin/python3 /usr/lib/python3.10 /usr/share/man/man1/python3.1.gz

whereis コマンドは、Linuxシステム上のバイナリファイルを迅速に見つけるための貴重なツールであり、問題のトラブルシューティングやファイルシステム構造を理解しようとする際に特に役立ちます。

Linux バイナリファイルディレクトリの構造と目的の探究

Linux ファイルシステムは階層構造で組織化されており、さまざまなディレクトリが特定の目的を果たしています。これらのディレクトリ、特にバイナリファイルに関連するものの構造と目的を理解することは、Linux を扱うシステム管理者や開発者にとって重要です。

Linux における重要なバイナリファイルディレクトリ

Linux ファイルシステムでは、以下のディレクトリが一般的にバイナリファイルを格納するために使用されます。

  1. /bin:このディレクトリには、lscatmkdir などの必須のユーザーレベルのバイナリファイルが含まれています。これらはユーザーが直接実行できる基本的なコマンドです。

  2. /sbin:このディレクトリには、initifconfigroute などのシステムレベルのバイナリファイルが含まれています。これらは通常、システム管理タスクに使用され、root ユーザーまたは昇格された特権で実行されます。

  3. /usr/bin:このディレクトリには、システムまたはサードパーティのソフトウェアパッケージによってインストールされた追加のユーザーレベルのバイナリファイルが含まれています。

  4. /usr/sbin:このディレクトリには、より高度なシステム管理タスクに使用される追加のシステムレベルのバイナリファイルが含まれています。

バイナリファイルディレクトリの目的の理解

これらのディレクトリにバイナリファイルを分離することにはいくつかの重要な目的があります。

  1. セキュリティ:システムレベルのバイナリファイルをユーザーレベルのバイナリファイルから分離することで、Linux ファイルシステムはより高いセキュリティレベルを維持するのに役立ちます。ユーザーは通常、システムレベルのバイナリファイルに直接アクセスしたり変更したりすることが制限されており、意図せぬ変更や悪意のある行為のリスクが軽減されます。

  2. アクセシビリティ/bin/usr/bin ディレクトリは、デフォルトの PATH 環境変数に含まれており、ユーザーが完全なパスを指定することなく、一般的なコマンドにアクセスして実行することが容易になります。

  3. 組織化:ディレクトリ構造は、バイナリファイルの格納と実行に関連する特定の目的を果たす各ディレクトリがあるため、ファイルシステムを組織化してナビゲートしやすくします。

  4. 柔軟性:バイナリファイルを異なるディレクトリに分離することで、これらのファイルへのアクセス許可、所有者権、アクセスに対するより細かい制御が可能になり、より良いシステム管理とカスタマイズが可能になります。

これらのバイナリファイルディレクトリの構造と目的を理解することは、Linux ファイルシステムを効果的にナビゲートして管理するだけでなく、基礎となるシステムとシームレスに統合するアプリケーションを開発・展開するためにも欠かせないことです。

まとめ

このチュートリアルでは、Linux バイナリファイルの世界に深く突き入り、その構造、構成要素、および実際の応用について検討しました。また、Linux システム上のバイナリファイルを検索するための whereis コマンドの使い方も学びました。バイナリファイルとその管理を理解することは、Linux システム管理の重要な側面であり、これらの実行可能ファイルはオペレーティングシステムとそのアプリケーションの支えとなっています。これらの概念をマスターすることで、Linux 環境を効果的にナビゲートしてトラブルシューティングする能力が向上します。