Как удалить все файлы в текущем каталоге, начиная с точки?

Я использую Ubuntu 14.04, а в терминале я стал root с sudo su, и я хотел удалить мусор root вручную. Он удалил все, за исключением нескольких файлов, начинающихся с точки. Например .htaccess и т. Д. Поэтому я пошел в этот каталог (который есть «файлы»), и я выполнил эту команду:

rm -rf .* 

Он удалил эти файлы, НО я также получил сообщение об ошибке, что система не могла удалить "." и ".." Что это значит? Например, если я попытался удалить все дерево каталогов? Как я уже сказал, когда я выполнял эту команду, я был в самом нижнем каталоге. Это, если быть точным: /root/.local/share/Trash/files/ Я сбил свой компьютер и включил его. На первый взгляд все кажется нормальным. Итак, теперь я хочу спросить, что пошло не так, и если то, что я сделал, действительно может нанести серьезный ущерб системе в целом? Другими словами, следует ли мне беспокоиться сейчас или все в порядке?

  • Как я могу сделать bash не соответствовать `.` и` ..` с `. *`
  • Как вывести количество всех файлов с «tty» в имени файла в каталоге Linux, где хранятся файлы на системных устройствах
  • Команда scp ведет себя по-разному при использовании с функцией expect
  • Совпадение шаблонов по блоку
  • tar "--exclude-from" double star wildcard
  • Рисунок Grep и шаблон в шаблоне
  • BASH: количество слов в каждой строке документа
  • Почему символ дикой карты * настолько отличается между командами zip и rm?
  • 3 Solutions collect form web for “Как удалить все файлы в текущем каталоге, начиная с точки?”

    .* соответствует всем файлам, имя которых начинается с . , Каждый каталог содержит файл . который относится к самому каталогу и к файлу, который называется .. который относится к родительскому каталогу. .* включает эти файлы.

    К счастью для вас, пытаясь удалить . или .. не удается, поэтому вы получаете безобидную ошибку.

    В zsh,. .* Не соответствует . или .. В bash вы можете установить

     GLOBIGNORE='.:..:*/.:*/..' 

    а затем * будет соответствовать всем файлам, включая файлы точек, но исключая . и ..

    Кроме того, вы можете использовать шаблон шаблона, который явно исключает . и .. :

     rm -rf .[!.]* ..?* 

    или

     rm -rf .[!.] .??* 

    Альтернативно, используйте find .

     find . -mindepth 1 -delete 

    Если вы хотите удалить все точечные файлы, соглашение должно использовать эту команду:

     rm .??* 

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

    Вы можете игнорировать ошибку для своих целей.

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

    Теперь ваше сообщение об ошибке связано с тем, что это будет включать . и .. . это ярлык для текущего каталога, а «..» – это ярлык для родительского каталога. (Технически они означают что-то другое, но для этого разговора это работает).

    Вы не можете удалить каталог, в котором вы сейчас находитесь, где бы вы не были? И вы не можете удалить родительский каталог, иначе, куда будет идти текущий каталог. Теперь это не совсем верно, вы можете удалить свой текущий каталог и родительский каталог, но инструменты (rm в этом случае) настроены, чтобы сделать его немного сложнее, потому что это немного интуитивно понятно.

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

    Основываясь на информации в вашем вопросе, я отвечаю: «Да, вы сделали что-то неправильно, и да, вы могли бы причинить серьезный серьезный ущерб вашей системе.

    Прежде всего вы запустили эту команду с повышенными привилегиями. Никогда НИКОГДА не делайте ничего рекурсивно с повышенными привилегиями, если вы уже не знаете результат. Вы, конечно, никогда не должны удалять НИЧЕГО с повышенными привилегиями, если вы точно не знаете, что делаете. В следующий раз используйте mv . Таким образом, если вы что-то испортите, вы можете просто вернуть его обратно.

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

    Interesting Posts

    Журналист сообщает о результатах 13, отрицает 5, но pam_tally2 говорит, что никаких сбоев

    Копирование файлов, содержащих определенную структуру сохранения текста

    В чем проблема, из-за которой debian зависает в fsck / dev / sda? Каково решение?

    Получение «zsh: command not found: time» при запуске `time` в подселле

    безопасная конфигурация xorg

    Что означает строка `line 19: 12364 Killed` в сообщении об ошибке crontab?

    как узнать тип симметричного шифрования, используемый ssh?

    Как удалить установленные места, которые были добавлены с помощью команды mount?

    Сценарий оболочки Linux удаляет определенное содержимое в файле

    Как исправить эту ошибку Virtualbox при запуске Ubuntu?

    Извлечь данные из текстового файла с помощью grep

    Я не могу получить ключи GPG по HKPS с ошибкой «gpgkeys: Ошибка выборки HTTP 1: неподдерживаемый протокол»

    Grub 2 – попытка загрузки в «загрузчик Windows» загружает меня обратно в grub

    Почему я получаю ошибку «отсутствие учетных данных» при установке общего ресурса Kerberized NFS?

    Сжатие памяти с низким уровнем громкости VM

    Linux и Unix - лучшая ОС в мире.