ip() { case "$1" in public) echo "$(curl -s https://api.ipify.org | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}')" ;; internal) ipconfig getifaddr $(route get default 2>/dev/null | awk '/interface: / {print $2}') ;; private) ifconfig | awk '/^(utun|ppp)/ {iface=$1} iface && $1 == "inet" && $2 ~ /^10\./ {print $2; exit}' ;; *) echo "Usage: ip [public|internal|private]" return 1 ;; esac }