django - sitio - Equivalente a Bash alias en PowerShell
install django (2)
Una pregunta novata de PowerShell:
Me gustaría hacer un alias en PowerShell exactamente equivalente a este alias de Bash:
alias django-admin-jy="jython /path/to/jython-dev/dist/bin/django-admin.py"
Al retocarlo hasta ahora, he encontrado que esto es muy difícil.
- Los alias de PowerShell solo funcionan con comandos de PowerShell + llamadas a funciones
-No hay forma clara de permitir una cantidad ilimitada de argumentos en una llamada de función de PowerShell
-PowerShell parece bloquear stdout
Vale la pena señalar que he intentado con la solución presentada aquí: http://huddledmasses.org/powershell-power-user-tips-bash-style-alias-command/
Y ha recibido el siguiente error relacionado con la sintaxis al cargar PowerShell:
The term ''which'' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spell
ing of the name, or if a path was included, verify that the path is correct and try again.
At C:/Users/Dan/Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1:9 char:27
+ $cmd = @(which <<<< $_.Content)[0]
+ CategoryInfo : ObjectNotFound: (which:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Los alias de PowerShell se pueden usar para cualquier "comando", incluidos EXE:
new-alias n notepad.exe
Actualización : como se menciona en los comentarios, los alias de PowerShell no permiten argumentos. Son simples "alias" para un nombre de comando y nada más. Para obtener lo que busca (creo que ya que no estoy familiarizado con los alias de Bash) intente esto:
function django-admin-jy {
jython.exe /path/to/jython-dev/dist/bin/django-admin.py @args
}
Utiliza una función de PowerShell 2.0 llamada splatting de argumentos. Puede aplicar @
a un nombre de variable que haga referencia a una matriz o una tabla hash. En este caso, lo aplicamos a la variable llamada args
que contiene todos los parámetros sin nombre.
Si desea una forma realmente genérica para crear funciones de alias que tomen parámetros, intente esto:
function New-BashStyleAlias([string]$name, [string]$command)
{
$sb = [scriptblock]::Create($command)
New-Item "Function:/global:$name" -Value $sb | Out-Null
}
New-BashStyleAlias django-admin-jy ''jython.exe /path/to/jython-dev/dist/bin/django-admin.py @args''
En cuanto al problema con el enfoque de Joel, sospecho que tiene un alias para Get-Command
. Intente reemplazarlo con Get-Command
.
Las funciones pueden tener arbitrariamente muchos argumentos. Solo necesita usar $args
para acceder a ellos.
En cuanto al problema estándar: ¿Qué estás experimentando exactamente?