linux中的hostname-i与hostname-i

linux中的hostname-i与hostname-i,linux,networking,command-line-interface,Linux,Networking,Command Line Interface,因此,我在谷歌上查看了hostname-I和hostname-I的输出之间的差异,但没有得到任何有意义的结果。 主机名-i的输出:127.0.1.1 主机名-I的输出:192.168.X.X。 我所能得到的只是: -i:此选项用于获取IP(网络)地址。仅当主机名可解析时,此选项才起作用。 -I:此选项用于获取所有IP(网络)地址。该选项不取决于主机名的可解析性。 如果有人能为我详细说明一下,那就太好了。从您问题中的信息,我推断您的问题是关于linuxhostname命令的。这一点很重要,因为该命

因此,我在谷歌上查看了hostname-Ihostname-I的输出之间的差异,但没有得到任何有意义的结果。 主机名-i的输出:
127.0.1.1
主机名-I的输出:
192.168.X.X
。 我所能得到的只是: -i:此选项用于获取IP(网络)地址。仅当主机名可解析时,此选项才起作用。 -I:此选项用于获取所有IP(网络)地址。该选项不取决于主机名的可解析性。
如果有人能为我详细说明一下,那就太好了。

从您问题中的信息,我推断您的问题是关于linux
hostname
命令的。这一点很重要,因为该命令的BSD风格(例如在macOS系统中发现的)具有不同的参数集

的手册页实际上非常具体地说明了差异,您已经发布了其中的摘录:

“正在解析的地址”(
-i
参数)表示它正在通过DNS解析。通过使用一些名称解析命令,如
nslookup
getenthosts
,可以获得类似的结果:


另一方面,
-I
迭代主机的所有网络接口,查看它们的实际配置情况。这意味着它通过完全不同的方法获取IP地址。

假设您的主机名设置为
myhost
hostname-i
尝试解析
myhost
。您的
/etc/hosts

127.0.0.1 myhost
这将
myhost
解析为
127.0.0.1

使用
hostname-I
可以获得网络接口的地址,显然没有环回地址。这些地址可能由DHCP分配

在您的输出
192.168.X.X
中,您只有一个接口与IPv4地址连接

我的Ubuntu 19.10系统在仅连接到WiFi时显示一个IPv4地址和一个IPv6地址,或者在同时连接到WiFi和以太网时显示两个IPv4和IPv6地址

  -i, --ip-address
         Display  the  network address(es) of the host name. Note that this works only if the host name can be resolved. Avoid
         using this option; use hostname --all-ip-addresses instead.
  -I, --all-ip-addresses
         Display all network addresses of the host. This option enumerates all configured addresses on all network interfaces.
         The  loopback interface and IPv6 link-local addresses are omitted. Contrary to option -i, this option does not depend
         on name resolution. Do not make any assumptions about the order of the output.
$ nslookup myhostname
Server:     127.0.0.1
Address:    127.0.0.1#53

Non-authoritative answer:
Name:    myhostname
Address: X.X.X.X