Ich versuche, einen Windows PowerShell-Alias einzurichten, um die ausführbare g ++ - Datei von MinGW mit bestimmten Parametern auszuführen. Diese Parameter müssen jedoch nach dem Dateinamen und anderen Argumenten stehen. Ich möchte nicht die Mühe machen, eine Funktion einzurichten, und das alles. Gibt es eine Möglichkeit, einfach etwas zu sagen wie:
alias mybuild="g++ {args} -lib1 -lib2 ..."
oder so ähnlich? Ich bin mit PowerShell nicht allzu vertraut und habe Schwierigkeiten, eine Lösung zu finden. Jemand?
quelle
Function SCP-Filetransfer { cmd /c pscp.exe -i ~\.ssh\id_rsa.ppk $args } New-Alias -Force pscp SCP-Filetransfer
Es ist so etwas nicht eingebaut. IMHO ist eine Wrapper-Funktion der beste Weg, um so weit zu gehen. Aber ich weiß, dass einige Problemumgehungen erfunden wurden, zum Beispiel:
https://web.archive.org/web/20120213013609/http://huddledmasses.org/powershell-power-user-tips-bash-style-alias-command
quelle
rm
für Remove-Item.Um eine Funktion zu erstellen, speichern Sie sie als Alias und behalten Sie das Ganze für später in Ihrem Profil bei. Verwenden Sie:
$g=[guid]::NewGuid(); echo "function G$g { COMMANDS }; New-Alias -Force ALIAS G$g">>$profile
wo Sie durch
ALIAS
den gewünschten Alias undCOMMANDS
durch den auszuführenden Befehl oder die auszuführende Befehlsfolge ersetzt haben.Stattdessen können (und sollten!) Sie stattdessen einen Alias für das oben Gesagte erstellen, indem Sie:
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
Nur für den Fall, dass Ihr Gehirn von der gesamten Rekursion (Aliasing von Aliasen usw.) nach dem Einfügen des zweiten Codeblocks in Ihre PowerShell (und dem Neustart von PowerShell) auf den Kopf gestellt wurde, ist ein einfaches Beispiel für die Verwendung:
alias myEcho 'echo $args[0]'
oder ohne Argumente:
alias myLs 'ls D:\MyFolder'
Wenn Sie noch kein Profil haben
Die obige Methode schlägt fehl, wenn Sie noch kein Profil haben! Verwenden Sie in diesem Fall
New-Item -type file -path $profile -force
diese Antwort .quelle
ps | grep
Wogrep
ist ein Alias, der gut funktioniert? Wogrep
eine Funktion ist, hängt das Obige auf unbestimmte Zeit. Gibt es eine Problemumgehung dafür?>>
Erstellt eine Datei bei Bedarf, sodass zum Glück keine zusätzliche Logik erforderlich ist, um den Fall zu behandeln, in dem die$PROFILE
noch nicht vorhanden ist.Dies ist eine Beispielfunktion, die je nach Aufruf verschiedene Funktionen ausführt:
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} }
quelle