我正在寻找一个命令行解决方案,将返回我的主(第一个)IP地址的本地主机,而不是127.0.0.1

该解决方案至少适用于Linux (Debian和RedHat)和OS X 10.7+

我知道在这两个平台上都可以使用ifconfig,但是它的输出在这些平台之间并不一致。


当前回答

ip addr show | grep -E '^\s*inet' | grep -m1 global | awk '{ print $2 }' | sed 's|/.*||'

其他回答

ip addr show | grep -E '^\s*inet' | grep -m1 global | awk '{ print $2 }' | sed 's|/.*||'
ifconfig | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}'

只针对Ubuntu的某些版本。尽管它可能只告诉你127.0.0.1:

hostname  -i

or

hostname -I

在Linux上

hostname -I

在macOS

ipconfig getifaddr en0

hostname -I可以以不可靠的顺序返回多个地址(请参阅hostname manpage),但对我来说,它只返回192.168.1。X,也就是你想要的。

下面这个比较容易读: Ifconfig | grep 'inet addr:' |/usr/bin/awk '{print $2}' | tr -d addr: