如何在 Powershell 中为特定命令设置别名?

Nod*_*rov 5 windows powershell

有一个我经常输入的命令:java -jar foo --param1 --param2, --param-n。如何创建命令别名来运行此命令,如下所示:

launch_foo --param3
Run Code Online (Sandbox Code Playgroud)

在哪里launch_foo翻译成完整的命令?

Ben*_*est 6

你必须创建一个函数。幸运的是,使用标准参数创建“别名样式”函数并不困难:

Function launch_foo { java -jar foo --param1 --param2 --param-n $args }
Run Code Online (Sandbox Code Playgroud)

您现在可以调用该函数 aslaunch_foo或 as launch_foo --param3。请注意,如果您不传入任何其他参数,$args则不会对函数中指定的默认参数$null产生任何影响[1] 。

现在,Powershell 中存在别名的概念,但别名是 cmdlet 或命令的备用名称,您不能向别名定义添加参数。您可以使用别名作为备用可执行文件或 cmdlet 名称。别名的一些示例:

Set-Alias v vim
Set-Alias list Get-ChildItem
Set-Alias 2json ConvertTo-Json
Run Code Online (Sandbox Code Playgroud)

v会跑vimlist会跑Get-ChildItem2json还会跑ConvertTo-Json


[1]请注意,这仅适用于外部命令。如果您尝试以这种方式为带有参数的 cmdlet 或函数添加别名,则$null参数将被评估为$null值($args如果$null未提供)。根据 cmdlet,这可能会引发错误、不起作用或产生不良效果。根据 cmdlet,您可能还需要 splat@args才能正确传递参数。