【发布时间】:2021-01-30 04:54:37
【问题描述】:
我想知道是否有任何简单的方法可以为 cmd 之类的 powershell 创建别名。
例如:在 cmd 中,doskey art=php artisan $* 其中$* 是可选的。目前,我在 powershell 中使用以下别名。
function runArtisanCommand
{
param(
[Parameter(Mandatory=$false, Position = 0, ValueFromRemainingArguments = $true)]
$command
)
php artisan $command
}
Set-Alias art runArtisanCommand
这有点作用,但不要带标志。例如:我不能写art -h 或art route:list -c。在art -h 命令中,它打印php artisan 的输出并且根本不读取标志,但在art route:list -c 命令中,它会出错。
runArtisanCommand : Missing an argument for parameter 'command'. Specify a parameter of type 'System.Object' and try again.
At line:1 char:16
+ art route:list -c
+ ~~
+ CategoryInfo : InvalidArgument: (:) [runArtisanCommand], ParameterBindingException
+ FullyQualifiedErrorId : MissingArgument,runArtisanCommand
我想要一个比这更简单的解决方案。提前致谢。
【问题讨论】:
-
function runArtisanCommand {& php artisan $args} -
作为 Mathias 给您的后续内容。您正在尝试为您的函数名称设置别名,这不是一回事。您可以直接在函数中设置别名。当然,别名是完整函数名的简称。函数动词-名词 { [CmdletBinding()] [Alias('vn')] 参数 ( )}。如果您只是按照 Mathias 向您展示的函数名称调用/运行您的函数,则不需要别名。要运行可执行文件,请参阅此处的选项:: • PowerShell: Running Executables
-
@postanote:如果您希望函数具有更长的名称,与短别名分开,请注意动词名词命名约定。但是使用
Set-Alias来定义别名本身并没有错——事实上,如果你不是目标函数的作者,你别无选择。此外,当您编写模块时,您可能希望将别名定义与函数定义分开以实现可维护性。 -
@postanote 虽然我很感激你在我的代码中指出一个问题并添加我之前不知道的信息 i:e "[Alias('xx')]",但我认为像 "除非代码导致错误或显着的性能差异,否则不应使用 that's not a thing”。像这样的短语可能会让初学者感到沮丧。我相信“先让它发挥作用,然后再遵循最佳实践”。 P.S:这是一个建议,而不是批评。 :)
标签: powershell terminal windows-10