cat -v
制御文字 ( など) を表示しながら、EOF (入力は から) を待たずにstdin を stdout にコピーするプログラムを探していますtail -f
。GNU|Linux を使用していますが、cat
インストールされている はフラグを無視します-u
。
答え1
GNUはcat
出力-u
が常にバッファなししたがって、 でバッファリングされていない出力を要求すると-u
、それが取得されます (ただし、要求していない場合も取得されます)。
GNU もtail
、常にバッファリングされない同じ動作をします。
これを証明するために、私は 1 つのシェルで次の操作を実行しました。
while :; do echo -ne "hello\t"; sleep 1;done > testtail
これは、1秒ごとに「hello」という単語とそれに続くタブを追加します(改行なし)。
別のシェルで実行した (は、タブを ^I として表示する )cat -T
と似ています。cat -v
tail -f testtail | cat -T
つまり、次のようになります。
hello^Ihello^Ihello^Ihello^I ...
毎秒更新されます。
答え2
BSDcat
のオプションにより-u
出力バッファリングが無効になりました。man cat
-u Disable output buffering.