Подтвердить что ты не робот

Команда Powershell: rm -rf

Я немного научился, и я все еще не уверен, что он делает. Я знаю, что rm удаляет элемент, но я не могу найти документацию по -rf. Всякий раз, когда я набирал help -rf, он печатал весь список доступных команд в powershell. Что произойдет, если вы наберете rm -rf в powershell? Из чтения я собрал, что он удалит все на диске? Я не уверен?

Кроме того, rm -rf такое же, как rm -rf/

4b9b3361

Ответ 1

PowerShell не является UNIX. rm -rf - это код оболочки UNIX, а не сценарии PowerShell.

  • Это документация для rm (сокращение от Remove-Item) в PowerShell.
  • Это документация для rm в UNIX.

Увидеть разницу?

В UNIX только rm -rf недопустим. Вы сказали ему, что делать через rm для удаления с атрибутами r для рекурсии и f для силы, но вы не сказали ему, для чего нужно выполнить это действие. rm -rf/path/to/delete/ означает rm (удалить) с атрибутами r (рекурсивный) и f (force) в каталоге /path/to/remove/ и его подкаталогах.

Правильная эквивалентная команда в PowerShell будет выглядеть так:

rm C:\path\to\delete -r -fo

Обратите внимание, что -f в PowerShell является неоднозначным для -filter и -force и, следовательно, -fo необходимо использовать.

Ответ 2

Вы должны использовать:

Remove-Item C:\tmp -Recurse -Force

или (короткий)

rm C:\tmp -Recurse -Force

Ответ 3

rm -rf $dir в Unix означает удаление файла, а также:

-f, --force           ignore nonexistent files and arguments, never prompt
-r, -R, --recursive   remove directories and their contents recursively

Так что ближайшая команда в Powershell

Remove-Item -Recurse -ErrorAction:SilentlyContinue $dir
# the shorter form is
# rm -r -ErrorAction:SilentlyContinue $dir

Документация гласит:

-Recurse Указывает, что этот командлет удаляет элементы в указанных местоположениях и во всех дочерних элементах местоположений.

-ErrorAction:SilentlyContinue подавляет сообщение об ошибке и продолжает выполнение команды.

Обратите внимание, что -Force не совпадает с --Force.

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

Чтобы продемонстрировать, что -Force не "игнорирует несуществующие файлы и аргументы, никогда не запрашивать", если я rm -r -Force thisDirectoryDoesntExist, это приводит к следующей ошибке:

rm : Cannot find path 'C:\Users\makot\Documents\thisDirectoryDoesntExist' because it does not exist.