我已经阅读了适用于Windows?的问题"rm-rf"?。我还尝试了以下命令:
$ rm app
$ rmdir /s /q app
$ rmdir -s -q app
$ rd /s /q app
以及许多其他变体。它总是提示我:
C:\ThisDirectoryDoesNotExist\app\中的项有子项,并且未指定Recurse参数。如果继续,所有子项都将与该项目一起删除。你确定要继续吗?
[Y] Yes[A]Yes to All[N]No[L]No to All[S]Suspend[?]Help(默认值为"Y"(:
当我选择A
时,它会抛出一个错误:
rm:无法删除项C: \ThisDirectoryDoesNotExist\app.git\objects\pack\pack-45e426475eb08ff5042bf88556fbedd3956fba53.idx:您没有有足够的访问权限来执行此操作。
我该怎么做?
只需按照建议指定递归参数:
rm -r app
如果文件夹包含隐藏或只读文件,请添加-Force
参数:
rm -r -fo app
这是的缩写
Remove-Item -Recurse -Force -Path app
如果你没有适当的访问权限,那么你当然可以不删除它。
背景
rmdir
和rd
是可以在命令提示符下调用的命令(不是可执行文件(。默认情况下,rm
不可用。例如,如果安装了MinGW环境,这三个术语也可能指向可执行文件。但它们在PowerShell中不可用,因为PowerShell将这些单词用作cmdletRemove-Item
:的别名
PS> 'rm', 'rmdir', 'rd' | Get-Command
CommandType Name Version Source
----------- ---- ------- ------
Alias rm -> Remove-Item
Alias rmdir -> Remove-Item
Alias rd -> Remove-Item
如果您有一些可用的工具作为可执行文件,您仍然可以在PowerShell中通过指定它们的完整路径来访问它们,例如:
PS> C:pathtoMinGWmsys1.0binrm.exe
但让我们坚持Remove-Item
。由于它是一个cmdlet,因此它需要某些参数或开关,如-Recurse
。您可以缩写它们,直到与其他可能的参数相比,它们保持明确。因此,您可以使用:
rm -r
例如,在bash中,您还可以传递以下两个参数:
rm -rf
当您将此命令发送到PowerShell时,它将尝试将-rf
与以rf
开头的参数相匹配,但该参数不存在。在PowerShell中,必须将每个参数分别传递给cmdlet。要传递-Force
参数,您必须至少写入-fo
,因为还有一个参数-Filter
,因此-f
将是不明确的。
总之,要在PowerShell中从bash获得等效的rm -rf
,您至少需要编写:
rm -r -fo
尝试使用这个:-
rmdir /s directory_name