奇怪的 Powershell "interactive" 行为
Strange Powershell "interactive" behavior
有时,在 Powershell 中使用某些命令时,控制台会设置为某种 "interactive mode",这使得它的行为方式对我来说完全无法使用,因此我必须重新启动控制台。我不确定这是 Powershell 中的错误还是我不知道的功能。
这是一种重现它的方法(然而,这并不是它发生的唯一方法):
- 将您的 Powershell 控制台导航到一个不太新的 Git 存储库,即至少有几十次提交。
- 输入
git reflog
.
- Git 显示最近
HEAD
个位置的列表,大部分时间是最后提交的列表。
- 按Ctrl+C或q退出列表并return到控制台。
- 可以选择按
cls
清除控制台屏幕。
现在,控制台处于这种奇怪的模式。当我开始打字时,控制台像往常一样接受一些输入的字符,但某些按键似乎让控制台显示前一个 git reflog
命令的片段。
这是一个例子:在一个新的 powershell 控制台中,我执行了上述步骤。然后我输入了abcdefghijklmn
。这是此控制台现在的样子:
如您所见,字符 j 和 l 被视为一些打印 git reflog
部分的命令输出到控制台 window,但 低于 提示。
这是错误还是功能?还有其他人遇到这些问题吗?
说明
less
(默认 Git 寻呼机)不会将 Ctrl+C 解释为退出命令。您可以打开一个新的控制台 window,其中 less
将是唯一附加到它的应用程序:start git reflog
以验证这一点。
当您按下 Ctrl+C 并且 less
不是附加到当前控制台 window 的唯一应用程序时,然后 Ctrl +C 被 shell(PowerShell 或 CMD)接收,并且 shell 要求用户提供更多输入。你可以在任务管理器中看到,当你按下 Ctrl+C 后,less
仍然是 运行,虽然 shell 为你打印了一个新提示.所以现在你有两个应用程序竞争单个控制台 window 输入缓冲区:第一个应用程序将接收一些密钥,而第二个应用程序将接收其他密钥。
解决方案
您需要多次键入 q 和 Enter 以确保 less
将收到其 q
.
有时,在 Powershell 中使用某些命令时,控制台会设置为某种 "interactive mode",这使得它的行为方式对我来说完全无法使用,因此我必须重新启动控制台。我不确定这是 Powershell 中的错误还是我不知道的功能。
这是一种重现它的方法(然而,这并不是它发生的唯一方法):
- 将您的 Powershell 控制台导航到一个不太新的 Git 存储库,即至少有几十次提交。
- 输入
git reflog
. - Git 显示最近
HEAD
个位置的列表,大部分时间是最后提交的列表。 - 按Ctrl+C或q退出列表并return到控制台。
- 可以选择按
cls
清除控制台屏幕。
现在,控制台处于这种奇怪的模式。当我开始打字时,控制台像往常一样接受一些输入的字符,但某些按键似乎让控制台显示前一个 git reflog
命令的片段。
这是一个例子:在一个新的 powershell 控制台中,我执行了上述步骤。然后我输入了abcdefghijklmn
。这是此控制台现在的样子:
如您所见,字符 j 和 l 被视为一些打印 git reflog
部分的命令输出到控制台 window,但 低于 提示。
这是错误还是功能?还有其他人遇到这些问题吗?
说明
less
(默认 Git 寻呼机)不会将 Ctrl+C 解释为退出命令。您可以打开一个新的控制台 window,其中 less
将是唯一附加到它的应用程序:start git reflog
以验证这一点。
当您按下 Ctrl+C 并且 less
不是附加到当前控制台 window 的唯一应用程序时,然后 Ctrl +C 被 shell(PowerShell 或 CMD)接收,并且 shell 要求用户提供更多输入。你可以在任务管理器中看到,当你按下 Ctrl+C 后,less
仍然是 运行,虽然 shell 为你打印了一个新提示.所以现在你有两个应用程序竞争单个控制台 window 输入缓冲区:第一个应用程序将接收一些密钥,而第二个应用程序将接收其他密钥。
解决方案
您需要多次键入 q 和 Enter 以确保 less
将收到其 q
.