![「出力が tty ではありません」エラーはどういう意味ですか?](https://rvso.com/image/1476433/%E3%80%8C%E5%87%BA%E5%8A%9B%E3%81%8C%20tty%20%E3%81%A7%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%8D%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AF%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E6%84%8F%E5%91%B3%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
コマンドの出力をphp -i
ファイルに書き込もうとしましたphp -i > info
が、次のエラーが発生しました。
output is not a tty
それはどういう意味ですか?
git bash
Windowsで使用しています。
答え1
これに似たトピックを見つけました。私にとってうまくいった解決策の 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 への Peh のコメントに基づいて、私にとってうまくいったこと
C:\Program Files\Git\git-bash.exe の代わりに C:\Program Files\Git\bin\bash.exe を使用すると、コマンドは正常に動作します。
答え4
出力を端末 (tty) からファイルにリダイレクトしています。したがって、出力はもはや tty ではありません。
メッセージは完全に意味を成しています。ただし、これはエラーではありません。
この動作を Linux システムで再現することはできません。