如何在 Windows Powershell 中为 gnuwin32 工具创建自定义别名

如何在 Windows Powershell 中为 gnuwin32 工具创建自定义别名

我已安装 gnuwin32 并将其附加到我的环境中,因此当我在命令提示符中键入 ls 时,我会运行 linux/unix“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\.*";
}

相关内容