关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。












想改善这个问题吗?更新问题,以便堆栈溢出为 on-topic

2年前关闭。



Improve this question




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

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

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

最佳答案

使用 grep 过滤来自 ifconfig 的 IP 地址:
ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'
或使用 sed :
ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'
如果您只对某些接口(interface)、wlan0、eth0 等感兴趣,那么:
ifconfig wlan0 | ...
例如,您可以在 .bashrc 中为命令设置别名,以创建您自己的名为 myip 的命令。
alias myip="ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'"
更简单的方法是 hostname -I(hostname -ihostname 的旧版本,但请参阅评论)。但是,这仅适用于 Linux。

关于bash - 如何在 Linux 和 OS X 上获取本地机器的主 IP 地址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13322485/

10-13 09:06