ls -L 命令有什么作用?

ls -L 命令有什么作用?

该命令ls -L在 ubuntu 中的作用是什么?它有哪些用例?示例将不胜感激。谢谢你!

答案1

从手册页:

   -L, --dereference
          when showing file information for a symbolic link, show
          information for the file the link references rather than for
          the link itself

尝试指定一个符号链接作为ls带有和不带有-L标志的参数以查看差异。

答案2

它取消引用符号链接,并显示它所指向的内容。例如:

user@mysystem:~/u&l$ dd if=/dev/urandom of=example.img bs=1024 count=0  seek=$[1024*10]
0+0 records in
0+0 records out
0 bytes copied, 0.000104833 s, 0.0 kB/s
user@mysystem:~/u&l$ ln -s example.img ex

user@mysystem:~/u&l$ ls -lh
total 0
lrwxrwxrwx 1 user user  11 Sep  9 01:07 ex -> example.img
-rw-rw-r-- 1 user user 10M Sep  9 01:06 example.img

user@mysystem:~/u&l$ ls -lhL
total 0
-rw-rw-r-- 1 user user 10M Sep  9 01:06 ex
-rw-rw-r-- 1 user user 10M Sep  9 01:06 example.img
user@mysystem:~/u&l$ 

请注意,如果没有 L,您会看到 ex 是一个符号链接,指示它链接到的位置,还要注意文件大小差异,小写 l 表示它是符号链接。请注意,设置 -L 选项后,我们不再可以从列表中链接到的文件中辨别它。在某种程度上,如果您使用硬链接,它就像 ls 一样。

答案3

这些-L选项取消引用符号链接。要了解它的实际含义,让我们创建一个目录和指向它的符号链接,并检查 inode 编号:

$ mkdir dir1
$ ln -s dir1/ dir2
$ ls -li
total 2
6030486 drwxr-xr-x 2 merlin merlin 4096 Sep  9 07:46 dir1
6030487 lrwxrwxrwx 1 merlin merlin    5 Sep  9 07:47 dir2 -> dir1/

然后,添加-L到调用中ls

$ ls -Lli
total 2
6030486 drwxr-xr-x 2 merlin merlin 4096 Sep  9 07:46 dir1
6030486 drwxr-xr-x 2 merlin merlin 4096 Sep  9 07:46 dir2 

可以看到第一列打印的inode编号是不同的。文件大小、权限也不同,它们显示的是dir1目录的属性,而不是符号链接dir2

相关内容