我正在寻找一种方法(如果存在)来知道文件夹的路径是符号链接还是文件夹的原始路径。
有这样的事吗?
答案1
要确定文件夹是否是符号链接,您可以使用以下任一方法。
答案2
如果你想通过编程检查给定的目的是一个普通目录或指向目录的符号链接,您可以使用test
命令。请注意,它返回是目录对于目录和目录的符号链接,但只返回是符号链接用于符号链接。因此:
#!/usr/bin/env bash
mkdir i_am_a_directory
ln -s i_am_a_directory i_am_a_symlink_to_a_directory
for object in i_am_a_directory i_am_a_symlink_to_a_directory; do
if test -d $object; then
if test -L $object; then
echo "$object is a symlink to a directory"
else
echo "$object is just a plain directory"
fi
else
echo "$object is not a directory (nor a link to one)"
fi
done
结果:
i_am_a_directory is just a plain directory
i_am_a_symlink_to_a_directory is a symlink to a directory
答案3
替代方法:
1、使用file
file /usr/lib/jvm/jre-9
/usr/lib/jvm/jre-9: symbolic link to /etc/alternatives/jre_9
2、使用readlink
readlink -f /usr/lib/jvm/jre-9
/usr/lib/jvm/java-9-openjdk-9.0.4.11-6.fc28.x86_64
在这里你可以看到路径被扩展为链接目标
答案4
namei
将分解路径中的每个组件,无论该路径是否通向目录。
例如,我的~/Playlists
是的符号链接Documents/Playlists
,并且Documents
它本身也是的符号链接Dropbox/Documents
:
$ namei Playlists
f: Playlists
l Playlists -> Documents/Playlists
l Documents -> Dropbox/Documents
d Dropbox
d Documents
d Playlists
在此输出中,
f:
方法当前正在解析的路径名l
方法符号链接d
方法目录(文件夹)- 每个缩进级别代表一个符号链接级别