どちらかを使用すると、読みやすいテキストが得られます。しかし、stderrリダイレクトでのみ、1つのスクロールまたは/ somepatternと入力して一致を取得できます。
検索しないと、「検索するものはありません(RETURNを押す)」と〜の列が表示されます。
与えられた、stderrとstdoutは同じではありませんが、なぜlessで何かを始めるまで、lessがそれらを同じように表示しないのですか?
これは多分私が理解していない奇妙なマルチウィンドウvimのことです。考え?
+--------------------+ +------+ +----------+
| stdout |·······→| less |——————→| |
| somecommand | +------+ | terminal |
| stderr |——————————————————————→| |
+--------------------+ +----------+
somecommand
がテキストを標準エラーのみに出力する場合、somecommand | less
を実行すると、somecommand
とless
の両方がターミナルに表示されます。 stderrでのコマンドの出力はless
ではなく、リダイレクトされないため、ターミナルに直接出力されます。最初にsomecommand
の出力がスクロールし、lessが初期化してプロンプトラインを表示します。次に、somecommand
が終了すると、入力が完了したことが通知されます(パイプが閉じているため)。あなたは少し実験したいかもしれません:実行
{ sleep 1; somecommand; sleep 1; } | { sleep 0; less; }
そして、スリープ時間のバリエーションにより、lessの準備が完了する前または後にsomecommand
が出力を生成し、パイプが閉じているときに何が起こるかを確認します。