只需按建议指定递归参数:
rm -r app
如果文件夹中包含隐藏或只读文件,请添加
-Force
参数:
rm -r -fo app
这是缩写形式:
Remove-Item -Recurse -Force -Path app
如果您没有适当的访问权限,那么当然无法删除它。
背景
rmdir
和rd
是您可以在命令提示符上调用的命令(而不是可执行文件)。如果您安装了MinGW环境,则这三个术语也可能指向可执行文件。但是它们在PowerShell中将不可用,因为PowerShell使用这些单词作为cmdlet Remove-Item
的别名。
PS> 'rm', 'rmdir', 'rd' | Get-Command
CommandType Name Version Source
----------- ---- ------- ------
Alias rm -> Remove-Item
Alias rmdir -> Remove-Item
Alias rd -> Remove-Item
如果您有可用的一些工具作为可执行文件,您仍可以通过指定其完整路径在PowerShell中访问它们,例如:
如果你有一些工具作为可执行文件可用,你仍然可以通过指定它们的完整路径在PowerShell中访问它们,例如:
PS> C:\path\to\MinGW\msys\1.0\bin\rm.exe
但让我们仅使用Remove-Item
。由于它是一个命令,它希望传递某些参数或开关,例如-Recurse
。在此之前,您可以缩写它们,以使它们与其他可能的参数相比保持不含糊。因此,您可以使用:
rm -r
比如在bash中看起来像这样,您也可以像这样传递两个参数:
rm -rf
当您向PowerShell发送此命令时,它将尝试将 -rf
与以 rf
开头的参数匹配,但该参数不存在。在PowerShell中,您必须将每个参数单独传递给cmdlet。要传递 -Force
参数,您必须至少写入 -fo
,因为还有一个参数 -Filter
,因此 -f
将是模糊的。
总之,要从bash在PowerShell中获得 rm -rf
的等效命令,您至少需要编写:
rm -r -fo
rd /q /s
是用于 CMD 的命令,但是看起来你正在运行 PowerShell。你完全可以使用 CMD 来代替。而且这个问题与你正在使用的终端没有任何关系。这是一个关于 shell 的问题。 - undefinedRemove-Item : 无法找到接受参数 '/s' 的位置参数。
。我也可以使用git bash轻松删除文件夹。但这并不能回答我的问题。当然,它与新的Windows终端预览版有关,程序员们很快将默认使用它。它具有潜力。试一试,你就会明白。我只是需要使用这个新终端来删除文件夹。我不明白为什么这么难理解。 - undefinedrd
是remove-item
的别名,并且不支持与CMD的rd
命令相同的语法。打开一个CMD shell来运行rd /q /s
-- 在你喜欢的终端或控制台中。如果你从资源管理器中运行cmd.exe,你将得到经典的conhost.exe终端。在Windows Terminal中,你可以在新标签页中运行CMD,或者直接从PowerShell中运行cmd.exe。 - undefined