我有一台 Windows 7 64 位 PC。我在 c:\cygwin64 目录中安装了 Cygwin 版本 2.6.0。
我有一个名为的文件文件1。为此我创建了一个名为文件1_soft1。
ls -i -l
命令给了我这个输出:
总计 2
3377699721198685 -rw-r--r-- 1 cChappati 域用户 57 1 月 20 日 19:47 file1
37154696926542763 lrwxrwxrwx 1 cChappati 域用户 5 1 月 21 日 10:36 file1_soft1 -> file1
rm file1
然后我使用命令成功删除了原始文件。
现在,当我运行ls -i -l
命令时,我得到以下输出:
总计 1
37154696926542763 lrwxrwxrwx 1 cChappati 域用户 5 1 月 21 日 10:36 file1_soft1 -> file1
为什么文件1_soft1文件仍然链接到文件1归档时间文件1文件不再存在?
我原本以为文件1_soft1文件也将被删除或变为具有软链接的常规文件文件1文件已删除。但这些都没有发生。
谢谢
答案1
为什么当 file1 文件不再存在时,file1_soft1 文件仍然链接到 file1 文件?
Windows 文件系统不监视链接以查看链接到的文件是否已被删除。
这样做会增加一些相当大的开销:
维护所有链接的列表
定期检查列表以查看链接的文件是否已被删除。
视窗:
Unix:
创建软链接的 Unix 命令(在-s)还可以创建链接到不存在的目 标。
$ ll total 0 $ ln -s target dummy $ ll total 1 lrwxrwxrwx 1 DavidPostill None 6 Jan 21 16:19 dummy -> target $ cat dummy cat: dummy: No such file or directory $
如果删除仍然存在符号链接的文件,则操作
rm
将会成功,但符号链接将保留,并且任何引用它的尝试都将返回“找不到文件”错误。
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 链接- 创建到目录或文件的符号链接,或者创建硬文件链接或目录连接。
捷径- 创建一个 Windows 快捷方式(.LNK 文件)。
Linux 的 Bash 命令行的 AZ 索引- 与 Bash 命令行相关的所有事物的绝佳参考。
- 在- 在文件之间建立链接,默认情况下,它会建立硬链接;使用 -s 选项,它会建立符号(或“软”)链接。
答案2
这是因为软链接指向的是路径,而不是文件本身。
您认为链接仍然指向原始文件的假设是错误的。它指向的是原始路径。
这条路径上有什么或是否有东西都无关紧要。如果您创建新文件file1
(或甚至可能是具有该名称的目录),链接将指向它。