“输出不是 tty”错误是什么意思?

“输出不是 tty”错误是什么意思?

我尝试将命令的输出写入php -i文件php -i > info并收到以下错误:

output is not a tty

这是什么意思?

git bash在 Windows 上使用。

答案1

我找到了类似的主题。 一个对我有用的解决方案:

php.exe -i > info

代替

php -i > info

因此,只需将.exe扩展附加到您的命令即可。

在这里找到了这个解决方案:https://stackoverflow.com/a/44727575/2377961

答案2

如果您碰巧在后台使用 winpty,则必须传递参数-Xallow-non-tty来修复此问题:

$ winpty python -c 'print("hello")' | grep h
stdout is not a tty

$ winpty -Xallow-non-tty python -c 'print("hello")' | grep h
hello

但是,如果输出被破坏,-Xplain则还需要该参数:

$ winpty -Xallow-non-tty python -c 'print("hello")' | xxd
00000000: 1b5b 306d 1b5b 304b 6865 6c6c 6f1b 5b30  .[0m.[0Khello.[0
00000010: 4b1b 5b3f 3235 6c0d 0a1b 5b30 4b1b 5b3f  K.[?25l...[0K.[?
00000020: 3235 68                                  25h

$ winpty -Xallow-non-tty -Xplain python -c 'print("hello")' | xxd
00000000: 6865 6c6c 6f0d 0a                        hello..

答案3

根据 Peh 对 stackoverflow.com/questions/33622087 的评论,对我有用的方法

如果您使用 C:\Program Files\Git\bin\bash.exe 而不是 C:\Program Files\Git\git-bash.exe 则该命令可以正常工作。

答案4

您正在将输出从终端 (tty) 重定向到文件。因此您的输出不再是 tty。

该消息完全合理。然而,这不应该是一个错误。

我无法在 Linux 系统上重现此行为。

相关内容