コマンド実行

Posted on:

ovのExecモードを使用すると、コマンドを実行し、その出力を動的に表示することができます。また、--follow-allオプションを使用することで、最後に出力された方を表示することができます。これにより、コマンドの標準出力と標準エラー出力を別々に表示しながら、エラーがあれば画面を切り替えることができます。

特別な表示方法を使用しない限り、コマンドの出力は通常、標準出力と標準エラー出力を使用します。 リダイレクトやパイプを使用して、これらの出力をファイルに保存したり、他のコマンドに渡したりすることができますが、そのままだと、標準出力か標準エラー出力のどちらかを渡すことになります。

例えば、進捗や結果のみ見返したいと思って以下のようにした場合は、標準出力だけがovに渡されます。 もし、エラーにより止まっていた場合、その情報は表示されません。

make |ov

これらを両方とも渡すためには、リダイレクトを使用して、両方の出力を1つのストリームにまとめる必要があります。 2>&1は、標準エラー出力を標準出力にリダイレクトするためのシェル構文です。 これまでUnix系のシステムでは、この方法を使用して、両方の出力を1つのストリームにまとめていました。

make 2>&1 |ov

ただ、この方法では、標準出力と標準エラー出力が混在して表示されるため、出力がみづらくなり不便な場合があります。

ovのExecモードを使用すると、コマンドを実行し、その出力を標準出力と標準エラー出力で別々に見ることが可能です。

通常ページャーは実行した出力をパイプでovに渡しますが、STDOUTSTDERRをどちらか、または両方を混在させて表示することになります。

ovから実行することで、STDOUTSTDERRを別々のドキュメントとして表示できます。

さらに--follow-allと同時に使うことで、最後に出力された方を表示できます。

つまり、makeの標準出力とエラー出力を別々に表示しながら、エラーがあれば画面を切り替えできます。

ov --follow-all --exec -- make

ov-exec ov-exec

さらに、--notify-eofオプションを使用することで、コマンドの実行が終了したことを通知することもできます。

ov --follow-all --notify-eof --exec -- make