我必须显示网络接口和附加的IP。
我想出了这段代码:
if [ -f intf ]; then
rm -I intf
fi &&
if [ -f ipl ]; then
rm -I ipl
fi &&
ip ntable | grep dev | sort | uniq | sed -e 's/^.*dev //;/^lo/d' >> intf &&
ip a | grep -oP "inet\s+\K[\w./]+" | grep -v 127 >> ipl &&
paste <(cat intf) <(cat ipl)
它完成了工作,但我相信它很难看:),创建文件,恕我直言:) 任何人都可以提出一个很好的方法来获得完全相同的结果但是短而有效的方式?
如果有几个接口,现在我正在考虑循环,但这会使这个代码更大,可能更丑:)你会建议什么?
答案 0 :(得分:0)
首先,您可以消除对具有进程替换的临时文件的需求:
paste <(ip ntable | grep dev | sort -u | sed -e 's/^.*dev //;/^lo/d') <(ip a | grep -oP "inet\s+\K[\w./]+" | grep -v 127)
sort -u
与sort | uniq
答案 1 :(得分:0)
此oneliner输出接口名称及其IP地址:
ifconfig |\
grep -e 'Link' -A 1 |\
paste -d" " - - - |\
grep ' addr' |\
sed -e 's/ */ /g' -e 's/Link.*addr://' |\
cut -d" " -f1,2
这里是命令的解释:
示例输出:
br-2065e5d2fc59 172.18.0.1
docker0 172.17.0.1
lo 127.0.0.1
wlp3s0