function __fish_print_addresses --description "List own network addresses with interface as description" # if --all is given, also print 0.0.0.0 and :: if contains -- --all $argv echo -e "0.0.0.0\tall" echo -e "::\tall" end if command -sq ip command ip --oneline address | string replace -r '^\d+:\s+(\S+)\s+inet6?\s+([^\s/]+).*' '$2\t$1' else if command -sq ifconfig # This is for OSX/BSD # There's also linux ifconfig but that has at least two different output formats # is basically dead, and ip is installed on everything now ifconfig | awk '/^\tinet/ { print $2 } ' end end