如何在 Bash 提示符中显示主机 IP 地址?

如何在 Bash 提示符中显示主机 IP 地址?

像上面一样,我想在 PS1 或 bash 中显示 eth0 的 IPv4 地址(或其中的一部分)。有办法吗?

答案1

我在我的.bashrc

THEIP=$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | tail -1 | cut -d: -f2 | awk '{ print $1}')
PS1="\[\033[01;31m\]\u@"$THEIP" \w $\[\033[00m\] ";

这将向您显示以下提示:

[email protected] /opt/amazon/jungle $

删除\w以摆脱当前工作目录或使其\W成为部分工作目录

[email protected] jungle $

/etc/hosts您还可以使用以下命令,假设您的文件中只有一个 IP 地址:

THEIP=$(hostname -i)

答案2

免责声明:实际上并未尝试使本文变得不那么垃圾。

以下是实现该操作的方法...

PS1=$(ifconfig $(route -n | grep ^0.0.0.0 | awk '{print $NF}') | grep inet | grep -v inet6 | awk '{print $2}')

答案3

正如 Sirex 所述,您可以使用命令替换做很多棘手的事情,我更喜欢使用该ip实用程序进行以下声明:

export PS1="IP: $(ip addr show dev eth0 | grep "inet " | cut -d" " -f6) #"或类似的东西。

另一个选择是使用facter提供大量系统信息的工具,这样就可以简单地facter ipaddress_eth0为您提供 IP 地址。因此,新示例将是

export PS1="IP: $(facter ipaddress_eth0) #

facter允许您在需要时使用更多系统信息进行脚本编写。只需执行facter即可查看其整个配置中的内容。如果您愿意,您还可以在 中声明自己的事实/etc/facts.d

答案4

这是最简化的方式。您可以随意在 PS1 中添加您需要的任何其他角色。

IP=$(hostname -i)
PS1='$IP'

相关内容