代码: 全选
>0< work$ ls -li /usr/bin/tic /home/fb/work/fonts/microsoft/simsun-yahei-mono-1.0.20100530/simsunbd.ttc
524799 -rw-r--r-- 1 fb users 13655024 5月 29 2010 /home/fb/work/fonts/microsoft/simsun-yahei-mono-1.0.20100530/simsunbd.ttc
524799 -rwxr-xr-x 1 root root 49840 1月 4 11:33 /usr/bin/tic*
>0< work$ test /usr/bin/tic -ef /home/fb/work/fonts/microsoft/simsun-yahei-mono-1.0.20100530/simsunbd.ttc
>1< work$ touch t1
>0< work$ ln t1 t2
>1< work$ ln -s t1 t3
>0< work$ test t1 -ef t2
>0< work$ test t1 -ef t3
>0< work$ test \! \( -h t1 -o -h t2 \) -a t1 -ef t2
>0< work$ test \! \( -h t1 -o -h t3 \) -a t1 -ef t3
>1< work$
只用 ls -i 判断硬链接不可靠,除非确定在同一文件系统(或许还不够严谨,LVM、RAID 等情况尚不清楚)
只用 test -ef 同样不可靠,除非两个都不是软连接(同样或许还不够严谨,LVM、RAID 等情况尚不清楚)
还有什么别的方法不?
--------------------------------------------------------------------------------------
新发现情况更复杂了,上面的 test \! \( -h t1 -o -h t2 \) -a t1 -ef t2 也已经不凑效了。
这种情况,如何判断 t1 和 t2 是否是同一个硬链接呢?
代码: 全选
>0< urd$ ln -s /bin/sh t1
>0< urd$ ln t1 t2
>0< urd$ ln -s t1 t3
>0< urd$ ls -li t?
178539 lrwxrwxrwx 2 fb users 7 5月 26 19:58 t1 -> /bin/sh*
178539 lrwxrwxrwx 2 fb users 7 5月 26 19:58 t2 -> /bin/sh*
178547 lrwxrwxrwx 1 fb users 2 5月 26 19:58 t3 -> t1*
>0< urd$ test t1 -ef t2
>0< urd$ test t1 -ef t3
>0< urd$