Como criar um alias personalizado para as ferramentas do gnuwin32 no Windows Powershell

0

Eu tenho o gnuwin32 instalado e anexado ao meu ambiente, então eu executo o linux / unix "ls" quando eu digito ls no prompt de comando. Isso não é um problema para o Powershell, aparentemente, mas eu não estou conseguindo criar um alias personalizado, com o mesmo nome (ls) ou um nome diferente (lsa / ll / ld), e estou recebendo o seguinte erro :

The script failed due to call depth overflow.
+ CategoryInfo          : InvalidOperation: (0:Int32) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : CallDepthOverflow

Agora, aqui está o meu script do Powershell:

Set-Alias -name ls -value ListDirectory -Option AllScope

Function ListDirectory { 
    $Command = "ls -I ntuser\.* -I NTUSER\.*";
    Invoke-Expression $Command
}

Alguma ideia? Sobre os arquivos de ignorar, eu preciso deles. Só para ter certeza, este comando funciona muito bem no prompt de comando bom e velho, eu só estou tendo problemas no Powershell: (

    
por prubini87 09.06.2017 / 02:44

1 resposta

0

@LotPings Você estava correto! Adicionando ". Exe" a ls fez "o truque". Eu adicionei um loop para pegar eventuais argumentos que eu possa querer passar para ele e coloquei os argumentos dentro da minha variável $ Command. Não tenho certeza se fiz isso da melhor maneira, mas funciona! Ele Ele. Obrigado novamente!

# gnuwin32 "ls"
Set-Alias -name ls -value ListDirectory -Option AllScope

Function ListDirectory {
    $allArgs = "";
    For ($i=0; $i -lt $args.Length; $i++) {
        $allArgs += $args[$i] + " ";
    }

    $Command = "ls.exe $allArgs -I ntuser\.* -I NTUSER\.*";
}
    
por 09.06.2017 / 23:29