当我有一个文件a.txt
并执行操作时ln -s a.txt b.txt
,我会编辑它a.txt
,a.txt
时间戳会更改。但是当我编辑 时b.txt
,b.txt
不会改变它的时间戳。只是a.txt
被改变了。为什么b.txt
的时间戳没有改变。确实a.txt
如此。
例子:
$ ls -la
total 8
drwxr-xr-x 2 admin admin 4096 nov 5 16:53 .
drwxr-x--- 37 admin admin 4096 nov 5 16:53 ..
$ nano a.txt
$ ln -s a.txt b.txt
$ ls -la
total 12
drwxr-xr-x 2 admin admin 4096 nov 5 16:54 .
drwxr-x--- 37 admin admin 4096 nov 5 16:53 ..
-rw-r--r-- 1 admin admin 4 nov 5 16:54 a.txt
lrwxrwxrwx 1 admin admin 5 nov 5 16:54 b.txt -> a.txt
$ echo wait a minute
wait a minute
$ nano b.txt
$ ls -la
total 12
drwxr-xr-x 2 admin admin 4096 nov 5 16:56 .
drwxr-x--- 37 admin admin 4096 nov 5 16:53 ..
-rw-r--r-- 1 admin admin 9 nov 5 16:56 a.txt
lrwxrwxrwx 1 admin admin 5 nov 5 16:54 b.txt -> a.txt
$ echo wait a minute again
wait a minute again
$ nano a.txt
$ ls -la
total 12
drwxr-xr-x 2 admin admin 4096 nov 5 16:58 .
drwxr-x--- 37 admin admin 4096 nov 5 16:53 ..
-rw-r--r-- 1 admin admin 13 nov 5 16:58 a.txt
lrwxrwxrwx 1 admin admin 5 nov 5 16:54 b.txt -> a.txt
首先看这一行:
-rw-r--r-- 1 admin admin 4 nov 5 16:54 a.txt
lrwxrwxrwx 1 admin admin 5 nov 5 16:54 b.txt -> a.txt
然后看看这个,当我编辑b.txt时,只有a.txt的日期改变了
-rw-r--r-- 1 admin admin 9 nov 5 16:56 a.txt
lrwxrwxrwx 1 admin admin 5 nov 5 16:54 b.txt -> a.txt
好的,我知道 b.txt 是 a.txt 的符号链接。所以你编辑a.txt。但为什么我的操作系统不只更改 a.txt 的日期。当我编辑b.txt时。更改 b.txt 的日期会更有用。
但是,您也可以说,当我在目录中编辑文件时(我编辑了一个文件,并且使用了该目录),该目录不会更改其日期。该目录用于编辑其中的文件。但是当我编辑其中的文件时,操作系统确实更改了目录日期
答案1
因为当您要求编辑时,b.txt
您 edit a.txt
,链接不会更改:遍历链接不会更改它。
尝试访问链接会访问它指向的文件(或最终指向的文件,该链接可能指向一个指向最终指向文件/目录/其他内容的链接的链接)。链接只能通过使用特殊的链接访问例程来访问。此外,软链接无法编辑(只能创建和删除)。
答案2
答案:
当您打开文件的符号链接时,您确实打开了符号链接,读取了符号链接(链接)中的文本,关闭它并打开了它链接到的文件。这意味着当你编辑它时。您从未编辑过符号链接文件。
目录包含另一个目录或指向文件的指针,如下所示:
这是磁盘开头的数据。
A 16:44:
-- B 17:18:
-- C 3kb: 15754
-- D 4kb: 26544
-- E 18:10:
-- F 6kb: 16754
-- G 8kb: 27544
当您编辑目录中的文件时。文件大小已更改,日期已更改(以及更多属性)。这在目录信息中发生了变化。所以您还编辑了目录数据(大小、日期...)。目录也改变了。
结果:
这是编辑后C盘开头的数据。
A 18:20:
-- B 18:20:
-- C 8kb: 15754
-- D 4kb: 26544
-- E 18:10:
-- F 6kb: 16754
-- G 8kb: 27544