今回はちょっとした小ネタです。
Linuxで良く使うコマンドをmacOSでも使いたいなあと思うときがあります。 特にネットワークに繋がっているのに繋がらないときに確認するときなどです。
たいていはHomebrew等でインストールすれば解決できるのですが、ssコマンドのようなものはnetlinkと/procに依存していたりするので、このようなものの移植は難しいです。
それにipコマンドとifconfigコマンド、netstatコマンドのオプションとか覚えてられないので、関数定義することにしました。
これを~/.zshrcに書いてsource ~/.zshrcを実行すれば、私が良く使うコマンドは何とかなりそうです。
# ZSHを使っているので、その設定ファイルを開く
$ vi ~/.zshrc
...
#良く使うコマンドは関数定義
ss_natu() {
netstat -an | awk '
/^Active Internet connections/ {in_section=1; next}
/^Active/ && !/^Active Internet connections/ {in_section=0}
in_section {print}
'
}
# ss -natuじゃなくてss -antuと実行してたなと思って、どっちも効くようにエイリアスを設定
alias ss_antu='ss_antu'
ip_r() {
netstat -rn
}
ip_a() {
if [ -z "$1" ]; then
ifconfig
else
ifconfig "$1"
fi
}
...
# 追加した内容を適用
$ source ~/.zshrc
実際に実行してみます。 これで少しは「あのLinuxのコマンド、macOSにはないのだった」が減って安心できます。
% ss_natu
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 902 192.168.1.166.64295 17.57.156.39.993 ESTABLISHED
tcp6 0 0 240b:13:1cc0:aa0.64294 2404:6800:4008:c.993 ESTABLISHED
tcp6 0 0 240b:13:1cc0:aa0.64293 2404:6800:4008:c.993 ESTABLISHED
tcp6 0 0 240b:13:1cc0:aa0.64292 2600:1901:0:38d7.80 ESTABLISHED
tcp4 0 0 192.168.1.166.64291 34.107.221.82.80 ESTABLISHED
tcp4 0 0 192.168.1.166.64290 52.196.128.139.443 ESTABLISHED
tcp4 0 0 192.168.1.166.64288 34.107.221.82.80 ESTABLISHED
...
% ss_antu
(結果は上と同じ)
% ip_r
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 192.168.1.1 UGScg en0
default 192.168.1.1 UGScIg en1
127 127.0.0.1 UCS lo0
127.0.0.1 127.0.0.1 UH lo0
169.254 link#7 UCS en0 !
169.254 link#10 UCSI en8 !
169.254 link#17 UCSI en1 !
169.254.14.183 a:2c:b6:75:ea:7b UHLSW en8 475
...
% ip_a lo0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
nd6 options=201<PERFORMNUD,DAD>
