我在man cat(GNU/Linux)中遇到过这个问题.
手册只是说-u (ignored)没有解释原因.
出于好奇,我在谷歌搜索,但似乎没有人问过这个.
然后我看着其他实现的cat.
我注意到Apple的cat也实现了这个选项(参见cat.c).在它的源代码中说
...
case 'u':
setbuf(stdout, NULL);
break;
...
Run Code Online (Sandbox Code Playgroud)
我想这个选项意味着'无缓冲'.这个选项的使用是什么?它为什么存在,为什么被忽略?我认为必须有一些原因.
根据POSIX标准cat:
概要
Run Code Online (Sandbox Code Playgroud)cat [-u] [file...]...
OPTIONS
...
应支持以下选项:
-u 在读取每个字节时,无延迟地将输入文件中的字节写入标准输出.
这可以通过禁用输出缓冲来实现.
选项-u禁用缓冲stdout.
GNU文档如下:
对stdout使用无缓冲的I/O. 如果没有此选项,Posix不会指定行为.
这可能表明当前的默认行为cat是在没有缓冲的情况下输出.