Я надеялся, что кто-нибудь может объяснить постепенно, что делает каждая часть этой команды.

ifconfig | grep -Po "HWaddr \K.*$"

например, для чего -Po ?

1 ответ1

5

Что делает эта команда?

ifconfig | grep -Po "HWaddr \K.*$"

распечатывает MAC/ аппаратные адреса активных сетевых интерфейсов, имеющихся в вашей системе, если они доступны.


Кроме того, в Linux в целом вы можете узнать о программах и их переключателях, посмотрев их в man , например:

$ man ifconfig

$ man grep

(и т. д.) В противном случае поиск « <program name> руководство» или «использование <program name> » может ответить на подобные вопросы.

Ifconfig

ifconfig используется для отображения и настройки сетевых интерфейсов. От man ifconfig:

Ifconfig используется для настройки резидентных сетевых интерфейсов ядра. Он используется во время загрузки для настройки интерфейсов по мере необходимости. После этого он обычно требуется только при отладке или при настройке системы.

Если аргументы не указаны, ifconfig отображает состояние активных в данный момент интерфейсов. Если указан один аргумент интерфейса, он отображает только состояние данного интерфейса; если указан единственный аргумент -a, он отображает состояние всех интерфейсов, даже тех, которые отключены. В противном случае он настраивает интерфейс.

(акцент мой)

Здесь ifconfig сообщает о состоянии ваших текущих активных интерфейсов.

| (Труба)

Символ трубы - | - здесь перенаправляет вывод из ifconfig и вместо того, чтобы отображать его вам, вместо этого он переходит к grep

Grep

grep используется для сопоставления с образцом и (обычно) печати того, что соответствует образцу или нет.

Здесь доступны следующие опции: -P и -o

-P:

Интерпретировать PATTERN как регулярное выражение Perl (PCRE, см. Ниже). Это очень экспериментально, и grep -P может предупредить о невыполненных функциях.

Регулярные выражения - длинная тема 1, но в основном это позволяет grep сопоставлять некоторые дополнительные шаблоны.

-o:

Печатайте только совпадающие (непустые) части совпадающей строки, причем каждая такая часть находится на отдельной выходной строке.

(обе цитаты из man-страницы grep)

Эта опция сообщает grep что нас интересует только та часть, которая соответствует шаблону, а не вся строка (если она соответствует).

"HWaddr \K. * $"

Эта часть говорит нам о том, что мы ищем HWaddr (MAC или аппаратный адрес). \K устанавливает начальную точку того, что мы хотим напечатать (для опции -o выше). .* сообщает grep должен соответствовать любому символу (.) столько раз, сколько возможно (*), по крайней мере до конца строки ($).

Выход / Результат

Собрав все это вместе, команда берет информацию из ifconfig и ищет части, соответствующие MAC-адресам сетевых интерфейсов в системе, и выводит их на новую строку.


1: «Некоторые люди, сталкиваясь с проблемой, думают:« Я знаю, я буду использовать регулярные выражения.«Теперь у них есть две проблемы». Джейми Завински, 1997 (хотя цитата часто вырывается из контекста)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .