dea*_*904 0 windows powershell
我已经阅读了Windows 的“rm -rf”等价问题?. 而且我还尝试了以下命令:
$ rm app
$ rmdir /s /q app
$ rmdir -s -q app
$ rd /s /q app
Run Code Online (Sandbox Code Playgroud)
以及许多其他变体。它总是提示我:
C:\ThisDirectoryDoesNotExist\app\ 中的项目有子项,并且未指定 Recurse 参数。如果继续,所有子项都将随项目一起删除。你确定你要继续吗?
[Y] 是 [A] 全是 [N] 否 [L] 全否 [S] 暂停 [?] 帮助(默认为“Y”):A
当我选择时A,它会抛出一个错误:
rm:无法删除项目 C:\ThisDirectoryDoesNotExist\app.git\objects\pack\pack-45e426475eb08ff5042bf88556fbedd3956fba53.idx:您没有足够的访问权限来执行此操作。
我该怎么做?
sta*_*tor 13
只需按照建议指定递归参数:
rm -r app
Run Code Online (Sandbox Code Playgroud)
如果文件夹包含隐藏文件,则添加-Force参数:
rm -r -fo app
Run Code Online (Sandbox Code Playgroud)
这是以下的简短形式:
Remove-Item -Recurse -Force -Path app
Run Code Online (Sandbox Code Playgroud)
如果您没有适当的访问权限,那么您当然不能删除它。
背景
rmdir并且rd是您可以在命令提示符下调用的命令(不是可执行文件)。rm默认情况下不可用。例如,如果您安装了 MinGW 环境,则所有三个术语也可能指向可执行文件。但它们在 PowerShell 中不可用,因为 PowerShell 使用这些词作为 cmdlet 的别名Remove-Item:
rm -r app
Run Code Online (Sandbox Code Playgroud)
如果您有一些作为可执行文件可用的工具,您仍然可以通过指定它们的完整路径在 PowerShell 中访问它们,例如:
rm -r -fo app
Run Code Online (Sandbox Code Playgroud)
但让我们坚持Remove-Item。由于它是一个 cmdlet,它需要某些参数或开关,例如-Recurse. 您可以在此之前将它们缩写,与其他可能的参数相比,它们保持明确。因此,您可以使用:
rm -r
Run Code Online (Sandbox Code Playgroud)
例如,在 bash 中,您还可以传递两个参数,如下所示:
rm -rf
Run Code Online (Sandbox Code Playgroud)
当您将此命令发送到 PowerShell 时,它会尝试匹配-rf以 开头的参数,而该参数rf不存在。在 PowerShell 中,您必须将每个参数单独传递给 cmdlet。要传递-Force参数,您必须至少编写-fo,因为还有一个参数-Filter,因此-f会产生歧义。
总之,要rm -rf在 PowerShell 中获得与from bash等效的内容,您至少必须编写:
rm -r -fo
Run Code Online (Sandbox Code Playgroud)