是否有支持无缓冲输出的 cat 替代品?

是否有支持无缓冲输出的 cat 替代品?

我正在寻找一个程序,用于将 stdin 复制到 stdout,同时显示控制字符(如cat -v),而无需等待 EOF(输入来自tail -f)。我有 GNU|Linux;cat安装的会忽略该-u标志。

答案1

GNUcat忽略,-u因为它的输出是始终无缓冲。因此,当您使用 请求无缓冲输出时-u,您会得到它(但即使您不要求它,您也会得到它)。

GNUtail具有相同的、始终无缓冲的行为。

为了证明这一点,我在一个 shell 中做了以下操作:

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

每秒添加单词 'hello' 和一个制表符(无换行符)

在另一个 shell 中我做了(cat -T类似于cat -v——它将制表符显示为 ^I):

tail -f testtail | cat -T

这给了我:

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

每秒更新一次。

答案2

BSDcat-u选项禁用了输出缓冲。来自man cat

-u      Disable output buffering.

相关内容