我经常要输入这个命令:java -jar foo --param1 --param2, --param-n
。我该如何创建一个命令别名,以便可以这样运行该命令:
launch_foo --param3
如何将launch_foo
翻译成完整的命令?
我经常要输入这个命令:java -jar foo --param1 --param2, --param-n
。我该如何创建一个命令别名,以便可以这样运行该命令:
launch_foo --param3
如何将launch_foo
翻译成完整的命令?
你需要创建一个函数。幸运的是,使用标准参数创建“别名风格”的函数并不难:
Function launch_foo { java -jar foo --param1 --param2 --param-n $args }
现在,您可以使用 launch_foo
或者 launch_foo --param3
来调用该函数。请注意,如果您没有传入任何其他参数,$args
将会是 $null
,并且不会对函数中指定的默认参数产生任何影响[1]。
现在,在 Powershell 中有别名的概念,但是别名只是命令或 cmdlet 的替代名称,您不能在别名定义中添加参数。您可以将别名用作可执行文件或 cmdlet 的替代名称。以下是一些别名的示例:
Set-Alias v vim
Set-Alias list Get-ChildItem
Set-Alias 2json ConvertTo-Json
v
将运行 vim
,list
将运行 Get-ChildItem
,2json
将运行 ConvertTo-Json
。[1]
[1] 注意,这仅适用于外部命令。如果您尝试以此方式别名化带参数的 cmdlet 或函数,则将评估为 $null
的参数作为 $null
值,如果未提供,则 $args
会是 $null
。根据 cmdlet 的不同,这可能会引发错误,无效果或产生不希望的效果。根据 cmdlet 的不同,您还可能需要展开 @args
以适当传递参数。
PATH
所在的任何bin文件夹中创建一个launch_foo.bat
文件。launch_foo.bat
文件中放置命令,例如:java -jar foo %1
。
%1
是在初始命令之后输入的第一个参数。launch_foo --param3
命令。对我来说,在Windows上这个解决方案非常有效。