查看所有網卡裝置的指令 ip a
印出來的資料令人眼花撩亂;
可是大部分我都看不懂也沒在看。 可以只印看得懂的欄位就好嗎?
如果你的網路知識跟我一樣弱, 想要略過大部分資訊, 可以先安裝 zq,
然後在 ~/.bashrc 裡面加上這一句:
alias ipa="ip -j a | zq -f csv 'over this | {ifname,address,ip_addr:missing(addr_info[0].local)?\"\":addr_info[0].local} | fuse' - | column -s, -t"
那麼下次進入 bash, 就可以用 ipa 指令查看精簡版的資訊。
- 首先,
ip -j a
可以採用 json 格式輸出ip a
的結果。 - 再來請試試這個指令:
ip -j a | zq -f csv 'over this | {ifname,address}' -
這會叫 zq 只撈出 「裝置名稱」 與 「mac address」 兩欄, 採 csv 格式印出。 - 至於 ip 位址那一欄, 並不是每個裝置都有被分配到 ip 位址,
所以如果直接加上
addr_info[0].local
一欄, 經常會出錯。 這時要加上fuse
來安撫 zq。 請試試看:
ip -j a | zq -f csv 'over this | {ifname,address,ip_addr:addr_info[0].local} | fuse' -
。 這已經很接近我們要的答案, 只是輸出當中的警告訊息太冗長。 - 所以用三元運算子 "? :" 來判斷, 如果出錯, 就輸出空字串:
ip -j a | zq -f csv 'over this | {ifname,address,ip_addr:missing(addr_info[0].local)?"":addr_info[0].local} | fuse' -
- 最後把結果 pipe 給
column -s, -t
就得到整齊漂亮的輸出。 - 要寫成 alias 時, 需要把雙引號 escape 掉, 所以就得到文章最開始的那一句。
[註: 順便把所有的 jq 標籤通通改成 json; 所有談到 zq 的文章也加上 json 標籤。]
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。