Как я обнаруживаю, были ли изменения в нано отменены или сохранены?

Это кажется вариантом использования для dm-userspace+cowd: в сущности Вы настроили бы цель DM (блочное устройство), состоящее из COW (копия на записи) файл и блочное устройство, соответствующее Вашей карте с интерфейсом USB, и использовали бы его для хостинга файловой системы. Все обновления перешли бы к файлу COW; чтения, которые не находятся в файле COW, были бы поданы от карты с интерфейсом USB; после размонтирования файловой системы, модификаций слияния из файла COW в карту с интерфейсом USB.

К сожалению, это - конкретный Linux, и разработка, кажется, остановилась в 2007.

Если то, что Вы хотите сделать, является sync'ing файлами через два (или больше) ПК, я могу предположить, что Вы помещаете свой дом (или соответствующие папки) под системой управления версиями? Обычный цикл работы становится как это:

  1. включите карту с интерфейсом USB;
  2. обновите репозиторий корневого каталога путем получения по запросу последних изменений от карты с интерфейсом USB;
  3. сделайте свой материал;
  4. передайте изменения в системе управления версиями и обновите репозиторий на карте с интерфейсом USB.

Это - только одна запись к карте с интерфейсом USB. (Хотя я соглашаюсь с тем, какие другие сказали, который к этому времени yoru карта с интерфейсом USB изнашивается, Вы, вероятно, купите другого - больший.)

4
04.05.2012, 20:13
2 ответа

Можно использовать команду статистики для проверки времени изменения файла прежде и после nano. Что-то как:

oldtime=`stat -c %Y "$filename"`
nano "$filename"

if [[ `stat -c %Y "$filename"` -gt $oldtime ]] ; then
  echo $filename has been modified
fi

Конечно, это не обнаружит ли nano измененный файл или некоторая другая программа сделал, но это можно было считать функцией. (Можно использовать некоторую другую программу, чтобы отредактировать файл и затем выйти nano без сохранения.)

3
27.01.2020, 20:58

Недавно я пытался сделать что-то подобное, в конце концов я использовал модификацию подхода @cjm.

Прежде всего, под руководством Дарвина я использовал stat -f% m , чтобы получить время (в секундах) с момента изменения файла.

Это работает хорошо, но есть небольшая вероятность, что пользователь сохранит и выйдет из редактора в ту же секунду, что и изменение, сделанное вашим скриптом. Чтобы решить эту проблему, я вручную увеличиваю время изменения файла на одну секунду с помощью касания.

#!/bin/bash

echo "some text" > myfile.txt
touch -A -01 myfile.txt
oldtime=`stat -f %m myfile.txt`
vi myfile.txt
if [[ `stat -f %m myfile.txt` -gt $oldtime ]] ; then
    echo "file was edited"
fi
0
27.01.2020, 20:58

Теги

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