Команда Powershell: rm -rf
Я немного научился, и я все еще не уверен, что он делает. Я знаю, что rm удаляет элемент, но я не могу найти документацию по -rf. Всякий раз, когда я набирал help -rf, он печатал весь список доступных команд в powershell. Что произойдет, если вы наберете rm -rf в powershell? Из чтения я собрал, что он удалит все на диске? Я не уверен?
Кроме того, rm -rf такое же, как rm -rf/
Ответы
Ответ 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.