適当にシンボリックリンクを作ってみます。
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:~$
大丈夫そうです。


コメント