【问题标题】:Powershell Command: rm -rfPowershell 命令:rm -rf
【发布时间】:2012-05-13 16:57:32
【问题描述】:

rm 是删除项目,但-rf 的参数是做什么或表示什么?


每当我输入 help -rf 时,它都会在 powershell 中打印完整的可用命令列表。如果在 powershell 中键入 rm -rf 会发生什么?从阅读中我收集到它会删除驱动器上的所有内容?我不确定?

另外,rm -rf 和 rm -rf / 一样吗

【问题讨论】:

    标签: powershell command cmd rm


    【解决方案1】:

    PowerShell 不是 UNIX。 rm -rf 是 UNIX shell 代码,而不是 PowerShell 脚本。

    看到区别了吗?

    在 UNIX 上,单独的 rm -rf 是无效的。你通过rm 告诉它要做什么 remove 使用属性 r 表示 recursivef 表示 force,但是你没有告诉它应该采取什么行动。 rm -rf /path/to/delete/ 表示 rm (remove) 与目录 @ 上的属性 r (recursive) 和 f (force) 987654335@及其子目录。

    PowerShell 上正确的等效命令是:

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

    请注意,PowerShell 中的-f 对于-Filter-Force 是不明确的,因此需要使用-fo

    【讨论】:

    • 为了完整起见,PowerShell 等效项为rm \ -r -f。您可以在 PowerShell 中缩写参数名称,但不能堆叠它们。
    • 这个答案不正确。如果在 PowerShell 中执行 rm <path> -r -f,但路径不存在,则会引发异常。在 unix 中,如果在不存在的路径上运行 rm -rf <path>,则命令成功退出。这两个命令不等价。
    • PowerShell 等效项(不再是?)为真。如果你这样做,你会收到一个错误Remove-Item : Parameter cannot be processed because the parameter name 'f' is ambiguous. Possible matches include: -Filter -Force.但是你可以使用rm C:\path\to\delete -r -fo
    • PowerShell 命令不起作用。当我尝试rm path\to\delete -r -fo 时,我收到错误消息:Remove-Item: Cannot remove item path\to\delete: The directory is not empty。 : 'path\to\delete' 我使用的是 PS 版本 7.1.1
    • 我发现了 PS 命令不起作用的原因(在哪里)。如果我在 OneDrive 处理的文件夹中尝试它会失败,但它可以正常工作。微软请修复它!
    【解决方案2】:

    你必须使用:

    Remove-Item C:\tmp -Recurse -Force
    

    或(短)

    rm C:\tmp -Recurse -Force
    

    【讨论】:

    • 那么.. rm -rf / 在 powershell 中有什么作用?
    • 知道了,一开始你没有指定,所以我不确定。
    【解决方案3】:

    这是一个行为类似于rm -rf 的单行代码。它首先检查路径是否存在,然后尝试删除它。

    if (Test-Path ./your_path) { rm -r -force ./your_path}
    

    【讨论】:

    • 谢谢你,这是我正在寻找的正确答案。许多人忘记了 UNIX 的 -f 实际上允许静默忽略不存在的目录。
    猜你喜欢
    • 2011-02-28
    • 2015-08-17
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 2014-06-26
    • 2014-01-05
    • 1970-01-01
    相关资源
    最近更新 更多