$(MAKE)
содержит путь к текущей программе make, если вы не перезапишете его.
Если вы просто вызываете make
или имя вашей реализации make, $(MAKE)
должно содержать только это имя, так как ваша реализация make была вызвана через поиск PATH
. Проверьте это, например. вызов:
cd /usr/bin
./make -f /dev/null | grep MAKE
Если вы вызываете свою реализацию make через абсолютный или относительный путь, $(MAKE)
содержит абсолютный путь к вашей реализации make.
Это позволяет вам использовать $(MAKE)
в ваших файлах make таким образом, что вы всегда будете вызывать одну и ту же программу make, даже если это временный двоичный файл, скомпилированный с отладочными сообщениями и установленный где угодно.
BTW :Вы можете получить начальное значение, установленное вашей программой make, вызвав:
$make -f /dev/null -p | grep MAKE
Попробуйте выполнить команду без части awk
, и вы увидите, что там $3
нужно.
ip addr | grep -En 'inet (([0-9]*\.){3}[0-9]*)/24'
Команда без awk
даст вам что-то вроде этого.
11: inet 192.168.1.26/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp1s0
21: inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
Вы можете видеть, что первый столбец — это номер строки 11:
и 21:
. Затем идет inet
, а третий столбец — номер ip с маской. Независимо от того, что вы делаете с grep, к номеру IP всегда будет прикреплена сетевая маска. Если вы хотите избавиться от сетевой маски, вы должны использовать sed
или что-то, что также изменит ваши найденные строки. Grep будет отображать только то, что находит.
Попробуйте это:
ip addr | grep -En 'inet (([0-9]*\.){3}[0-9]{1,3})/24' | awk '{print "LAN:" $3 }' | sed -En 's/(LAN:.*)\/24/\1/p'
Я уверен, что это можно сделать более элегантно.
Это должно помочь:
ip addr | grep 'inet.*\/24' | grep -oE '(([0-9]*\.){3}[0-9]*)' | awk '{ print "LAN:"$1 }'
Первый grep ловит строки с сетями /24. Следующий соответствует адресам IPv4, аргумент -o
указывает grep напечатать только совпавшую часть строки. И awk заменяет «LAN :» в начале строки.
Теперь о том, почему ваш сниппет работает так, как вы просили. Без ключа -o
grep печатает всю строку с совпадением, затем awk печатает третий «аргумент», то есть третье «слово», разделенное пробелами.