Я переименовал несколько файлов в один пакетный скрипт. Есть ли способ отменить изменения, не переименовывая их обратно?
Предоставляет ли Linux какой-то нативный способ undo
ввода?
command-line
Lazer
источник
источник
Ответы:
Linux (как и другие юниты) изначально не предоставляет функции отмены. Философия заключается в том, что если он ушел, он ушел. Если бы это было важно, это должно было быть поддержано.
Существует файловая система fuse, которая автоматически хранит копии старых версий: copyfs , доступные во всех хороших дистрибутивах. Конечно, это может использовать много ресурсов.
Лучший способ защититься от таких аварий - использовать систему контроля версий (cvs, bazaar, darcs, git, mercurial, subversion, ...). Это займет немного времени, чтобы учиться, но это окупается в среднесрочной и долгосрочной перспективе.
источник
К сожалению нет.
источник
-i
опцияrm
включения по умолчанию. Мои системы Unix не должны держать меня за руку.Нет, никакой магической отмены нет ни в одном Unix. Unix предполагает, что вы знаете, что делаете. Для поддержки отмены используйте VCS (возможно, в вашем текстовом редакторе он тоже есть).
Большинство файловых систем не имеют возможности сделать это прозрачно.
Time machine и восстановление системы на Mac и Windows соответственно являются просто системами резервного копирования / изменения.
источник
В командной строке нет отмены. Однако вы можете запускать команды как
rm -i
иmv -i
. Это подскажет вам «вы уверены?» вопрос, прежде чем они выполнят команду.Также возможно добавить псевдоним для него в сценарий запуска (например,
~/.bashrc
или/etc/bash.bashrc
):Редактировать: в соответствии с приведенными ниже советами, я удалил мой совет, чтобы псевдоним команды по умолчанию. Вместо этого он вводит новые команды сейчас).
источник
mv -i
подсказки только тогда, когда это перезапишет файл (что делает его полезным и не противным). В том же духеalias cp='cp -i'
.Причина того, что системы Linux / Unix не имеют восстановленных данных, связана с тем, как большинство файловых систем хранят свою информацию. Все метаинформация файла хранится в передней части диска со ссылками на иноды на остальной части диска. Как правило, большинство файловых систем выделяют 10 блоков для файла в этой мета-области. Первые 7 относятся к первым 7 индексам. 8-й и 9-й переходят к спискам инодов (блоки с двойной связью), а 10-й - к спискам списков (блоки с тройными связями). Это варьируется от файловой системы к файловой системе (ext4, jfs, xfs и т. Д.), Но эти списки блоков обычно могут адресовать файлы размером от 2 ГБ до нескольких ТБ.
Но поскольку вся эта информация хранится в передней части диска, при удалении файла нет способа ссылаться на иноды на диске, к каким метаданным они относятся. Напротив, FAT32 и NTFS фактически хранят некоторую информацию заголовка вместе с самими файлами, что упрощает определение того, к какому файлу должен принадлежать набор блоков (при условии, что это пространство еще не было освобождено новыми файлами). В работе с Linux, когда вы что-то удаляете, это почти всегда первое, что немедленно перезаписывается новыми данными для повышения эффективности.
источник
Если вы действительно хотите отменить функцию, используйте контроль источника. Subversion на самом деле очень хорошо работает на однопользовательском компьютере. Я использую его для контроля всех моих личных файлов в моей домашней системе. Это кажется излишним, пока не произойдет катастрофа, мошеннический сценарий или опечатка командной строки.
источник
rm -r .
. ;)rm -r project.git
. К счастью, если вы сохраните другую версию на удаленном сервере, это вряд ли произойдетrm -r .
. Действительно глупо с моей стороны.Одна вещь, которую я хотел бы добавить в мой .bashrc - это функция копирования и удаления. Что-то вроде:
Но вы должны привыкнуть печатать cprm, а не rm.
Очевидно, что вам нужно оставаться поверх удаленной области, если у вас ограниченное дисковое пространство.
источник
"$1"
.GitFS - это файловая система на основе предохранителей, которая автоматически рассчитывает
diff
s между версиями и позволяет восстанавливать / просматривать их.Веб-страница: https://www.presslabs.com/gitfs
Документы: https://www.presslabs.com/gitfs/docs/usage/
источник