tat*_*tsu 18
要确定文件夹是否是符号链接,您可以使用这些方法之一。
图形用户界面方法:
文件夹图标会有所不同。文件夹的图标会有一个箭头。
命令行方法
的输出ls -l将清楚地表明该文件夹是一个符号链接,它还将列出它指向的文件夹。
$ ls -l
total 4
drwxr-xr-x 2 t domain users 4096 mai 24 15:56 original
lrwxrwxrwx 1 t domain users 8 mai 24 15:56 symbolic -> original
Run Code Online (Sandbox Code Playgroud)
这symbolic是一个指向original文件夹的符号链接。
开头l的lrwxrwxrwx代表符号链接,而d代表文件夹(目录),-代表文件。
方法很多,我常用的方法是用 stat
guiverc@ultracrap:~$ stat vids
File: vids -> Videos/
Size: 7 Blocks: 0 IO Block: 4096 symbolic link
Device: fd00h/64768d Inode: 524725 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 1000/ guiverc) Gid: ( 1001/ guiverc)
Access: 2019-05-25 00:16:26.708558789 +1000
Modify: 2019-05-25 00:16:26.708558789 +1000
Change: 2019-05-25 00:16:26.708558789 +1000
Birth: -
Run Code Online (Sandbox Code Playgroud)
你会注意到我的 ~/vids 是我的 ~/Videos/ 目录的符号链接
替代方法:
1、使用 file
file /usr/lib/jvm/jre-9
/usr/lib/jvm/jre-9: symbolic link to /etc/alternatives/jre_9
Run Code Online (Sandbox Code Playgroud)
2、使用 readlink
readlink -f /usr/lib/jvm/jre-9
/usr/lib/jvm/java-9-openjdk-9.0.4.11-6.fc28.x86_64
Run Code Online (Sandbox Code Playgroud)
在这里你可以看到路径被扩展为链接目标
如果要以编程方式检查给定对象是普通目录还是指向目录的符号链接,可以使用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
Run Code Online (Sandbox Code Playgroud)
结果:
i_am_a_directory is just a plain directory
i_am_a_symlink_to_a_directory is a symlink to a directory
Run Code Online (Sandbox Code Playgroud)