我知道如何从提供所有路由详细信息的路由表中删除路由 ( ip r d ...
)。
有没有办法列出带有某种索引的路由表,然后通过索引从其位置中删除?
答案1
这是一个简单的 bash 脚本,它利用内置select
命令来显示菜单。
#!/bin/bash
mapfile -t routes <<<"$(ip route)"
select var in "${routes[@]}"
do [ -n "$var" ] && sudo ip route del $var
done
它将当前路由读取到 array 中routes
,然后select
将它们显示在菜单中,例如:
1) default via 192.168.0.254 dev p4p1
2) 169.254.0.0/16 dev p4p1 scope link metric 1002
3) 169.254.0.0/16 dev p4p2 scope link metric 1003
#?
在提示符下#?
键入要删除的行,例如1
并返回。这设置var
为 旁边显示的字符串1)
,该字符串前面添加了sudo ip route del
命令。输入文件结尾control-d来结束。