シンボリックリンクを辿り続ける

適当にシンボリックリンクを作ってみます。

takk@deb8:~$ mkdir a
takk@deb8:~$ ln -s a b
takk@deb8:~$ ln -s b c
takk@deb8:~$ ln -s c d
takk@deb8:~$ ln -s d e

eからaを発見するには、どうすれば良いでしょうか。

lsでは直前のリンク元がわかるだけなので、一つ一つ目で追う必要があります。

takk@deb8:~$ ls -l
合計 4
drwxr-xr-x 2 takk takk 4096  3月  7 20:21 a
lrwxrwxrwx 1 takk takk    1  3月  7 20:21 b -> a
lrwxrwxrwx 1 takk takk    1  3月  7 20:21 c -> b
lrwxrwxrwx 1 takk takk    1  3月  7 20:21 d -> c
lrwxrwxrwx 1 takk takk    1  3月  7 20:21 e -> d
takk@deb8:~$ 

treeでも、同様です。

takk@deb8:~$ tree
.
├── a
├── b -> a
├── c -> b
├── d -> c
└── e -> d

5 directories, 0 files
takk@deb8:~$ 

そんな時は、nameiコマンド。
辿りたいファイルを指定するだけ。

takk@deb8:~$ namei e
f: e
 l e -> d
   l d -> c
     l c -> b
       l b -> a
         d a
takk@deb8:~$ 

便利ですね。
では、もっとたくさんのシンボリックリンクで試してみましょう。
ランダムな英単語を100個数珠つなぎにします。

takk@deb8:~$ sort -R /usr/share/dict/words | head -20 > a
takk@deb8:~$ pre=`tail -1 a`
takk@deb8:~$ mkdir $pre
takk@deb8:~$ for i in `head -19 a`;do ln -s $pre $i;pre=$i;done
takk@deb8:~$ ls --color=never
Bakelite    bullhorns   egging          moussed     soupçon      yawl's
Eucharists  calcium     fragmentation   pluralized  turnabout's
Winkle's    defensing   glitziest       quirky      wisely
a           desecrates  grandiloquence  shading's   workbenches
takk@deb8:~$ 

lsが色付きだと、この時点で、大元のディレクトリがわかってしまいますので、色なし指定してます。

nameiに適当な単語を指定して、大元を辿ってみましょう。

takk@deb8:~$ namei egging
f: egging
 l egging -> defensing
   l defensing -> soupçon
     l soupçon -> wisely
       l wisely -> quirky
         l quirky -> Winkle's
           l Winkle's -> Eucharists
             l Eucharists -> grandiloquence
               l grandiloquence -> bullhorns
                 l bullhorns -> pluralized
                   l pluralized -> calcium
                     d calcium
takk@deb8:~$ 

簡単に見つかりましたね。
簡単に見つかりすぎて、心配になってきました。本当に全ファイルは、一直線につながっているのでしょうか。
確認してみます。ファイルはaを除くと20個あるので、nameiの結果の行数が、2から21の数字が一つずつ存在していれば良いことになります。

takk@deb8:~$ for i in `ls -I a`;do namei $i | wc -l;done | sort -n
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
takk@deb8:~$ 

大丈夫そうです。

コメント

タイトルとURLをコピーしました