[英]What does “-” do in Powershell
我是PowerShell的新手,但我仍在尝试了解语法。 在这样的命令中
Get-ChildItem *.txt | Rename-Item -NewName { $_.name -Replace '\.txt$','.log' }
是做什么的-
实际上是什么? 有时它在那里,有时没有,我只是不明白它具有xD的目的
PowerShell中的连字符具有多种特定于上下文的用途。 它主要用于cmdlet名称,参数,运算符,当然也用作字符文字。
它通常用作动词-名词分隔符,例如Get-ChildItem
。 在制作自定义函数和cmdlet时,这也是一种鼓励的做法。
用于告诉解析器单词代表参数,例如Rename-Item -NewName
。 在示例中,它是-NewName
这是一个广泛的部分,但您会在代码示例中看到连字符表示-replace
运算符。 它也不总是与关键字相关联,而算术运算符( -
)和赋值运算符( -=
)就是这种情况。 您还将看到带有比较,包含,模式匹配/文本和逻辑/按位运算符的连字符。
-LiteralPath
是使用-
的含义。 这是给参数的。
在您的示例中, -NewName
被视为参数,而-Replace
是运算符
编辑:正如彼得正确指出的那样; 修改答案
在Powershell中,已将特定cmdlet的所有参数定义为以“-”开头。 它指示参数用于相应的cmdlet。
所有cmdlet都是用Csharp或Powershell函数编写的函数,它们定义了传递参数自变量的方式,例如:
Get-ChildItem *.txt | Rename-Item -NewName { $_.name -Replace '\.txt$','.log' }
Get-Childitem是具有-include参数的cmdlet,其值为**。txt *。 因此,即使您没有提供参数名称,powershell仍可以通过本机识别某些参数值。 这就是它没有问题的原因。
类似地,当将第一个cmdlet的输出传递到第二个cmdlet(即Rename-item)时,它具有参数-NewName,其值已作为整个{$ _。name -Replace'.txt的输出传递$','。log'}
希望对您有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.