在 powershell 中传递感叹号、括号作为可执行参数的一部分

passing exclamation, brackets as part of executable arguments in powershell

在 git 中,如果我们想从 diff 输出中排除一个文件(在 bash 上),我们会执行如下操作:

git diff -- !(file.txt)

但这在 powershell 中是不允许的。因此,有没有办法在 powershell 提示符下实现这一点?

只需单引号你的论点:

git diff -- '!(file.txt)'

单引号使 PowerShell 按字面意思处理字符串并阻止它解释字符。例如 ( 作为它自己的元字符。

在调用目标程序之前,PowerShell 根据需要在幕后重新引用参数;即:

  • 如果参数包含空格,它会将参数包含在 "..." 中,并且在某些不太常见的情况下也是如此(请参阅下面的 link)。

  • 它传递它 ,否则没有 引号。

注意:存在与这种不可见的重新引用相关的陷阱 - 请参阅