Жесткая ссылка не работает в соответствии с Mac OS X в режиме GUI

Я столкнулся с небольшим странным поведением при использовании жестких ссылок. От Терминала я создаю текстовый файл 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, изменения не отражаются в другом файле.

Жесткая связь теперь разорвана. Что продолжается?

5
задан 29.07.2010, 19:28

1 ответ

Это не о 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
14
ответ дан 07.12.2019, 16:54

Теги

Похожие вопросы