Answers:
许多外壳程序都有一个内置-ef
运算符test
(或其同义词[
),用于测试两个路径是否指向同一现有文件(在符号链接之后)。这包括bash,破折号,pdksh,ksh88,ksh93和zsh,但不包括POSIX sh。在bash,ksh或zsh中,您也可以-ef
在[[ … ]]
条件构造中使用。
if ! [ "$1" -ef "$2" ]; then # $1 and $2 are different files
-ef
的优点是更具可移植性(也稍快一些,但大多数时候您不会注意到)。例如,它可以在* BSD,OSX,BusyBox以及Linux / Cygwin(GNU)上运行。它也更加清晰,因为它确实满足了要求。我可以看到的唯一好处stat
是,当您不想遵循符号链接时。
对于(使用创建的ln -s
)软链接,可以使用realpath
。但是,这不适用于硬链接。
stat -L
。