#はじめに
1年ぐらい悩んでいましたが、たった今、対策が見つかりましたのでご報告します。
#現象
GitBashでリダイレクトやパイプを使った時に、こんなメッセージが出てうまくいきません。
$ python bin/regression.py > out.txt
stdout is not a tty
毎回これが出る度に回避策を考える日々。
回避策(例)
- less が使えず、流れるメッセージを見つめ、見たいところでCtrl-Cで強制終了。その後スクロールバーをつかって見たいところを調整。
- リダイレクトできないため、プログラムでファイルに出力するコードを書く。もしくはDOSコマンドプロンプトを起動し、実行する。
Git Bashのttyで怒られないように も試したんですがうまくいかないんですよ。
#対応
(A) 本腰入れて調べてみました。するとこんな話を見つけました(参考文献参照)
コマンドに拡張子をつける
(自分) それだけ? うそやろ。根拠ねーじゃん。
(A) いい? じゃぁ、やってみるよ。(コマンドを実行)
$ python.exe bin/regression.py > out.txt
(自分) え、うそっ、動いてる。まじかよ。パイプはどうなってるっーーーー!!!?
(A) (コマンドを実行)
$ python.exe bin/regression.py | less
(自分) げ、出た。スペースで次のページ行けるよぉ。すげー。
(自分) 根拠?どーでもいいじゃん。動きゃいいんだよ!