Если вы уверены, что wlan0
является интерфейсом, вы можете вернуть информацию только для этого интерфейса с помощью:
ifconfig wlan0
Теперь, когда у вас есть только одна строка с Bcast:
в ней (исключая tail
) вы можете использовать sed
для объединения функций grep
и cut
:
ifconfig wlan0 | sed -n 's/^.*Bcast:\(.*\) .*$/\1/p'
В этом случае sed -n
исключает обычную печать строк из ввода, и строка поиска совпадает со всей строкой, отмечая то, что находится между Bcast:
и следующим пробелом: подстановка является только этим отмеченным полем, а /p
переопределяет -n
и заставляет печатать. Обратите внимание, что для назначения этой строки псевдониму вам нужно будет использовать двойные кавычки и экранировать некоторые символы с обратной косой чертой или использовать одинарные кавычки, заменив те, что в приведенной выше команде на '\''
(хотя вы можете опустить результирующий окончательный ''
).
Наконец, если вы хотите убедиться, что wlan0
- это нужный вам интерфейс, а другие не настроены для доступа в интернет, вы можете узнать, какой интерфейс используется (вам может потребоваться установить networkctl
):
networkctl status | sed -n 's/^.*Gateway: .* on \(.*$\)/\1/p'
Это использует sed
в выводе networkctl
аналогично предыдущему . Теперь вы можете объединить их:
ifconfig $(networkctl status |\
sed -n 's/^.*Gateway: .* on \(.*$\)/\1/p')|sed -n 's/^.*Bcast:\(.*\) .*$/\1/p'
Это вряд ли аккуратно, но оно охватывает большую часть баз - в частности, если ваша беспроводная сеть не работает, а вы используете вместо нее Ethernet, она все равно должна работать. Если у вас оба интерфейса работают вместе, это еще более усложняется: я оставлю вас работать над этим (подсказка: вам нужно использовать /Gateway/,$
в качестве диапазона строк для команды s
и способ исключить записи IPv6).