如何在 bash 提示符下显示主机 IP 地址?

lan*_*ng2 7 bash

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

Som*_*ter 10

我在我的 .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\] ";
Run Code Online (Sandbox Code Playgroud)

这将向您显示以下提示:

root@1.2.3.4 /opt/amazon/jungle $
Run Code Online (Sandbox Code Playgroud)

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

root@1.2.3.4 jungle $
Run Code Online (Sandbox Code Playgroud)

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

THEIP=$(hostname -i)
Run Code Online (Sandbox Code Playgroud)

  • ifconfig 输出格式略有变化(我在 ubuntu 18.04 中使用 bash),如果 awk 命令略有调整,则 'cut' 命令似乎不需要,所以我使用:THEIP=$(ifconfig | grep 'inet) '| grep -v '127.0.0.1' | tail -1 | awk '{ print $2}') (2认同)

Sir*_*rex 5

免责声明:从字面上看,没有试图减少垃圾。

下面是这样做的方法......

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