写真1●catコマンドで/etc/passwdファイルを一覧表示
写真1●catコマンドで/etc/passwdファイルを一覧表示
[画像のクリックで拡大表示]
写真2●grepコマンドで「taro」を含む行のみを表示
写真2●grepコマンドで「taro」を含む行のみを表示
[画像のクリックで拡大表示]
写真3●「lspci」コマンドの実行結果
写真3●「lspci」コマンドの実行結果
[画像のクリックで拡大表示]
写真4●grepコマンドで「Ethernet」を含む行のみを表示
写真4●grepコマンドで「Ethernet」を含む行のみを表示
[画像のクリックで拡大表示]

 「grep」は,ファイル内の文字列などから,引数で指定した文字列を含む行を取り出して表示するコマンドです。莫大な行数から成るリストの中から目的の行を抜き出して表示する際に重宝します。

対象文字列とファイルを引数で指定
 まずは,grepコマンドの基本的な書式を次に示します。「文字列」「ファイル名」の順に引数を指定します。

$ grep 文字列 ファイル名 Enterキー

 ユーザー情報を管理する「/etc/passwd」ファイルを例に説明しましょう。「cat」コマンドで/etc/passwdファイルを確認すると,「root」を含む登録済みユーザーが一覧できます(写真1)。

 例えば,「/etc/passwd」ファイルの中から,登録ユーザー「taro」を含む行を表示したい場合は次のコマンドを実行します。

$ grep taro /etc/passwd Enterキー

 コマンドの実行結果が写真2です。taroを含む行だけ抜き出して表示されているのが分かります。

別のコマンドと組み合わせる
 grepコマンドは,Linuxの「標準入力」(通常はキーボードからの入力)からデータを受け取って「標準出力」(通常は画面への出力)に結果を表示するフィルタ・コマンドの仲間です。したがって,コマンドをつなぎ合わせるコマンドの「パイプ(|)」機能を使って,別のコマンドと組み合わせて使えます。

 パソコンのPCIバスに接続されているハードウエアのリストを表示する「lspci」コマンドを例に説明しましょう。lspciコマンドを実行すると,PCIバスに接続されているハードウエア群が一覧できます(写真3)。

 例えば,lspciコマンドの実行結果の中から,LANのチップセットを意味する「Ethernet」を含む行を表示したい場合は次のコマンドを実行します。

$ lspci | grep Ethernet Enterキー

コマンドの実行結果が写真4です。Ethernetを含む行だけ抜き出して表示されており,LANのチップセットが米Advanced Micro Devices製であることが分かります。