我尝试将命令的输出写入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 系统上重现此行为。