При использовании команды rm в OS X 10.9 я случайно удалил весь диск.

Как я понимаю, команда, которую я использовал: sudo rm -Rfv /Volumes/Disk/AppName\!\ Whatever\ X.app/Contents/Resources/* все содержимое каталога «Ресурсы» будет удалено, включая папки с файлами, поэтому я использовал флаг «R». Буква «v» кратко показала, какие файлы были затронуты, но я закрыл окно через несколько секунд. Возможно, было ошибкой использовать флаг «f», но без него проблемная папка не была бы удалена.

Разве данный путь не ограничивает команду этим каталогом? Как команда могла бы быть дана более безопасным способом, ограничивая ее только содержанием пути?

Причина, по которой я использовал rm, заключалась в том, что в каталоге "Resources" содержался файл, который отказывался быть удаленным, поскольку он "содержал файлы", которые были невидимы также при показе невидимых файлов, не позволяли заменять себя или помещать в корзину. Возможно, этот файл каким-то образом указывал на весь диск, и по этой причине все было удалено. Это кажется вам вероятным объяснением?

Я проверил этот внешний диск на наличие ошибок, но он каждый раз возвращался как кристально чистый. Это новый диск на 3 ТБ.

2 ответа2

2

При использовании команды rm в OS X 10.9 я случайно удалил весь диск.

Я не вижу, как эта команда удалит содержимое всего диска.

Как я понимаю, команда, которую я использовал: sudo rm -Rfv /Volumes /Disk /AppName!\ Независимо от того, \ X.app/Contents/Resources/* все в каталоге "Ресурсы" будут удалены, включая папки с файлами.

Правильный.

Разве данный путь не ограничивает команду этим каталогом?

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

rm -Rfv /Volumes/Disk/ AppName\!\Whatever\ X.app/Contents/Resources/* .

Заметьте, что я не говорю, что вы это сделали, но это единственное, о чем я могу подумать, - это удалить все, смонтированное в /Volumes /Disk /

Как команда могла бы быть дана более безопасным способом, ограничивая ее только содержанием пути?

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

cd /Volumes/Disk/AppName\!\ Whatever\ X.app/Contents/Resources/
rm -Rfv * 

Всегда будьте осторожны при использовании rm как с рекурсией, так и с силой (-R и -f). Особенно как root (cq sudo'd).

1

Команда "rm" такая же в системах * nix (включая BSD, на которой основан OSX)

Так что смотрите man rm для объяснения переключателей.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .