首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查符号链接是否存在

如何检查符号链接是否存在
EN

Stack Overflow用户
提问于 2011-04-24 05:27:43
回答 5查看 337.1K关注 0票数 241

我正在尝试检查bash中是否存在符号链接。这是我尝试过的方法。

代码语言:javascript
复制
mda=/usr/mda
if [ ! -L $mda ]; then
  echo "=> File doesn't exist"
fi


mda='/usr/mda'
if [ ! -L $mda ]; then
  echo "=> File doesn't exist"
fi

然而,这是行不通的。如果'!‘被遗漏了,它永远不会触发。如果是“!”它每次都会触发。

EN

回答 5

Stack Overflow用户

发布于 2016-03-23 21:48:44

您可以使用以下命令检查符号链接是否存在以及是否未断开:

代码语言:javascript
复制
[ -L ${my_link} ] && [ -e ${my_link} ]

因此,完整的解决方案是:

代码语言:javascript
复制
if [ -L ${my_link} ] ; then
   if [ -e ${my_link} ] ; then
      echo "Good link"
   else
      echo "Broken link"
   fi
elif [ -e ${my_link} ] ; then
   echo "Not a link"
else
   echo "Missing"
fi

-L测试是否存在符号链接,是否断开。通过与-e结合,您可以测试链接是否有效(指向目录或文件的链接),而不仅仅是它是否存在。

票数 68
EN

Stack Overflow用户

发布于 2011-04-24 05:31:56

也许这就是你要找的。检查文件是否存在以及是否不是链接。

尝试执行以下命令:

代码语言:javascript
复制
file="/usr/mda" 
[ -f $file ] && [ ! -L $file ] && echo "$file exists and is not a symlink"
票数 15
EN

Stack Overflow用户

发布于 2017-01-06 11:04:34

使用readlink怎么样?

代码语言:javascript
复制
# if symlink, readlink returns not empty string (the symlink target)
# if string is not empty, test exits w/ 0 (normal)
#
# if non symlink, readlink returns empty string
# if string is empty, test exits w/ 1 (error)
simlink? () {
  test "$(readlink "${1}")";
}

FILE=/usr/mda

if simlink? "${FILE}"; then
  echo $FILE is a symlink
else
  echo $FILE is not a symlink
fi
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5767062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档