На строке команды Unix существует ли команда “отмены”?

Я получаю чувство, что я испытываю необходимость в нем однажды, как то, если я только что удалил что-то, что я не должен иметь, или переименовал что-то и не могу помнить то, чем это нужно назвать и т.д.

8
задан 31.12.2015, 01:23

2 ответа

Отрицательный. В Linux нет никакой волшебной кнопки отмены.

11
ответ дан 07.12.2019, 13:49

Нет.

Unix исходно не обеспечивает функцию отмены. Философия - то, что, если это пошло, это пошло. Если это было важно, это должно было быть сохранено.


Вместо того, чтобы удалить файл, можно переместить его во временный каталог “мусора”. Некоторые настольные среды заставляют их “удалять” перемещение команды файл к мусору. Но остерегайтесь этого, только несколько приложений будут использовать его; другие просто удалят файл.

Могут быть инвертированы много команд, например, перемещение файла может быть отменено путем кладения обратно файла. Команды, которые удаляют или перезаписывают файл, не могут легко быть отменены если вообще; некоторые из них могут быть сделаны более устойчивыми против случайной потери данных посредством настроек оболочки. В особенности:

  • На командной строке, cp и mv перезапишет любой существующий конечный файл, но можно заставить их запросить:

    alias cp='cp -i'
    alias mv='mv -i'
    

    Я рекомендую эти два псевдонима потому что без них, cp и mv делайте две работы: копирование/перемещение и удаление. Не наличие cp и mv удалите файлы, больше в соответствии с философией Unix (одна команда делает одно задание), и менее подверженный ошибкам. (Это полностью отличается от rm -i, который просит подтверждение прежде, чем сделать его задание — такая систематическая подсказка имеет тенденцию инициировать непроизвольную реакцию и таким образом становится бесполезным раздражением.)

  • Можно сделать > оператор перенаправления только принимает для создания файлов, так, чтобы Вы записали >|foo позволить перезаписывать существующий файл foo.

    set -o noclobber
    

Существует файловая система FUSE, которая автоматически сохраняет копии старых версий: copyfs, доступный для большинства нельдов (*BSD, Linux, OS X, Солярис). Конечно, это может использовать много ресурсов.

Если Вы переместили файл в другой каталог и помните (часть) ее имя, но не ее местоположение, можно использовать locate управляйте для нахождения его.


Лучший способ защитить от таких несчастных случаев состоит в том, чтобы использовать систему управления версиями (cvs, базар, darcs, мерзавец, подвижный, подверсия...). Требуется немного времени для изучения, но это окупается удивительно в среднесрочном и долгосрочном.

7
ответ дан 07.12.2019, 13:49

Теги

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