Я работаю над школьным заданием, и у меня возникли проблемы с выполнением этой части.
Задание заключается в том, чтобы создать файл в CLI, открыть и отредактировать файл в GEDIT без сохранения, а затем вывести список каталогов. Согласно инструкциям, когда я вывожу список каталогов, файл, который я открыл и добавил, но не сохранил, должен отображать '~' после себя, но он не отображается.
Я что-то пропустил?
решение1
Да, вы что-то упускаете: вы не ожидаете увидеть этот файл, когда высначала открой его. Вы только это увидитепосле того как вы сохранилифайл, который вы открыли.
Как gedit сохраняет файлы
Текущий файл переименовывается. Затем измененное содержимое записывается в новый файл, которому присваивается имя файла, который вы открыли.
Если в разделе «Настройки», на вкладке «Редактор» включена опция «Создавать резервную копию файла перед сохранением», файл резервной копии переименовывается путем добавления ~
к имени файла символа a. В противном случае он переименовывается в случайную строку, начинающуюся с точки .
. Этот файл со случайным именем удаляется, если сохранение прошло успешно.
Контраст с поведением других типичных редакторов на базе терминала
Такое поведение графического редактора Gedit (и других графических редакторов) влияет на работу жестких ссылок. Как объяснялось выше, эти редакторы фактически сохраняют измененный контент в новом файле, т. е. в новом inode. Жесткие ссылки Linux указывают на inode. Жесткая ссылка на тот же файл в другом месте файловой системы будет продолжать указывать на старые данные и больше не будет связана с измененным файлом. Обычно это не то, чего ожидают пользователи. Однако такой подход безопаснее: если сохранение не удается, исходный контент все равно сохраняется на диске.
Традиционные (в частности, основанные на терминале) редакторы Linux сохранят обновленное содержимое в тот же иноде. Они записывают обновленное содержимое в тот же иноде, заменяя старое содержимое.