Linux ファイル/コマンドの検索

LinuxLinuxBeginner
今すぐ練習

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

はじめに

Linuxシステムにおいて、ファイルやコマンドを効率的に見つけることは、すべてのユーザーにとって不可欠なスキルです。コマンドラインで作業する際には、プログラムがインストールされている場所、そのドキュメントにアクセスする場所、または設定ファイルが保存されている場所を見つける必要がしばしばあります。

この実験では、whereis コマンドに焦点を当てます。これは、Linuxにおけるコマンドのバイナリファイル、ソースコード、およびマニュアルページを見つけるのに役立つ強力なユーティリティです。このコマンドを効果的に使用する方法を学ぶことで、Linuxのファイルシステムをより自信を持って操作し、生産性を向上させることができます。

この実験を通じて、whereis コマンドを使用してLinuxコマンドのさまざまなコンポーネントを見つける方法を学びます。これにより、あなたのLinuxの旅において役立つ実践的なスキルを身につけることができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cp("File Copying") linux/BasicFileOperationsGroup -.-> linux/mv("File Moving/Renaming") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/whereis("File/Command Finding") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/man -.-> lab-271441{{"Linux ファイル/コマンドの検索"}} linux/ls -.-> lab-271441{{"Linux ファイル/コマンドの検索"}} linux/cp -.-> lab-271441{{"Linux ファイル/コマンドの検索"}} linux/mv -.-> lab-271441{{"Linux ファイル/コマンドの検索"}} linux/cd -.-> lab-271441{{"Linux ファイル/コマンドの検索"}} linux/whereis -.-> lab-271441{{"Linux ファイル/コマンドの検索"}} linux/grep -.-> lab-271441{{"Linux ファイル/コマンドの検索"}} end

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 クエリで複数のコマンドを検索することもできます。一度にいくつかの関連するコマンドの場所を見つける必要がある場合に便利です。cpmvrm の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 コマンドを使って、システム上のコマンドに関連する重要なファイルを見つける方法を学びました。以下に、これまでに達成したことをまとめます。

  1. whereis コマンドの基本的な構文とオプションを学びました。
  2. whereis を使って、コマンドのバイナリ実行ファイルを見つけました。
  3. -m オプションを使ってマニュアルページを見つける方法を発見しました。
  4. -s オプションを使ってソースファイルを見つける方法を探り、その制限を理解しました。
  5. オプションを組み合わせて、一度に複数のコマンドを検索する練習をしました。

whereis コマンドは、Linux のツールキットにおいて非常に有用なツールです。これを使うことで、プログラムがどこにインストールされているか、そのドキュメントがどこにあるかを素早く見つけることができます。この知識は、Linux のファイルシステムをより効率的に操作し、システム上のソフトウェアがどのように組織されているかを理解するのに役立ちます。

Linux の学習を続ける中で、which(PATH 内の実行可能ファイルのみを見つける)、locate(データベースを使って名前で任意のファイルを見つける)、find(条件を使ってファイルを検索する)などの関連コマンドも調べることができます。これらのコマンドはそれぞれ独自の強みと使用例があり、whereis について学んだことを補完します。