【 namei 】コマンド――ファイルパス中のディレクトリやファイルの情報を表示するLinux基本コマンドTips(399)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はファイルパス中のディレクトリやファイルの情報を表示する「namei」コマンドです。

» 2020年05月29日 05時00分 公開
[西村めぐみ@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はファイルパス中のディレクトリやファイルの情報を表示する「namei」コマンドです。

nameiコマンドとは?

 「namei」はファイルパス中のディレクトリやファイルの情報を表示するコマンドです。ただ表示するだけでなく、「終端」が見つかるまでパス名をたどって結果を表示します。指定したパス名について、途中のパスも含めた全てのリンク先をたどります。シンボリックリンクのリンク先がリンクだった場合でもその先を次々と終端が見つかるまで表示し続けます。

 「シンボリックリンクのレベルが深過ぎる」という問題を見つける際に役立つ他、ファイルのパーミッションを、途中のディレクトリも含めて確認するときに便利です。



コマンドの書式

namei [オプション] パス名……

※ [ ]は省略可能な引数を示しています。




nameiの主なオプション

短いオプション 長いオプション 意味
-n --nosymlinks シンボリックリンクをたどらない
-m --modes パーミッションなどの情報(mode)も表示する(例えば「drwxr-xr-x」)
-o --owners 所有者とグループの名前も表示する
-v --vertical モードと所有者、グループの位置をそろえて表示する
-l --long ロングフォーマットで表示する(「-m -o -v」相当)
-x --mountpoints マウントポイントを「d」ではなく「D」と表示する


パス中のディレクトリやリンク先を表示する

 「namei パス名」でパス中のファイルの種類と名前を表示します(画面1)。例えば「namei /dir1/dir2/filename」の場合、「/」「dir1」「dir2」「filename」のそれぞれについて、ファイルの種類と名前を表示します。ファイルや途中のディレクトリがシンボリックリンクだった場合、リンク先についても同様に表示します。「パス名」の部分には、ファイルやディレクトリを複数指定できます。

 実行すると、まず、表示対象を「f: パス名」と表示し、その後は、ファイルや途中のディレクトリを1件1行で表示します。

 各行の先頭には、ディレクトリならば「d」、シンボリックリンクならば「l」、通常のファイルの場合は「-」を表示します。

 シンボリックリンクの場合、インデントした上でリンク先の情報を表示します。

nameiで表示する先頭文字

文字 意味
f: 解析対象のパス名
d ディレクトリ
l シンボリックリンク
s ソケット
b ブロックデバイス
c キャラクタデバイス
p FIFO(名前付きパイプ)
- 通常のファイル
? エラー(リンク先がない場合など)

コマンド実行例

namei パス名

(対象について、途中のディレクトリについても含めて表示する)


画面1 画面1 パス中のディレクトリやリンク先を表示したところ

 パスの途中などに複数のシンボリックリンクを含んでいた場合は、リンク先を再帰的にたどって表示します(画面2)。

画面2 画面2 パスの途中に複数のシンボリックリンクを含んでいた場合の結果

 リンクがループしていた場合など、リンク先への参照が一定回数以上繰り返された場合はエラーとなります(画面3)。

画面3 画面3 nameiコマンドでエラーが発生したところ

 nameiコマンドの表示対象となるのは、コマンドラインで指定したパスに含まれているディレクトリとファイルです。

 例えば、カレントディレクトリ下の「.bashrc」を「namei .bashrc」と指定した場合は、「.bashrc」についてだけ表示します(画面4)。

 「namei ~/.bashrc」のように指定した場合は「~」を展開して結果の「namei /home/ユーザー名/.bashrc」が対象となります。どのようなパス名が対象となったのかは「f:」の行で確認できます。

 また、「readlink」コマンド(連載第238回)を使って、「namei `readlink -f .bashrc`」のように指定すると、指定したファイル名を絶対パスにした上で、各ディレクトリについて確認できます(※1)。

※1 readlinkはシンボリックリンクのリンク先を表示するコマンド。「-f」はリンク先を再帰的にたどるためのオプションだが、シンボリックリンクではない場合に指定したファイルのフルパスを表示する機能を備えているために利用した。



画面4 画面4 nameiコマンドの表示対象を確認したところ


ファイルパス中のディレクトリの情報を表示する

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。