在bash中,我有一堆别名将参数添加到现有程序/函数中,例如:
alias grep='grep --color'
Run Code Online (Sandbox Code Playgroud)
我知道这不是最好的类比,但是在Powershell中有没有简单的方法可以做到这一点?似乎Set-Alias不允许您指定参数。
您可以为cmdlet创建别名,但是不能为包含cmdlet及其参数的命令创建别名。
他们建议创建一个新的cmdlet来执行此操作,但是我希望能够传递其他参数而不必在新cmdlet中对所有允许的参数进行硬编码(例如New-ProxyCommand似乎需要您执行此操作)。这样,我不必知道代理/别名的cmdlet参数何时发生变化,也不必在代理cmdlet中进行更改。
那么什么是最好的解决方案
虽然语法可能是错误的,但我能想到的最接近以下内容。似乎也无法在管道系统中发挥最佳效果,但是可以通过某种方式解决。
& $proxiedcommand $additionaldefaultparams $rawparamsfromread-host
Run Code Online (Sandbox Code Playgroud)
还是有一种使用代理cmdlet的东西动态实例化参数的方法,如下所示?
function aliased-cmdlet
{
[CmdletBinding((Get-Command Original-Cmdlet)._cmdletBindingsettings_)]
Param(
(Get-Command Original-Cmdlet)._paramsettings_)
)
Original-Cmdlet -CustomDefault Value -Whatever Else
}
Run Code Online (Sandbox Code Playgroud) 如何在Perl中加载不在@INC中的路径的模块?
我已经阅读了如何添加@INC路径的答案,但问题是必须在代码的开头更改@INC.编译完成后,我遇到的所有模块都会查找@INC以查找模块的位置.我的问题是我们试图将所有这些环境特定的东西分离到配置文件中.如果它在配置文件中,则需要先读取路径才能将其推送到@INC,但是代码已经编译好了,似乎无法修改@INC.