4 ms·
This article is confusing two different things: "unbuffered" vs "line-buffered". Unbuffered will gratuitously give you worse performance, and can create incorr
by o11c 2y ago
This article is confusing two different things: "unbuffered" vs "line-buffered".
Unbuffered will gratuitously give you worse performance, and can create incorrect output if multiple sources are writing to the same pipe. (sufficiently-long lines will intermingle anyway, but most real-world output lines are less than 4096 bytes, even including formatting/control characters and characters from supplementary planes)
Line-buffering is the default for terminals, and usually what you want for pipes. Run each command under `stdbuf -oL -eL` to get this. The rare programs that want to do in-line updates already have to do manual flushing so will work correctly here too.
You can see what `stdbuf` is actually doing by running:
env -i `command -v stdbuf` -oL -eL `command -v env`