はじめに
Linux システムにおいて、ファイルやコマンドを効率的に見つけることは、すべてのユーザーにとって不可欠なスキルです。コマンドラインで作業する際には、プログラムがインストールされている場所、そのドキュメントにアクセスする場所、または設定ファイルが保存されている場所を見つける必要がしばしばあります。
この実験では、whereis コマンドに焦点を当てます。これは、Linux におけるコマンドのバイナリファイル、ソースコード、およびマニュアルページを見つけるのに役立つ強力なユーティリティです。このコマンドを効果的に使用する方法を学ぶことで、Linux のファイルシステムをより自信を持って操作し、生産性を向上させることができます。
この実験を通じて、whereis コマンドを使用して Linux コマンドのさまざまなコンポーネントを見つける方法を学びます。これにより、あなたの Linux の旅において役立つ実践的なスキルを身につけることができます。
whereis コマンドの理解
Linux の whereis コマンドは、コマンドのバイナリファイル、ソースファイル、およびマニュアルページファイルを見つけるために設計されています。これは、プログラムがインストールされている場所やそのドキュメントが保存されている場所を見つける必要があるときに特に便利です。
まず、whereis コマンドの動作方法を調べてみましょう。まず、プロジェクトディレクトリにいることを確認してください。
cd ~/project
whereis コマンドをよりよく理解するために、そのヘルプ情報を見てみましょう。
whereis --help
以下のような出力が表示され、whereis コマンドで利用可能なさまざまなオプションが示されるはずです。
Usage:
whereis [options] [-BMS <dir>... -f] <name>...
Locate the binary, source, and manual page files for a command.
Options:
-b search only for binaries
-B <dirs> define binaries lookup path
-m search only for manuals and infos
-M <dirs> define man and info lookup path
-s search only for sources
-S <dirs> define sources lookup path
-f terminate <dirs> argument list
-u search for unusual entries
-l output effective lookup paths
For more details see whereis(1).
この出力は、whereis を使用してコマンドのバイナリ(実行可能ファイル)、ソースファイル、およびマニュアルページを見つけることができることを説明しています。また、検索を絞り込むために使用できるさまざまなオプションも示されています。
whereis を使ったバイナリ実行ファイルの検索
Linux では、バイナリ実行ファイルはコンパイルされた実行可能なプログラムで、コマンドラインから実行することができます。これらは通常、/usr/bin、/bin、または /usr/local/bin などのディレクトリに保存されています。
whereis コマンドを使って、一般的に使用される Linux コマンドの場所を見つけてみましょう。
まず、ファイル内のパターン検索に使用される grep コマンドのバイナリを見つけてみましょう。
whereis grep
以下のような出力が表示されるはずです。
grep: /usr/bin/grep /usr/share/man/man1/grep.1.gz
この出力から 2 つの重要な情報がわかります。
grepのバイナリ実行ファイルは/usr/bin/grepにあります。grepのマニュアルページは/usr/share/man/man1/grep.1.gzにあります。
マニュアルページやソースファイルではなく、バイナリ実行ファイルのみを見つけたい場合は、-b オプションを使用できます。
whereis -b grep
出力にはバイナリの場所のみが表示されます。
grep: /usr/bin/grep
次に、ディレクトリの内容を表示するために使用される別の一般的なコマンド 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 にあることを示しています。
whereis コマンドは、事前に定義されたパスを検索してこれらのファイルを見つけます。これらのパスには通常、Linux がバイナリ、マニュアルページ、およびソースファイルを保存する標準的な場所が含まれています。
whereis を使ったマニュアルページの検索
マニュアルページ(man pages)は、Linux のコマンドやプログラムのドキュメントを提供します。これらには、コマンドの使い方、利用可能なオプション、一般的な使用例に関する詳細な情報が含まれています。
whereis コマンドは、-m オプションを使用してこれらのマニュアルページを見つけるのに役立ちます。さまざまなコマンドのマニュアルページを見つける方法を見てみましょう。
まず、ディレクトリ階層内でファイルを検索するために使用される find コマンドのマニュアルページを見つけてみましょう。
whereis -m find
以下のような出力が表示されるはずです。
find: /usr/share/man/man1/find.1.gz
これは、find コマンドのマニュアルページが /usr/share/man/man1/find.1.gz にあることを示しています。
Linux のマニュアルページは通常、/usr/share/man ディレクトリに保存され、番号付きのセクションに整理されています。
- セクション 1: ユーザーコマンド(実行可能プログラムまたはシェルコマンド)
- セクション 2: システムコール(カーネルが提供する関数)
- セクション 3: ライブラリコール(プログラムライブラリ内の関数)
- セクション 4: 特殊ファイル(通常は
/devにあります) - セクション 5: ファイル形式と規則
- セクション 6: ゲーム
- セクション 7: その他
- セクション 8: システム管理コマンド
最も一般的に使用されるコマンドのマニュアルページはセクション 1 にあり、そのためファイル名が .1.gz で終わることがよくあります(セクション 1 の圧縮ファイル)。
ユーザーパスワードを変更するために使用される passwd コマンドのマニュアルページを見つけてみましょう。
whereis -m passwd
以下のような出力が表示されるかもしれません。
passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
passwd は 2 つの異なるセクションにマニュアルページがあることに注意してください。セクション 1 にはコマンド自体のマニュアルページが、セクション 5 にはパスワードファイル形式のマニュアルページがあります。
man コマンドにコマンド名を続けることで、これらのマニュアルページに直接アクセスすることができます。
man find
読み終わったら、q を押してマニュアルページビューアを終了します。
whereis を使ったソースファイルの検索
ソースファイルは、バイナリ実行ファイルがコンパイルされる元のコードファイルです。whereis コマンドは、システム上にソースファイルが存在する場合、それらを見つけるのにも役立ちます。
ソースファイルを検索するには、whereis とともに -s オプションを使用します。いくつかの一般的なコマンドのソースファイルを見つけてみましょう。
whereis -s ls
システムの設定によっては、何も出力が表示されない場合もあれば、以下のような出力が表示される場合もあります。
ls:
これは、ls のソースファイルがシステム上の標準的な場所に存在しないことを示しています。これは、Linux ディストリビューションに事前にインストールされている多くのプログラムに共通しています。なぜなら、それらのソースコードは通常、デフォルトでは含まれていないからです。
一部のプログラム、特にソースからコンパイルするものや開発ツールは、システム上にソースファイルが存在する場合があります。別のコマンド、例えば gcc(GNU C コンパイラ)を試してみましょう。
whereis -s gcc
再び、出力はシステムによって異なります。以下のような出力が表示されるかもしれません。
gcc: /usr/lib/gcc
これは、gcc に関連するソースファイルが /usr/lib/gcc ディレクトリにある可能性があることを示しています。
-s オプションは、事前に定義された場所でソースファイルを検索していることに注意することが重要です。これらの場所には、システム上に保存されているすべてのソースコードの場所が含まれていない場合があります。さらに、Linux ディストリビューションの多くのプログラムはバイナリパッケージからインストールされるため、それらのソースコードがローカルに存在しない場合があります。
複数のオプションを組み合わせて、コマンドに関連するファイルがどこにあるかをより包括的に把握しましょう。例えば、python のすべてのバイナリ、マニュアル、およびソースファイルを見つけるには、次のようにします。
whereis python
これにより、システム上の Python 関連ファイルのすべての利用可能な場所が表示されます。これには、複数のバイナリ、マニュアルページ、および場合によってはソースディレクトリが含まれる可能性があります。
オプションの組み合わせと複数コマンドの検索
whereis コマンドは、ファイルの検索方法に柔軟性を持たせることができ、一度に複数のコマンドを検索することもできます。この最後のステップでは、異なるオプションを組み合わせて、一度のクエリで複数のコマンドを検索する方法を探ってみましょう。
まず、検索を絞り込むために複数のオプションを組み合わせてみましょう。たとえば、tar コマンドのバイナリファイルとマニュアルページ(ソースファイルは除く)を見つけたい場合、次のようにします。
whereis -b -m tar
以下のような出力が表示されるはずです。
tar: /usr/bin/tar /usr/share/man/man1/tar.1.gz
これは、tar コマンドのバイナリファイルとマニュアルページの場所を示しています。
また、1 つの whereis クエリで複数のコマンドを検索することもできます。一度にいくつかの関連するコマンドの場所を見つける必要がある場合に便利です。cp、mv、rm の 3 つのコマンドの場所を見つけてみましょう。
whereis cp mv rm
以下のような出力が表示されるはずです。
cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz
mv: /usr/bin/mv /usr/share/man/man1/mv.1.gz
rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz
これにより、これら 3 つの一般的なファイル操作コマンドがシステム上のどこにあるかをすぐに把握することができます。
もう 1 つの便利なオプションは -l です。これは、whereis がファイルを検索する際に調べるディレクトリを一覧表示します。
whereis -l
これにより、whereis がバイナリファイル、マニュアルページ、およびソースファイルを検索するディレクトリの一覧が表示されます。出力はシステムの設定によって異なりますが、次のような内容になるかもしれません。
bin: /usr/bin
bin: /usr/sbin
bin: /usr/games
bin: /usr/local/bin
bin: /usr/local/sbin
man: /usr/man/all
man: /usr/share/man/all
man: /usr/local/man/all
man: /usr/local/share/man/all
src: /usr/src/linux
src: /usr/src/packages
src: /usr/local/src
...
この情報は、whereis がどこを検索しているのか、およびシステム上にファイルが存在するにもかかわらず特定のファイルが見つからない理由を理解するのに役立ちます。
whereis コマンドは、Linux システム上のコマンドに関連する重要なファイルを素早く見つける方法です。事前に定義されたパスのみを検索するなど、いくつかの制限がありますが、使用するコマンドのバイナリ実行ファイル、マニュアルページ、場合によってはソースファイルを見つけるための迅速かつ簡単な方法を提供します。
まとめ
この実験では、Linux の whereis コマンドを使って、システム上のコマンドに関連する重要なファイルを見つける方法を学びました。以下に、これまでに達成したことをまとめます。
whereisコマンドの基本的な構文とオプションを学びました。whereisを使って、コマンドのバイナリ実行ファイルを見つけました。-mオプションを使ってマニュアルページを見つける方法を発見しました。-sオプションを使ってソースファイルを見つける方法を探り、その制限を理解しました。- オプションを組み合わせて、一度に複数のコマンドを検索する練習をしました。
whereis コマンドは、Linux のツールキットにおいて非常に有用なツールです。これを使うことで、プログラムがどこにインストールされているか、そのドキュメントがどこにあるかを素早く見つけることができます。この知識は、Linux のファイルシステムをより効率的に操作し、システム上のソフトウェアがどのように組織されているかを理解するのに役立ちます。
Linux の学習を続ける中で、which(PATH 内の実行可能ファイルのみを見つける)、locate(データベースを使って名前で任意のファイルを見つける)、find(条件を使ってファイルを検索する)などの関連コマンドも調べることができます。これらのコマンドはそれぞれ独自の強みと使用例があり、whereis について学んだことを補完します。



