Powershell mkdir和mkdir-p之间的区别?
我一直在学习如何在PowerShell中使用命令行界面。在本文中,它告诉我使用命令Powershell mkdir和mkdir-p之间的区别?,powershell,command-line,Powershell,Command Line,我一直在学习如何在PowerShell中使用命令行界面。在本文中,它告诉我使用命令mkdir-pilike\icecream。在底部,它解释了“mkdir-p将生成一个完整的路径,即使所有目录都不存在。” 我很困惑,因为没有-p参数的mkdir I\like\icecream仍然做同样的事情。我做过一些实验,比如创建一个“一”目录,然后用mkdir创建“一\二\三”,它会自动创建一个两个目录,让三个人放在其中。在这种情况下,PowerShell是否自动假定为-p或类似的情况?我不知道这个参数的作
mkdir-pilike\icecream
。在底部,它解释了“mkdir-p
将生成一个完整的路径,即使所有目录都不存在。”
我很困惑,因为没有
-p
参数的mkdir I\like\icecream
仍然做同样的事情。我做过一些实验,比如创建一个“一”目录,然后用mkdir
创建“一\二\三”,它会自动创建一个两个目录,让三个人放在其中。在这种情况下,PowerShell是否自动假定为-p
或类似的情况?我不知道这个参数的作用是什么。PowerShell尽最大努力确定您所指的参数,即使您没有完全给出它。因此,如果使用-p
参数,则实际上使用的是-path
对于mkdir函数,-path
参数告诉函数要创建的路径-path
默认情况下也是函数的第一个参数(如果未提供显式参数)。因此,就函数而言,使用-p
(-path
)调用函数和不使用-p
调用函数是完全相同的
有关详细信息,请在外壳类型中:
Get-Help mkdir
我还将澄清,当您调用mkdir时,您真正要做的是调用New-Item cmdlet并将-ItemType参数指定为Directory。这就是为什么在运行该命令时会看到新项目帮助。如果要查看mkdir函数的实际代码以了解它是如何实现的,请执行以下操作:
(get-command mkdir).ScriptBlock
如果我们使用
- 如果目录已经存在,mkdir,mkdir将抛出异常,因此我们需要检查 在同一路径上创建目录之前
- mkdirp,mkdirp始终自动检查目录是否存在于 指定的路径,因此无需执行任何检查
mkdir
,然后它抛出了-p
这个东西,它看起来没有什么不同。谢谢你的快速回答!我认为-p
源于与mkdir
的*nix变体的混淆,后者在-p
上的作用确实不同,正如教程所建议的,还可以创建任何缺少的父文件夹。powershell团队共同努力,提供别名和具有名称的函数,以使*nix管理员更舒适。有时我想它也会增加一些混乱。”(get命令mkdir).ScriptBlock“在我尝试它时没有返回任何内容(PowerShell 2.0,Windows 7)。