如何在 Ubuntu 中找到文件夹和文件夹链接之间的区别?

mat*_*een 4 symbolic-link

早些时候,我使用以下命令创建了一些指向另一个文件夹的链接。

sudo ln -s path_name link_name 
Run Code Online (Sandbox Code Playgroud)

这些链接看起来类似于文件夹。我无法区分文件夹和链接。有没有办法找到一个文件夹和另一个文件夹的链接之间的区别?

ter*_*don 6

有很多方法可以看到这一点。首先,它在 的输出中表示ls -l。请注意,目录d在权限字段的开头有一个,而链接有一个l

$ ls -l
drwxr-xr-x 2 terdon terdon 4096 Feb 13 14:12 bar
lrwxrwxrwx 1 terdon terdon    3 Feb 13 14:12 foo -> bar
Run Code Online (Sandbox Code Playgroud)

您还可以使用file

$ file bar foo 
bar: directory 
foo: symbolic link to `bar' 
Run Code Online (Sandbox Code Playgroud)

另一种选择是readlink遵循指向其目标的符号链接:

$ readlink foo
bar
Run Code Online (Sandbox Code Playgroud)

运行readlink bar将不返回任何输出(失败,返回非 0 退出代码),因此您可以执行以下操作:

readlink bar || echo "Not a link!"
Run Code Online (Sandbox Code Playgroud)

或者

readlink foo && "Echo this is a link"
Run Code Online (Sandbox Code Playgroud)

最后,您还可以使用find或 shell 本身来列出所有链接:

find . -type l
Run Code Online (Sandbox Code Playgroud)

或者

for f in *; do [ -L "$f" ] && echo "$f is a link"; done
Run Code Online (Sandbox Code Playgroud)


Jac*_*ijm 5

您可以通过->以下输出中的小箭头 ( )识别链接ls -l

在此处输入图片说明

或通过独特的颜色,也出现在 的输出中ls,如本答案中所述test2是链接):

在此处输入图片说明