Christian Lehnert — Linux, Hacking & Faith
// tip of the week series →

ip -br - The Clean Way to Read Interface State

Christian Lehnert2026-07-03~3 min read

ip -br

You are on a call. Something is not routing. You type ip addr to
check the interfaces, and the terminal fills with a wall of text:
MAC addresses, MTU values, queue disciplines, IPv6 link-local
addresses, valid_lft and preferred_lft lifetimes, broadcast
addresses, flags in brackets. Every interface produces four to six
lines. On a host with a bridge, a few VLANs, a WireGuard tunnel,
and a Docker network, you are scrolling through forty lines to
find the one fact you wanted: which interface has which address,
and is it up.

The -br flag fixes this. It stands for "brief," and it collapses
each interface to a single line with only the fields that matter
for the question you are actually asking.

Plain ip link:

2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether a4:bb:6d:2f:18:c0 brd ff:ff:ff:ff:ff:ff
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/none

The same thing with ip -br link:

enp3s0           UP             a4:bb:6d:2f:18:c0 <BROADCAST,MULTICAST,UP,LOWER_UP>
wg0              UNKNOWN        <POINTOPOINT,NOARP,UP,LOWER_UP>

One line per interface. Name, operational state, MAC, flags. The
state column is the thing you are usually looking for: UP,
DOWN, or UNKNOWN (which is normal for tunnels and other
interfaces that do not report carrier).

The address version, ip -br addr, is the one I use most:

lo               UNKNOWN        127.0.0.1/8 ::1/128
enp3s0           UP             192.168.10.5/24 fe80::a6bb:6dff:fe2f:18c0/64
wg0              UNKNOWN        10.10.0.1/24
docker0          DOWN           172.17.0.1/16

Every interface, its state, and its addresses, in one screen. The
question "what has what address and is it up" is answered at a
glance instead of by scrolling and mentally filtering.

Add -c for color, which makes the state column green for up and
red for down, and the read becomes instant:

ip -c -br addr

The comparison, for the three commands operators reach for:

Command Output Use when
ifconfig Verbose, deprecated, not installed by default on modern distros Never, on a current system
ip addr Complete, verbose, every field You need the full detail (lifetimes, scopes, secondary addresses)
ip -br addr One line per interface, state plus addresses Every troubleshooting call, every quick check

ifconfig is in the table only to say: it is from the deprecated
net-tools package, it is not installed by default on current
Debian or RHEL, and its output format hides the distinction
between interfaces that plain ip makes clear. If your fingers
still type ifconfig, retraining them to ip -br addr is the
single highest-value networking-command habit change available.

Two aliases worth putting in your shell config:

1alias ipa='ip -c -br addr'
2alias ipl='ip -c -br link'

The practical rule: for daily use and for the first thirty
seconds of any network troubleshooting, reach for ip -br addr.
It answers "which interface, which address, up or down" in one
screen with no scrolling. Drop to the full ip addr only when you
need the details that brief mode omits, which is rarely, and only
after brief mode has already told you which interface to look at.
Brief first, verbose second. The wall of text is almost never what
you actually wanted.

Tagged:
#linux #networking #tip-of-the-week
// series
This is part of the tip of the week series — short, focused notes on Linux, BSD, and the shells, tools, and habits that hold them together. Shipped weekly.
← Back to posts