`ドッカーはfooを記録します| less`は検索もスクロールもできませんが、 `docker logs foo 2>&1 | less`は


10

どちらかを使用すると、読みやすいテキストが得られます。ただし、stderrリダイレクトを使用する場合にのみ、1つのスクロールまたは/ somepatternと入力して一致を取得できます。

検索を行わないと、「検索するものは何もありません(RETURNを押す)」と〜の列が表示されます。

与えられた、stderrとstdoutは同じではありませんが、なぜlessで何かを始めるまで、lessがそれらを同じように表示しないのですか?

これは多分私が理解していないいくつかの奇妙なマルチウィンドウvimです。考え?

回答:


7
+--------------------+        +------+       +----------+
|             stdout |·······→| less |——————→|          |
| somecommand        |        +------+       | terminal |
|             stderr |——————————————————————→|          |
+--------------------+                       +----------+

somecommandテキストを標準エラーにのみ出力する場合、を実行するとsomecommand | lesssomecommandとのless両方が端末に表示されます。stderrでのコマンドの出力はになりlessません。リダイレクトされないため、直接端末に送られます。まず、somecommandlessが初期化してプロンプトラインを表示する間に、scroll の出力がスクロールします。次に、がsomecommand少なくなると、入力が完了したことが通知されます(パイプが閉じているため)。少し実験したいかもしれません:実行

{ sleep 1; somecommand; sleep 1; } | { sleep 0; less; }

somecommand以下の準備ができている前または後に出力を生成し、パイプが閉じているときに何が起こるかを確認するためのスリープ時間のバリエーション。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.