有时需要本机的局域网地址,常见做法是使用ip a命令来查看,但是它输出的信息非常多,一下找不到,稍微看了一点awk的知识,我手动写了一个脚本,使用awk来过滤筛选信息
❯ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:16:3e:0e:60:55 brd ff:ff:ff:ff:ff:ff inet 172.18.9.28/20 brd 172.18.15.255 scope global dynamic eth0 valid_lft 315210632sec preferred_lft 315210632sec inet6 fe80::216:3eff:fe0e:6055/64 scope link valid_lft forever preferred_lft forever在~/.local/bin目录下新建文件ipa,内容为
#!/usr/bin/bash # use awk to filter ip address information ip a | awk '/^[0-9]+:/{ printf "+"; for(i=1; i<=58; i++){printf "-"} printf "+\n"; printf "|%-58s|\n" ,$2 }/inet.*/{printf "|%-6s%-52s|\n", " ",$2} END{printf "+"; for(i=1; i<=58; i++){printf "-"} printf "+\n"}'然后赋予执行权限
chmod +x ~/.local/bin/ipa然后就可以了(PATH变量应该包含~/.local/bin,没有的话可以添加在~/.zshrc或 ~/.bashrc中)
❯ ipa +----------------------------------------------------------+ |lo: | | 127.0.0.1/8 | | ::1/128 | +----------------------------------------------------------+ |eth0: | | 172.18.9.28/20 | | fe80::216:3eff:fe0e:6055/64 | +----------------------------------------------------------+如果只需要网卡对应的局域网ip地址的话还是很简洁的