-1

Я пытался удалить данные из моей собственной созданной временной папки в домашнем каталоге, но случайно удалил каталог по умолчанию «tmp» из домашнего каталога ~/tmp . И к моему глубочайшему шоку это уничтожило почти все! Ничего в «Мусоре». Все мои документы, загрузки, картинки, проекты. УШЕЛ!

У меня нет машины времени назад. но я не понимаю, что, черт возьми, происходит, когда я удалил эту папку tmp ! Я помню, что раньше у него были npm-* файлы / папки. Как, черт возьми, он мог уничтожить все? Конечно, я использовал sudo но я использовал его миллионы раз на работе над Linux, и этого никогда не было. Как мне восстановиться после этого?

Это была команда, которая сеет хаос

sudo rm -rf * tmp/

2 ответа2

3

Вы заявляете, что хотите удалить содержимое этого: ~/tmp . Но команда, которую вы говорите, вы выполнили это:

sudo rm -rf * tmp/

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

Команда, которую вы должны были выполнить:

sudo rm -rf ~/tmp

Запустив эту первую команду, вот что пошло не так:

  1. У вас был подстановочный знак (*), который в основном означает «Действуйте по всему из этого каталога, включая дочерние каталоги».
  2. Между * и tmp/ есть пробел, который не имеет смысла.
  3. Способ работы rm заключается в том, что он удаляет все элементы в списке с разделителями пробелами, которым он был предоставлен. Поэтому, когда вы sudo rm -rf с помощью * tmp/ , система в основном говорит системе: «Действуйте со всем из этого каталога, включая дочерние каталоги, а затем, когда это будет сделано, удалите каталог tmp/ после этого».  И, конечно, -r сказал rm рекурсивно искать в ваших дочерних каталогах.

Поэтому, когда все сказано и сделано ... Да ... Вы сказали Mac OS X через «Терминал» удалить все файлы и каталоги из любого каталога, в котором вы выполняли эту команду.

Также вы говорите это:

Ничего в «Мусоре». Все мои документы, загрузки, картинки, проекты. УШЕЛ!

«Корзина» не играет никакой роли в «Терминале», так как вся концепция «Корзина» является частью системы безопасности Mac OS X «Finder». Когда вы удаляете что-то в «Finder», оно попадает в «Trash», но если вы запускаете rm из «Terminal», элемент (ы) удаляются и исчезают. Если у вас нет резервной копии, все пропало. Сожалею. Ничего не поделаешь.

Вот почему в мире командной строки и при работе с файлами, подобными этим, всегда рекомендуется выполнять команду « Выполнить пробный запуск» с помощью ls (список содержимого каталога), например:

ls -la * tmp/

Поскольку ls просто перечисляет файлы и каталоги, запустив ls -la с * tmp/ для начала, вы получите список всех файлов и каталогов, с которыми будут действовать аргументы * tmp/ . И - в некотором альтернативном сценарии - вы бы сразу увидели, что может сделать команда, если бы вы запустили ее с помощью команды sudo rm -rf и знали: «Эй! Это кажется неправильным ... »и прыгайте обратно к чертежной доске, чтобы увидеть, как упрекать вас в усилиях по уборке.

0

Если ваш рабочий каталог был вашим домашним каталогом, вы удалили все содержимое вашего домашнего каталога, потому что вы указали * , то есть все в текущем каталоге. Так как был пробел, tmp/ был прочитан как другой аргумент, но это не имеет никакого эффекта, так как * удалил все.

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

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