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

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

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:~$ 

大丈夫そうです。

One response to “シンボリックリンクを辿り続ける

  1. I’ve been surfing online more than 3 hours today, yet I never found any interesting article like yours. It is pretty worth enough for me. Personally, if all site owners and bloggers made good content as you did, the web will be a lot more useful than ever before.
    http://studypoints.eu

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA