Я столкнулся с небольшим странным поведением при использовании жестких ссылок. От Терминала я создаю текстовый файл 1.txt и жесткая ссылка "на этот файл"
nano 1.txt
mkdir dir
ln 1.txt ./dir/
Я проверяю получающуюся жесткую ссылку и вижу, что ее содержание совпадает с исходного файла.
less ./dir/1.txt
Я изменяю начальный файл...
nano 1.txt
... и посмотрите, это изменяется, был отражен в жесткой ссылке
less ./dir/1.txt
Я изменяю содержание жесткой ссылки (более корректный, конечно - файл, ссылаемый с жесткой ссылкой)...
nano ./dir/1.txt
... и посмотрите, это изменяется, отражаются в начальном файле
less 1.txt
До сих пор, все подхожение...
Теперь, я закрываю Терминал и начинаю играть с созданными файлами (1.txt и ./dir/1.txt) от Средства поиска. Когда я изменяю на этом два файла с TextEdit, изменения не отражаются в другом файле.
Жесткая связь теперь разорвана. Что продолжается?
Это не о 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