---
name: "stdbuf"
section: "1"
platform: "macos"
package: "shell_cmds"
version: "329"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/stdbuf"
---

# stdbuf(1)

change standard streams initial buffering

## NAME

**stdbuf** – change standard streams initial buffering

## SYNOPSIS

**stdbuf** \[**-e** *bufdef*\] \[**-i** *bufdef*\] \[**-o** *bufdef*\] \[*command* \[...\]\]

## DESCRIPTION

**stdbuf** is used to change the initial buffering of standard input, standard output and/or standard error streams for *command*. It relies on [libstdbuf(3)](/libstdbuf/3.md) which is loaded and configured by **stdbuf** through environment variables.

The options are as follows:

- **-e** *bufdef*

  Set initial buffering of the standard error stream for *command* as defined by *bufdef* (see BUFFER DEFINITION).

- **-i** *bufdef*

  Set initial buffering of the standard input stream for *command* as defined by *bufdef* (see BUFFER DEFINITION).

- **-o** *bufdef*

  Set initial buffering of the standard output stream for *command* as defined by *bufdef* (see BUFFER DEFINITION).

## BUFFER DEFINITION

The buffer style and size is defined as follows:

- "0"

  unbuffered

- "L"

  line buffered

- "B"

  fully buffered with the default buffer size

- *size*

  fully buffered with a buffer of *size* bytes (suffixes 'k' and 'M' are accepted)

## EXAMPLES

In the following example, the stdout stream of the [awk(1)](/awk/1.md) command will be fully buffered by default because it does not refer to a terminal. **stdbuf** is used to force it to be line-buffered so [iostat(8)](/iostat/8.md)'s output will not stall until the full buffer fills.

```
# iostat 1 | stdbuf -o L awk '$2 > 1 || $5 > 1' | cat -n
```

## SEE ALSO

[setvbuf(3)](/setvbuf/3.md)

## HISTORY

The **stdbuf** utility first appeared in FreeBSD 8.4.

## AUTHORS

The original idea of the **stdbuf** command comes from Padraig Brady who implemented it in the GNU coreutils. Jeremie Le Hen implemented it on FreeBSD.
