Что означает ошибка «выход не является tty»?

Что означает ошибка «выход не является tty»?

Я попытался записать вывод команды php -iв файл с помощью php -i > infoи получил следующую ошибку:

output is not a tty

Что это значит?

Я использую git bashWindows.

решение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

Что сработало для меня, основываясь на комментариях Пе на stackoverflow.com/questions/33622087

Если вы используете C:\Program Files\Git\bin\bash.exe вместо C:\Program Files\Git\git-bash.exe, то команда работает нормально.

решение4

Вы перенаправляете вывод из терминала (tty) в файл. Поэтому ваш вывод больше не является tty.

Сообщение имеет смысл. Однако это не должно быть ошибкой.

Я не могу воспроизвести это поведение в системе Linux.

Связанный контент