Как создать пользовательский псевдоним для инструментов gnuwin32 в Windows Powershell
Я установил gnuwin32 и добавил его в свою среду, поэтому я запускаю linux/unix "ls" при вводе ls в командной строке. Это не проблема для Powershell, по-видимому, но я не могу создать собственный псевдоним с тем же именем (ls) или с другим именем (lsa/ll/ld), и я получаю следующую ошибку:
The script failed due to call depth overflow.
+ CategoryInfo : InvalidOperation: (0:Int32) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : CallDepthOverflow
Теперь вот мой скрипт Powershell:
Set-Alias -name ls -value ListDirectory -Option AllScope
Function ListDirectory {
$Command = "ls -I ntuser\.* -I NTUSER\.*";
Invoke-Expression $Command
}
Есть идеи? Насчет игнорирования файлов они мне нужны. Просто чтобы убедиться, что эта команда прекрасно работает в старой доброй командной строке, у меня проблемы только в Powershell:(
1 ответ
@LotPings Вы были правы! Добавление ".exe" в ls сделало "трюк". Я добавил цикл для получения возможных аргументов, которые я мог бы передать ему, и поместил аргументы в переменную $Command. Я не уверен, что сделал это наилучшим образом, но это работает! Хехе. Еще раз спасибо!
# 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\.*";
}