如何在 Windows 上的 Git Bash 终端下发出 EOF 信号以关闭 stdin? Ctrl-D 不起作用

问题描述 投票:0回答:5

我正在编写一个命令行工具。该工具可以做的事情之一(当然不是唯一的)是从标准输入读取它的输入。当我注意到我不知道如何向它发出 EOF 信号时,我正在以交互方式测试此功能(通过键入输入,而不是放入文件)。

今晚我花了很多时间谷歌搜索这个并没有发现任何有用的东西。我也搜索过。请随时向我指出重复的问题,但我保证,我已尽职调查。

编辑:提到我在 Windows 上执行此操作可能会有所帮助(?)。所以我相信这个终端或多或少是一个品牌的 MinGW?

git bash terminal stdin eof
5个回答
8
投票

如果您尝试将 EOF 发送到 Windows 下的程序输入,

Ctrl-Z
就是您要寻找的。


6
投票

我在 Windows 上的 Git Bash 中使用的一个简单解决方法是捕获程序的输入。

例如,而不是跑步

java my_package.Main

你可以跑

cat | java my_package.Main

这是可行的,因为 cat 程序是一个 linuxy 程序,可以从终端接受消息结束,而 java 可以通过管道正确接收消息结束命令。

因此,使用此命令时,您可以在输入消息后键入 Ctl-D,java 程序将正确看到消息的结尾。


3
投票

它是 ^D,ASCII 传输结束字符。所有 GNU 用户区工具都将使用 POSIX 标准。


0
投票

“^d ^d”对我有用。只需将此字符串添加到输入的末尾即可成功。


0
投票

在登录命令前加上 winpty 前缀以在 Windows 中打开 TTY:

winpty docker login -u <username>
© www.soinside.com 2019 - 2024. All rights reserved.