Bil*_*Man 17 shell bash symlink
在 bash 脚本中,我知道我可以使用以下语法检查文件是否是符号链接
if [ -L $path ]
Run Code Online (Sandbox Code Playgroud)
有谁知道我将如何测试该路径是否链接到特定路径?例如,我想检查 的目标是否$path为/some/where。
Gil*_*il' 24
如果要检查是否$path是目标为 的符号链接/some/where,可以使用该readlink实用程序。它不是 POSIX,但可以在许多系统上使用(GNU/Linux、BusyBox、*BSD 等)。
if [ "$(readlink -- "$path")" = /some/where ]; then …
Run Code Online (Sandbox Code Playgroud)
请注意,这是一个精确的文本比较。如果链接的目标是/some//where,或者如果它是where和值$pathIS /some/link,则文本将不匹配。
许多版本都readlink支持 option -f,它通过扩展所有符号链接来规范路径。
许多 shell,包括 dash、ksh、bash 和 zsh,都支持内置-ef操作符test来测试两个文件是否相同(硬链接到同一个文件,在跟随符号链接之后)。此功能也得到广泛支持,但不是 POSIX。
if [ "$path" -ef "/some/where" ]; then …
Run Code Online (Sandbox Code Playgroud)