J'essaie de configurer un alias Windows PowerShell pour exécuter l'exécutable g ++ de MinGW avec certains paramètres. Cependant, ces paramètres doivent venir après le nom de fichier et d'autres arguments. Je ne veux pas passer par les tracas d'essayer de mettre en place une fonction et tout ça. Existe-t-il un moyen de simplement dire quelque chose comme:
alias mybuild="g++ {args} -lib1 -lib2 ..."
ou quelque chose de ce genre? Je ne connais pas très bien PowerShell et j'ai du mal à trouver une solution. N'importe qui?
Vous voulez utiliser une fonction, pas un alias, comme Roman l'a mentionné. Quelque chose comme ça:
function mybuild { g++ $args -lib1 -lib2 ... }
Pour l'essayer, voici un exemple simple:
PS> function docmd { cmd /c $args there }
PS> docmd echo hello
hello there
PS>
Vous pouvez également vouloir mettre cela dans votre profil afin de le rendre disponible lorsque vous exécutez PowerShell. Le nom de votre fichier de profil est contenu dans $profile
.
Il n'y a pas un tel moyen intégré. À mon humble avis, une fonction wrapper est la meilleure façon d'aller jusqu'à présent. Mais je sais que certaines solutions de contournement ont été inventées, par exemple:
Il s'agit d'un exemple de fonction qui fera différentes choses en fonction de son nom:
Function Do-Something {
[CmdletBinding()]
[Alias('DOIT')]
Param(
[string] $option1,
[string] $option2,
[int] $option3)
#$MyInvocation|select *|FL
If ($MyInvocation.InvocationName -eq 'DOIT'){write-Host "You told me to do it...so i did!" -ForegroundColor Yellow}
Else {Write-Host "you were boring and said do something..." -ForegroundColor Green}
}
Pour créer une fonction, la stocker en tant qu'alias et conserver le tout dans votre profil pour plus tard, utilisez:
$g=[guid]::NewGuid();
echo "function G$g { COMMANDS }; New-Alias -Force ALIAS G$g">>$profile
où vous avez remplacé ALIAS
par l'alias souhaité et COMMANDS
par la commande ou la chaîne de commandes à exécuter.
Bien sûr, au lieu de faire cela, vous pouvez (et devriez!) Créer un alias pour ce qui précède en:
echo 'function myAlias {
$g=[guid]::NewGuid();
$alias = $args[0]; $commands = $args[1]
echo "function G$g { $commands }; New-Alias -Force $alias G$g">>$profile
}; New-Alias alias myAlias'>>$profile
Juste au cas où votre cerveau se serait retourné de toutes les récursions (alias des alias, etc.), après avoir collé le deuxième bloc de code sur votre PowerShell (et redémarré PowerShell), un exemple simple de son utilisation est:
alias myEcho 'echo $args[0]'
ou sans arguments:
alias myLs 'ls D:\MyFolder'
La méthode ci-dessus échouera si vous n'avez pas encore de profil! Dans ce cas, utilisez New-Item -type file -path $profile -force
à partir de cette réponse .