Simplified, stdbuf is a wrapper around stdio functionality. Line buffering of input streams is undefined in stdio; I can find no standards document that says what it means, so it is literally meaningless as far as the standards go.
Assuming behavior analogous to stdout line buffering, the line buffering of stdin would require calling read() once for each character read, because there is no other way to guarantee that you don't read past a newline on a descriptor. Since the point of buffering is to reduce the number of system calls, it is unsurprising that the stdio library doesn't implement this.
stdbuf
you only needstty
. There is no line buffering of input in the C library. Also I think what you really need in your tail|cut|uniq pipeline is line-buffered output on bothtail
andcut
. – Alan Curry Jul 26 '12 at 04:56