Anda dapat menghapus alias bersih menggunakan ifconfig
perintah:
/sbin/ifconfig eth0:100 down
Menurut manual untuk ip
perintah, hanya nama perangkat yang diperlukan untuk penghapusan alamat IP. Argumen lainnya bersifat opsional. Jika tidak ada argumen yang diberikan, alamat IP pertama akan dihapus dari antarmuka. Tapi sungguh saya tidak bisa mereproduksi perilaku ini.
Sepertinya alamat IP juga diperlukan.
Perintah terakhir yang Anda tunjukkan berfungsi hanya karena ekspresi ip addr list label eth0:100 | awk '{ print $2 }'
berikan alamat IP dari alias net dan masukkan IP ini ke ip addr delete ...
perintah.
Apa yang Anda miliki adalah rute terbaik (walaupun saya akan menggunakan grep
lebih dari awk
, tapi itu preferensi pribadi). Alasannya adalah karena Anda dapat memiliki banyak alamat per 'label'. Jadi Anda harus menentukan alamat mana yang ingin Anda hapus.
# 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 ]
Perhatikan ip addr del
sintaks yang mengatakan parameternya adalah IFADDR
dan STRING
. IFADDR
didefinisikan di bawah itu, dan mengatakan PREFIX
adalah parameter yang diperlukan (hal-hal di []
bersifat opsional). PREFIX
adalah kombinasi IP/subnet Anda. Jadi itu bukan opsional.
Adapun apa yang saya maksud tentang menggunakan grep
, apakah ini:
ip addr del $(ip addr show label eth0:100 | grep -oP 'inet \K\S+') dev eth0 label eth0:100
Alasannya adalah jika posisi parameter berubah. Posisi kolom di ip addr
output dapat berubah berdasarkan bidang opsional. Saya tidak memikirkan inet
bidang berubah, tapi itu hanya preferensi saya.