134

I use the command ip link in Linux. Now I want it on Mac OS X, but the Mac OS X terminal doesn't have ip. What should I use instead?

2
  • 1
    I think if the Linux community wants 'ip' to replace 'ifconfig' then it would be helpful for 'ip' to be available on both Unix and Linux. Jul 18, 2019 at 13:00
  • If with the Linux community you mean the OSS community, they did they part with iproute2mac and the iproute2 itself. The issue is that other Unix vendors don't even try to adopt it. Reasons they may have, but it is on their side. Sep 7, 2022 at 19:39

4 Answers 4

188

You can use brew to install iproute2mac. It's actually a Python wrapper that provides a very similar API that you'll likely find very familiar to the ip tool included with iproute2 on Linux.

Installation

$ brew install iproute2mac
==> Installing iproute2mac from brona/homebrew-iproute2mac
==> Downloading https://github.com/brona/iproute2mac/archive/v1.0.3.zip
######################################################################## 100.0%
🍺  /usr/local/Cellar/iproute2mac/1.0.3: 4 files,  24K, built in 2 seconds

Usage

Once installed you'll be given a command line tool that for all intent purposes mimics the ip command on Linux.

$ ip
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip -V
where  OBJECT := { link | addr | route | neigh }
       OPTIONS := { -4 | -6 }

iproute2mac
Homepage: https://github.com/brona/iproute2mac
This is CLI wrapper for basic network utilities on Mac OS X inspired with iproute2 on Linux systems.
Provided functionality is limited and command output is not fully compatible with iproute2.
For advanced usage use netstat, ifconfig, ndp, arp, route and networksetup directly.

Examples

Show IP addresses on interface en0.

$ ip addr show en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 54:46:12:fc:45:12
    inet6 fe80::3636:3bff:fecf:1294/64 scopeid 0x4
    inet 192.168.1.5/24 brd 192.168.1.255 en0

Show details about link en1.

$ ip link show en1
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 72:00:08:81:d2:10
    media: autoselect <full-duplex>
    status: inactive

References

0
10

Use the normal command for unix like systems: ifconfig.

(Linux also uses ifconfig, but some of the tools have newer versions. ip is one of these which one day will replace the old ifconfig.)

4
  • How I could install this ip command on Mac OS? I want some feature like add MAC-VLAN!
    – Aryan
    Dec 12, 2013 at 8:25
  • I am not sure you can. The whole world (well, except windows which uses ipconfig and some modern linuxes who use both ip and ifconfig) uses ifconfig. This includes OS X. I have no mac to test with, but I would look at the commands vconfig add n0 42 (configure VLAN 42 for the network interface EN0) followed by something like ifconfig en0.5 1.2.3.3 netmask 255.255.128.0 broadcast 1.2.3.255 up.
    – Hennes
    Dec 12, 2013 at 18:13
  • 1
    ifconfig outputs quite many unnecessary lines. If IP is everything you need use ifconfig | grep inet instead. Nov 21, 2015 at 15:09
  • 3
    Also, ifconfig is deprecated: google.de/…
    – oleiade
    Apr 2, 2016 at 7:45
3

There is a simpler way without installing any tools:

$ which ifconfig
/sbin/ifconfig

$ ifconfig en0 | grep inet | grep -v inet6 | cut -d ' ' -f2
10.16.45.123
1
  • 4
    This is the equvalent of ip address show, not ip link and its subcommands, which the OP asked for… Aug 5, 2020 at 11:28
0

There is no ip command in Mac. Get it from brew or use:

ifconfig en0| grep "inet[ ]" | awk '{print $2}'

You can create an alias in ~/.bash_profile as follows:

alias ip-addr="ifconfig en0| grep \"inet[ ]\" | awk '{print \$2}'"

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .