如何验证 CentOS 中是否存在符号链接

如何验证 CentOS 中是否存在符号链接

通常情况下,ls -la会把这个给我,但我猜 CentOS 不一样。我需要验证符号链接是否存在。

答案1

如果你的意思是“这个链接实际上是否指向一个文件?”,(我认为你确实是这么想的,因为:

if [[ -e "$file" ]]; then echo it is there; fi

如果只是想测试文件是否是符号链接,那么:

if [[ -h "$file" ]]; then echo it is a link; fi

这是针对 Bash 量身定制的,并不是最便携的方式。还有一点小知识,使用双括号语法时不需要引号。

如果您想搜索断开的链接,请使用find -L . -type l

如果你只是希望 ls 能够再次使用不同的颜色来标记断开的链接,可以尝试一下eval $(dircolors)

答案2

如果您要验证您已经知道可以使用的文件。此外,文件还可用于识别文件对象的类型:

[akula@jasonlawer ~]$ file /var/www/html/2001914
/var/www/html/2001914: symbolic link to `/tickets/rhev/2001914.zip_FILES/'

如果它是作为软件包的一部分提供的,那么最简单的方法就是使用 RPM 来验证软件包

[akula@jasonlawer ~]$ rpm -V httpd

答案3

您可以使用

if [[ -f `readlink filename` ]]; then
....
fi

readlink 命令返回符号链接的目标。-f 测试该文件是否存在。请注意 ` 字符,它不是 " 或 '。它可以帮助您执行内部 bash 命令,就像 SQL 系统中的内部查询一样。

相关内容