有时,在 Powershell 中使用某些命令时,控制台会设置为某种“交互模式”,这使得它的行为方式对我来说完全无法使用,因此我必须重新启动控制台。我不确定这是 Powershell 中的错误还是我不知道的功能。
这是一种重现它的方法(但是,这远不是它发生的唯一方式):
git reflog
. HEAD
的列表位置,大部分时间是最后提交的列表。 cls
清除控制台屏幕。 现在,控制台处于这种奇怪的模式。当我开始打字时,控制台像往常一样接受一些输入的字符,但有些按键似乎让控制台显示了以前
git reflog
的片段。命令。这是一个示例:在一个全新的 powershell 控制台中,我执行了上述步骤。然后我输入了
abcdefghijklmn
.这就是这个控制台现在的样子:如您所见,字符 j 和 l 被视为一些命令打印了
git reflog
的一部分。输出到控制台窗口,但 下面 提示。这是错误还是功能?还有其他人遇到这些问题吗?
最佳答案
less
(默认 Git 寻呼机)不会将 Ctrl+C 解释为退出命令。您可以打开一个新的控制台窗口,其中 less
将是唯一附加到它的应用程序:start git reflog
来验证这一点。当您按 Ctrl+C 和 less
时不是附加到当前控制台窗口的唯一应用程序,然后 Ctrl+C 被外壳(PowerShell 或 CMD)接收,外壳会要求用户提供更多输入。可以在任务管理器中看到按Ctrl+C后,less
仍在运行,尽管 shell 会为您打印一个新的提示。所以现在你有两个应用程序竞争单个控制台窗口输入缓冲区:一些键将由第一个应用程序接收,而其他键由第二个应用程序接收。您需要多次输入 q 和 Enter 以确保 less
将收到它的 q
.
关于powershell - 奇怪的 Powershell "interactive"行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40439693/