该命令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
。