mkdir和mkdir -p之间的区别?

Rob*_*man 10 powershell command-line

我一直在关注学习如何在PowerShell中使用命令行界面的Learn Code the Hard Way的教程.在文章中,它告诉我使用的命令mkdir -p i\like\icecream.在底部,它解释了" mkdir -p即使所有目录都不存在,也会生成一条完整的路径".

我很困惑,因为mkdir i\like\icecream没有-p争论仍然做同样的事情.我已经尝试并完成了诸如创建"one"目录,然后创建"one\two\three"之类的mkdir东西,它将自动创建一个两个目录,以便放入三个.TowerShell会自动假设-p或者像这个?我对这个论点的作用感到茫然.

EBG*_*een 15

即使您没有完全给出,PowerShell也会尽力确定您的意思.因此,如果您使用该-p参数,则实际上是在使用-path.

对于mkdir函数,该-path参数告诉函数创建的路径.-path如果没有提供显式参数,默认情况下也是函数的第一个参数.因此,就函数而言,使用-p(-path)和不调用函数-p是完全相同的.

有关更多信息,请在shell类型中:

Get-Help mkdir
Run Code Online (Sandbox Code Playgroud)

我还要澄清一下,当你调用mkdir时,你真正在做的是调用New-Item cmdlet并将-ItemType参数指定为Directory.这就是您在运行该命令时看到New-Item帮助的原因.如果您想查看mkdir函数的实际代码以了解它是如何执行此操作的,请执行以下操作:

(get-command mkdir).ScriptBlock
Run Code Online (Sandbox Code Playgroud)

  • 我认为`-p`来自与`mkdir`的*nix变体的混淆,它确实在`-p`上有不同的行为,正如教程建议的那样,它也会创建任何缺少的父文件夹. (2认同)