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