11

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

我很困惑,因为mkdir i\like\icecream没有-p争论仍然会做同样的事情。我已经尝试并完成了诸如创建一个“一”目录,然后创建“一\二\三”之类的mkdir东西,它会自动创建一个两个目录来放置三个。PowerShell会自动假设-p或类似的情况这?我对这个论点的作用感到茫然。

4

2 回答 2

15

PowerShell 会尽力确定您所指的参数,即使您没有完全给出它。因此,如果您使用-p参数,您实际上是在使用-path.

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

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

Get-Help mkdir

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

(get-command mkdir).ScriptBlock
于 2012-10-22T19:29:26.337 回答
0

如果我们使用创建目录,

  • mkdir,如果目录已经存在,mkdir会抛出异常,所以我们需要在同路径创建目录之前检查

然而

  • mkdirp, mkdirp 总是自动检查目录是否存在于指定路径上,因此不需要执行任何检查。
于 2018-09-05T12:57:24.147 回答