Was bedeutet der Fehler „Ausgabe ist kein TTY“?

Was bedeutet der Fehler „Ausgabe ist kein TTY“?

Ich habe versucht, die Ausgabe des Befehls php -iin eine Datei zu schreiben php -i > infound habe die folgende Fehlermeldung erhalten:

output is not a tty

Was bedeutet das?

Ich verwende es git bashunter Windows.

Antwort1

Ich habe ein ähnliches Thema wie dieses gefunden. Eine Lösung, die bei mir funktioniert hat:

Schreiben

php.exe -i > info

anstatt

php -i > info

Fügen Sie Ihren Befehlen einfach die .exeErweiterung hinzu und es funktioniert.

Habe diese Lösung hier gefunden:https://stackoverflow.com/a/44727575/2377961

Antwort2

Wenn Sie zufällig Winpty im Hintergrund verwenden, müssen Sie das -Xallow-non-ttyArgument übergeben, um dies zu beheben:

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

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

Wenn die Ausgabe jedoch verstümmelt ist, -Xplainwird auch das Argument benötigt:

$ 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..

Antwort3

Was bei mir funktioniert hat, basierend auf Pehs Kommentaren zu stackoverflow.com/questions/33622087

Wenn Sie C:\Program Files\Git\bin\bash.exe anstelle von C:\Program Files\Git\git-bash.exe verwenden, funktioniert der Befehl einwandfrei

Antwort4

Sie leiten die Ausgabe Ihres Terminals (tty) in eine Datei um. Ihre Ausgabe ist daher kein tty mehr.

Die Meldung ist absolut sinnvoll. Es sollte sich jedoch nicht um einen Fehler handeln.

Ich kann dieses Verhalten auf einem Linux-System nicht reproduzieren.

verwandte Informationen