Ant*_*nAL 5 hardlink textedit macos
在使用硬链接时,我遇到了一些奇怪的行为。从终端,我创建了一个文本文件 1.txt 和一个“到这个文件”的硬链接
nano 1.txt
mkdir dir
ln 1.txt ./dir/
Run Code Online (Sandbox Code Playgroud)
我检查了生成的硬链接,并查看其内容与原始文件的内容相同。
less ./dir/1.txt
Run Code Online (Sandbox Code Playgroud)
我更改了初始文件...
nano 1.txt
Run Code Online (Sandbox Code Playgroud)
...你看,这些变化反映在硬链接中
less ./dir/1.txt
Run Code Online (Sandbox Code Playgroud)
我更改了硬链接的内容(当然更正确 - 文件,被硬链接引用)......
nano ./dir/1.txt
Run Code Online (Sandbox Code Playgroud)
...并看到,更改反映在初始文件中
less 1.txt
Run Code Online (Sandbox Code Playgroud)
直到现在,一切顺利……
现在,我关闭终端并开始使用 Finder 中创建的文件(1.txt 和 ./dir/1.txt)。当我使用 TextEdit 更改这两个文件时,更改不会反映在另一个文件中。
硬链接现在已断开。这是怎么回事?
Ale*_*lli 15
这不是关于 GUI,而是关于TextEdit保存更改的策略:它不会在现有文件上写入,而是首先写入一个新文件,完成后删除旧文件并重命名新文件到旧人的名字。许多编辑器(在概念上“就地”更改文件的程序),无论是否使用 GUI,出于安全目的使用此策略(如果在编写时非常不幸的时刻发生崩溃,您不会丢失新旧版本正在发生),但正如您注意到的那样,它“中断”了硬链接。
具有此行为的非交互式、非 GUI 编辑器程序的一个示例是perl使用-i(“就地编辑”)命令行选项开关...:
$ touch za.txt
$ ln za.txt zo.txt
$ echo ciao >za.txt
$ cat zo.txt
ciao
$ perl -i -p -e 's/a/b/' zo.txt
$ cat zo.txt
cibo
$ cat za.txt
ciao
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1629 次 |
| 最近记录: |