我想删除我使用以下方法创建的别名:
ip addr add 192.168.1.1 dev eth0 label eth0:100
Run Code Online (Sandbox Code Playgroud)
无需知道 IP 地址。基本上,我想做
ip addr del dev eth0 label eth0.100
Run Code Online (Sandbox Code Playgroud)
根据文档,它应该是有效的,而是给了我:
ip: RTNETLINK answers: Operation not supported
Run Code Online (Sandbox Code Playgroud)
同时,我使用
ip addr del $(ip addr list label eth0:100 | awk '{ print $2 }') dev eth0 label eth0.100
Run Code Online (Sandbox Code Playgroud)
你所拥有的是最好的路线(虽然我会使用grepover awk,但这是个人喜好)。原因是每个“标签”可以有多个地址。因此,您必须指定要删除的地址。
# ip addr help
Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]
[ CONFFLAG-LIST ]
ip addr del IFADDR dev STRING
ip addr {show|save|flush} [ dev STRING ] [ scope SCOPE-ID ]
[ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ]
ip addr {showdump|restore}
IFADDR := PREFIX | ADDR peer PREFIX
[ broadcast ADDR ] [ anycast ADDR ]
[ label STRING ] [ scope SCOPE-ID ]
Run Code Online (Sandbox Code Playgroud)
请注意ip addr del参数为IFADDR和 的语法STRING。IFADDR下面定义了,并且表示PREFIX是必需的参数(其中的内容[]是可选的)。PREFIX是您的 IP/子网组合。因此它不是可选的。
至于我关于使用的意思grep是这样的:
ip addr del $(ip addr show label eth0:100 | grep -oP 'inet \K\S+') dev eth0 label eth0:100
Run Code Online (Sandbox Code Playgroud)
这样做的原因是为了防止参数的位置发生变化。输出中的字段位置ip addr可以根据可选字段进行更改。我不认为这个inet领域会改变,但这只是我的偏好。