En tu pregunta, sé que usaste networksetup -listnetworkserviceorder ; sin embargo, usaría networksetup -listallhardwareports , ya que es más fácil analizar la salida usando awk , por sí mismo, con un mínimo de codificación para evitar múltiples pipe usa varios otros comandos como se ofrecen en la otra respuesta y debe ser lo suficientemente robusto como para producir una salida consistente hasta que Apple cambie el formato de salida de networksetup -listallhardwareports , si alguna vez lo hacen.
Como ejemplo en mi sistema, networksetup -listallhardwareports muestra lo siguiente:
$ networksetup -listallhardwareports
Hardware Port: Bluetooth DUN
Device: Bluetooth-Modem
Ethernet Address: N/A
Hardware Port: Display Ethernet
Device: en3
Ethernet Address: xx:xx:xx:xx:xx:xx
Hardware Port: Display FireWire
Device: fw0
Ethernet Address: xx:xx:xx:xx:xx:xx
Hardware Port: Wi-Fi
Device: en0
Ethernet Address: xx:xx:xx:xx:xx:xx
Hardware Port: Bluetooth PAN
Device: en2
Ethernet Address: N/A
VLAN Configurations
===================
$
Mirando las líneas relevantes de salida:
Hardware Port: Wi-Fi
Device: en0
La forma más fácil de obtener en0 , en este ejemplo es:
networksetup -listallhardwareports | awk '/Wi-Fi/{getline; print $2}'
Se puede asignar a una variable:
wifiDevice="$(networksetup -listallhardwareports | awk '/Wi-Fi/{getline; print $2}')"
Luego, puede usar $wifiDevice más adelante en el script para representar en0 , en este ejemplo.
Obviamente en tu sistema, según el resultado de tu pregunta, $wifiDevice sería: en1
Si desea usar networksetup -listnetworkserviceorder , entonces puede usar awk , de esta manera:
networksetup -listnetworkserviceorder | awk '{gsub(/\)/, "")}/Wi-Fi, Device/{print $5}'
Sin embargo, usaría mi primer ejemplo sobre esto.
También me mantendría alejado de usar system_profiler en este caso, ya que toma mucho más tiempo para que se genere la salida que cuando se usa networksetup .