Unix检查两条路径是否相同

时间:2014-12-10 15:13:16

标签: unix symlink

我有一个路径A,它是路径B的符号链接。路径C有些不同。

如果目的地相同,我如何检查?

我想在以下情况下成真:

A = B
A = A
B = B
C = C

我想在以下情况下弄错:

A = C
B = C

谢谢

1 个答案:

答案 0 :(得分:2)

使用inode编号。

touch m n    # Create m and n
ln -s m o    # Symlink o to m

ls -lLi m n o    # Look at inodes of all files, see o and m are the same.
13132212 -rw-r--r--  1 mark  staff  0 10 Dec 15:18 m
13132213 -rw-r--r--  1 mark  staff  0 10 Dec 15:18 n
13132212 -rw-r--r--  1 mark  staff  0 10 Dec 15:18 o

所以,如果你想在脚本中获取inode数字,你可以这样做:

minode=$(ls -Li m | awk '{print $1}')
echo $minode
13132212

oinode=$(ls -Li o | awk '{print $1}')
echo $oinode
13132212

并像这样测试:

[ $minode -eq $oinode ] && echo equal