問題タブ [tee]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - bash: stdout と stderr をファイルとターミナルにリダイレクト (および追加) し、適切な終了ステータスを取得します
stdout と stderr をファイルにリダイレクト (および追加) し、端末にも表示するには、次のようにします。
ただし、終了ステータスの正確な値を取得するためにこれを行う別の方法はありますか?
つまり、 をテストする場合、 の終了ステータスではなく、 の終了$?
ステータスを確認したいのです。command
tee
${PIPESTATUS[0]}
の代わりにここで使用できることはわかっています$?
が、チェックする必要のない別の解決策を探していPIPESTATUS
ます。
shell - bash シェルの stdout/stderr リダイレクト動作を示すチート シート
BASH シェル リダイレクトのさまざまな用途を示す優れたチート シートはありますか? そんなものを生徒たちに与えたいと思っています。取り上げてほしいいくつかの例:
(または、これをコミュニティ wiki にして、そのようなものをここに列挙することもできます)
ありがとう!
SetJmp
unix - Unixとtee—コマンドのチェーン
tee
Unix環境では、次のような一連のコマンドで使用したいと思います。
file
最終的なコマンドからの出力しか得られないのはなぜですか?
この説明のために、それらを分解してコマンドを個別に実行することはできないと仮定しましょう。
python - サブプロセスを使用するときにPythonでティーの動作を複製する方法は?
コマンドの出力をコンソールから非表示にせずにファイルに保存できるようにする Python ソリューションを探しています。
参考までに:私は、(Unix コマンド ライン ユーティリティとしての) teeについて質問していますが、Python intertools モジュールの同じ名前の関数については質問していません。
詳細
- Python ソリューション ( を呼び出し
tee
ていません。Windows では使用できません) - 呼び出されたプロセスの標準入力に入力を提供する必要はありません
- 呼び出されたプログラムを制御できません。私が知っているのは、stdout と stderr に何かを出力し、終了コードで戻るということだけです。
- 外部プログラム(サブプロセス)呼び出し時に動作させるには
- 両方のために働くため
stderr
にstdout
- stdout と stderr を区別できるのは、コンソールに 1 つだけを表示したい場合や、別の色を使用して stderr を出力しようとする場合があるためです。これは機能し
stderr = subprocess.STDOUT
ないことを意味します。 - ライブ出力 (プログレッシブ) - プロセスは長時間実行される可能性があり、終了するのを待つことができません。
- Python 3 互換コード (重要)
参考文献
これまでに見つけたいくつかの不完全なソリューションを次に示します。
- http://devlishgenius.blogspot.com/2008/10/logging-in-real-time-in-python.html (mkfifo は Unix でのみ動作します)
- http://blog.kagesenshi.org/2008/02/teeing-python-subprocesspopen-output.html (まったく動かない)
ダイアグラム http://blog.i18n.ro/wp-content/uploads/2010/06/Drawing_tee_py.png
現在のコード (2 回目の試行)
実質出力予想される出力は、行が順序付けられていることでした。Popen を 1 つの PIPE のみを使用するように変更することは許可されていないことに注意してください。
また、2番目のケースでもリアルタイムのようなアウトを取得できませんでしたが、実際にはプロセスが終了したときにすべての結果が受信されました. デフォルトでは、Popen はバッファーを使用しません (bufsize=0)。
linux - ティーが stdout に出力する順序は保証されていますか?
tee
次のようにLinuxでコマンドを使用してパイプを分割できます
printf "line1\nline2\nline3\n" | tee >(wc -l ) | (awk '{print "this is awk: "$0}')
出力を生成する
私の質問ですが、その印刷順序は保証されていますか? 行数をカウントするtee
分割パイプは常に最後に出力されますか? 常に最初に印刷する方法はありますか?それとも、印刷の順序はtee
保証されませんか?
perl - Perl、標準出力をリダイレクトしますが、親を維持します
perlでは、fork()
ingの後、子供のstdoutを次のようにファイルにリダイレクトできます
親の標準出力に標準出力を保持するだけでなく、指定されたファイルにコピーする「コピー」する方法があるかどうか疑問に思っています。これは、バッファリングを必要とせず、ユーザーがリアルタイムでコンソール出力を確認できるようにする必要があります。これは unix のようなものtee
です。しかし、理想的には、ソリューションにはサードパーティのライブラリが含まれていません。
powershell - PowerShellがtee-objectを使用するときにコンソールメッセージの色を削除する
tee-objectを使用しているときにPowerShellがコンソールメッセージの色を削除しないようにする方法はありますか?
tee-objectなしで実行すると、次のような素晴らしいエラーと冗長なPowerShellメッセージの色が表示されます。
ただし、tee-object(b / cコンソールとファイルにログを記録したい)を使用している場合、メッセージの色は次のようにコンソールに表示されません(ファイルに表示されないことはわかっています)。
PowerShellがtee-objectを使用して、コンソールに加えて出力をファイルに分割している場合、コンソールの書式設定が失われるのはなぜですか?
php - fgets(STDIN, 1024) が機能しなくなったのはなぜですか?
質問1
以前はゲーム サーバーの PHP パーサー ファイルにその行を使用していましたが、もう機能しません。あることは知っていますが、それはfopen("php://stdin")
1行ではなく3行のコードになりました.なぜPHPはこれを行うのでしょうか?
質問2
また、その方法を使用すると、パーサーが出力するコマンドをスクリプトが読み取らない原因となるこの出力が得られ続けます。どうすれば停止できますか?
Content-Type を text/plain に設定しようとしましたが、何もしませんでした...
基本コードは次のとおりです。
テールを使用して、ファイルに投稿されている行を PHP パーサーに送信し続け、解析された出力がティー経由で別のコマンド ファイルに送信されます。
c - 1 回の関数呼び出しで複数のファイル記述子に書き込む
サーバーがすべてのクライアントのソケットに共通の文字列を書き込む必要があるグループチャットサーバーのユースケースがありました。次に、ファイル記述子のリストをループし、各ファイル記述子に文字列を書き込むことで、これに対処しました。
今、私は問題に対するより良い解決策を見つけることを考えています. Linuxでティーシステムコールを使用して、サーバーからの単一の関数呼び出しでこれを行うことは可能ですか? 1 つのティーの出力を次のティーにもクライアント ソケットにも送信する必要があります。ティーの一方の端のファイル記述子をクライアントソケットに複製して、目的の効果を得ることができるかどうか疑問に思っています。
あなたが知っているユースケースの他の実装を提案してください。
ありがとう
stdout - チェーンされたアプリの途中から stdout を検査する
このチェーンの例を考えてみましょう:
2 番目の grep の内容の stdout と結果の stdout を調べたいと思います。
したがって、たとえば標準出力の内容をファイルにダンプし、チェーンに沿って標準出力を渡すツール UNKNOWN が必要です。
UNKNOWNというツールは存在しますか(WindowsとLinuxの両方の回答が関連しています)?