web-dev-qa-db-ja.com

バッファなしの出力をサポートするcatの代替手段はありますか?

制御文字(cat -vなど)を表示しながら、EOF(入力はtail -fから)を待たずにstdinをstdoutにコピーするプログラムを探しています。 )。私はGNU | Linuxを持っています;インストールされているcat-uフラグを無視します。

4

GNU cat-uを無視します。これは、その出力が常にバッファリングされていないであるためです。したがって、-uを使用してバッファなしの出力を要求すると、それを取得します(ただし、要求しなくても取得します)。

GNU tailは、常にバッファリングされていない同じ動作をします。

これを証明するために、1つのシェルで次のことを行いました。

while :; do echo -ne "hello\t"; sleep 1;done > testtail

これは、単語「hello」の後にタブを毎秒追加します(改行なし)

私が行った別のシェルでは(cat -Tcat -vに似ています-タブは^ Iとして表示されます):

tail -f testtail | cat -T

それは私に与えます:

hello^Ihello^Ihello^Ihello^I ...

毎秒更新されます。

5
James Scriven

BSD cat-uオプションは、出力バッファリングを無効にしました。 man catから:

-u      Disable output buffering.
4
Daniel Beck