【问题标题】:ls -lrt showing file which is not presentls -lrt 显示不存在的文件
【发布时间】:2013-12-18 12:02:57
【问题描述】:

当我在当前工作目录中执行ls -lart 时,它会显示

lrwxrwxrwx 1 root 10004 36 Dec 16 17:59 index.html ->/home/moviebeam/assets/ui/index.html

但我看不到文件的内容。最重要的是文件index.html 不在路径/home/moviebeam/assets/ui/ 中。那为什么当我运行命令ls -lrt时它会出现?

【问题讨论】:

    标签: linux file filesystems symlink


    【解决方案1】:

    这个:

    lrwxrwxrwx 1 root 10004 36 Dec 16 17:59 index.html ->/home/moviebeam/assets/ui/index.html
    

    是指向原始文件的软链接。创建时会检查此目标文件是否存在,但一旦创建软链接(或符号链接),可以删除目标文件,并且软链接仍然存在。

    如果你想在你的链接中保留文件的内容,而目标文件可以被删除,那么你应该创建一个硬链接(ln 而不是 ln -s)。

    【讨论】:

    • 删除原文件时保留符号链接基本上有什么用?如果删除原文件后没有用,也应该自动删除。
    • 嗯,当时这是一个设计决定,我相信这是有充分理由的 :-)
    • 符号链接只不过是一个指针,可以跨越文件系统边界,超出托管原始文件的文件系统的范围。
    • @sargant:好的,如果我创建一个不存在的文件的符号链接,那么符号链接文件的大小是如何确定的?
    • 它是最小的大小:1块,1块的大小取决于你的磁盘大小。
    【解决方案2】:

    符号链接可以存在,即使另一端的文件或文件夹不存在。如果您运行file index.html,它可能会告诉您这是一个损坏的符号链接。删除原始文件不会删除任何指向它的符号链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      • 2021-06-19
      • 2012-10-24
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多