【问题标题】:how to check if the provided path is a symlink or a regular path如何检查提供的路径是符号链接还是常规路径
【发布时间】:2014-04-11 05:26:05
【问题描述】:

我不是 powere shell 脚本程序员,这可能是基本的,但我需要知道如何检查提供的路径是符号链接还是常规路径?

我有一个路径 /user/home/san/drive2

其中 drive2 是指向

的符号链接

/drive 在根级别,所以使用 shell 脚本中的什么命令我可以检查路径是符号链接还是常规路径?

另外,任何路径都可能遇到符号链接,那么我们如何在每个路径分隔符之后递归检查它是否是符号链接?

【问题讨论】:

标签: linux shell sh


【解决方案1】:

注意lstat() 函数。

在此检查st_mode 字段中:S_ISLNK(m)

或者你可以做类似的事情

if [ -L /path/to/file ]; then
  echo "is a symlink!"
else
  echo "not a symlink! maybe a directory or regular file, or does not exist"
end

【讨论】:

    【解决方案2】:

    您可以使用readlink -f /user/home/san/drive2 获取后面的规范 路径。也就是说,没有任何符号链接的实际路径。一个推论是,如果 readlink -f 的结果与您提供给它的参数有任何不同,那么在原始路径中的某处有一个符号链接。

    【讨论】:

      猜你喜欢
      • 2014-03-09
      • 2011-10-16
      • 2011-11-25
      • 2015-07-18
      • 2014-11-07
      • 2012-01-15
      • 2014-02-20
      • 2018-12-18
      • 1970-01-01
      相关资源
      最近更新 更多