有时需要本机的局域网地址,常见做法是使用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地址的话还是很简洁的