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