コンテンツにスキップ

GNU Core Utilities/stdbuf

出典: フリー教科書『ウィキブックス(Wikibooks)』

stdbuf コマンドは、標準入力、標準出力、標準エラー出力のバッファリングモードを変更するためのユーティリティです。このコマンドは、通常、コマンドの実行時に出力のバッファリングを調整したい場合に使用されます。特に、パイプラインでの出力の遅延やリアルタイムでの処理に役立ちます。

stdbuf は、FreeBSD 8.4 で初めて登場し、GNU coreutils などで利用できますが、標準的な UNIX 環境では存在しないことが多いです。

基本的な使い方

[編集]
stdbuf [オプション] コマンド [引数...]

主なオプション

[編集]
主なオプション
オプション 説明
-i, --input 標準入力のバッファリングモードを設定
-o, --output 標準出力のバッファリングモードを設定
-e, --error 標準エラー出力のバッファリングモードを設定
--help ヘルプメッセージを表示
-v, --verbose 詳細な出力を表示

バッファリングモードの設定は、以下の3つのオプションを指定できます:

  • 0(無効化):バッファリングを無効化します。
  • 1(行単位バッファリング):行ごとにバッファリングを行います。
  • 2(全バッファ):全バッファモードで、通常の出力と同様にバッファリングが行われます。

[編集]

標準出力のバッファリングを無効化

[編集]
stdbuf -o0 command

command の標準出力のバッファリングを無効化し、即座に出力を表示します。

標準入力を行単位でバッファリング

[編集]
stdbuf -i1 command

command の標準入力を行単位でバッファリングします。

標準エラー出力を行単位でバッファリング

[編集]
stdbuf -e1 command

command の標準エラー出力を行単位でバッファリングします。

FreeBSD 版との違い

[編集]

stdbuf コマンドは、FreeBSD 8.4 以降に登場したユーティリティで、GNU coreutils とは異なる実装があります。FreeBSD では、このコマンドが標準で利用できる一方で、他の UNIX 系システムでは提供されていないことが多いため、代わりに手動でバッファリングモードを調整する必要があります。

FreeBSD 版の特長

[編集]
  • FreeBSD の stdbuf コマンドは、デフォルトで全バッファモード(-o2)に設定されています。
  • 出力の調整がシンプルに行え、パイプライン処理を行う際にリアルタイムでの結果表示が可能です。

詳しくは、それぞれの環境で man stdbuf を確認してください。