hnwの日記

シェルスクリプトでシンボリックリンク先が同一かチェックする方法

シェルスクリプト中でシンボリックリンクのリンク先を比較したい -OKWave」というページを見つけたんですが、もっとスマートに出来る気がしたので紹介します。どうやら-ef演算子が利用できるようです。(確証は無いのですが、私の手近では反例を見つけられませんでした)

$ touch a b; ln -s a c ; ln -s c d
$ ls -lai [abcd]
188974 -rw-r--r-- 1 hanawa hanawa 0 2009-01-05 03:52 a
188976 -rw-r--r-- 1 hanawa hanawa 0 2009-01-05 03:52 b
188977 lrwxrwxrwx 1 hanawa hanawa 1 2009-01-05 03:52 c -> a
188978 lrwxrwxrwx 1 hanawa hanawa 1 2009-01-05 03:52 d -> c
$ if test a -ef c ; then echo "same file" ; fi
same file
$ if test a -ef d ; then echo "same file" ; fi
same file
$ if test c -ef d ; then echo "same file" ; fi
same file
$ if test b -ef d ; then echo "same file" ; fi
$
続きを読む