ifconfig を使用してネットエイリアスを削除できます コマンド:
/sbin/ifconfig eth0:100 down
ip のマニュアルによると コマンドでは、IP アドレスの削除にデバイス名のみが必要です。残りの引数はオプションです。引数が指定されていない場合、最初の IP アドレスがインターフェイスから削除されます。しかし、実際にはこの動作を再現できませんでした。
IP アドレスも必要なようです。
あなたが示した最後のコマンドは、式 ip addr list label eth0:100 | awk '{ print $2 }' のためだけに機能します ネット エイリアスの IP アドレスを指定し、この IP を ip addr delete ... に挿入します コマンド。
あなたが持っているのは最良のルートです(ただし、 grep を使用します 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 ]
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
これは、パラメータの位置が変更された場合に備えてです。 ip addr 内のフィールド位置 出力は、オプションのフィールドに基づいて変更できます。 inet とは思えない フィールドは変更されますが、それは私の好みです.