Используйте команду grep:
grep abc something.txt
Также обратите внимание, что использование $ 2
в оболочке относится ко второму аргументу (как вы, кажется, знаете), но в awk
] это отличается. Ваш вопрос, кажется, показывает неправильное понимание этого, поэтому я проясню его.
Оболочка требует $
для ссылки на значение переменной. Таким образом, вы обращаетесь к переменной с именем myvar
, записывая $ myvar
.
В awk
для ссылки на переменную с именем myvar
вы просто используете ее имя - myvar
. Чтобы сослаться на буквальную строку, содержащую буквы m-y-v-a-r, вы набираете «myvar»
.
$
в awk
предназначен для ссылки на поле с конкретным номером . Итак, $ 2
относится ко второму полю текущей строки файла. Или, если вы установите myvar = "4"
, тогда $ myvar
относится к четвертому полю файла.
Чтобы просто распечатать все строки файла, соответствующие заданному шаблону, используйте grep
- это то, для чего он предназначен.
В Linux сетевые интерфейсы вообще не имеют узла устройства в /dev
.
Если вам нужен список доступных сетевых интерфейсов, например. в скрипте загляните в каталог /sys/class/net/
; вы увидите одну символическую ссылку на каждый интерфейс. Каждый сетевой интерфейс с загруженным драйвером будет указан.
Программно вы можете использовать системный вызов if_nameindex()
:, см. этот ответ на Stack Overflow.
Также обратите внимание, что /dev
— это файловая система устройства .
устройство -дерево имеет особое значение :это машиночитаемое -описание состава аппаратного обеспечения системы. Он используется в системах, в которых нет аппаратных шин с поддержкой Plug -и -Play, или в которых оборудование не может быть обнаружено автоматически. Например, Linux на SoC ARM, таких как Raspberry Pi, использует дерево устройств.
Последовательность загрузки RasPi весьма интересна:см. этот вопрос на RasPi.SE.
Короче говоря, во время загрузки под управлением файла /boot/start.elf
графический процессор загружает соответствующие файлы /boot/*.dtb
и /boot/overlay/ *.dtbo перед запуском основного процессора ARM. Файл *.dtb
представляет собой скомпилированное дерево устройств в двоичном формате. В нем описывается аппаратное обеспечение, которое можно найти в каждой конкретной модели RasPi,и создается из исходного файла дерева устройств (.dts `), который представляет собой просто текст, отформатированный определенным образом.
Живой образ дерева устройств -ядра можно увидеть в :/sys/firmware/devicetree/base Per Ciro Santilli , его можно отобразить в формате.dts с помощью:
sudo apt-get install device-tree-compiler
dtc -I fs -O dts /sys/firmware/devicetree/base
Спецификацию формата файла дерева устройств можно найти здесь. Спецификация предназначена для -независимости от ОС. Вам также может понадобиться Справочник по дереву устройств для уточнения некоторых деталей.
Итак, ответ на ваш первоначальный вопрос таков:
/boot/start.elf
в соответствии с конфигурацией в/boot/config.txt
Код сканирования дерева устройств в основном занимается поиском допустимого драйвера для каждого элемента оборудования. Его не слишком заботит назначение каждого устройства :, это работа драйвера.
Драйвер использует соответствующую *_register_driver()
функцию ядра, чтобы задокументировать свое существование, берет соответствующую часть информации дерева устройств, чтобы найти фактическое оборудование, а затем использует другие функции для регистрации этого оборудования как находящегося под его контролем. После того, как драйвер инициализирует аппаратное обеспечение, он использует функцию ядра register_netdev()
, чтобы зарегистрировать себя в качестве нового сетевого интерфейса , что, среди прочего, сделает Sockets API (, который является просто еще одним интерфейсом. ядра, а не независимый объект как таковой ), знающий о существовании сетевого интерфейса.
Драйвер, скорее всего, зарегистрируется и для других целей. :В нем будет указан ряд ethtool
операций, которые он поддерживает для мониторинга состояния канала, статистики трафика и других функций низкого -уровня, а также драйвер для беспроводная сетевая карта также будет использовать register_wiphy()
, чтобы объявить себя беспроводным сетевым интерфейсом с определенными возможностями Wi -Fi.
Стек TCP/IP в Linux имеет много интерфейсов. :Berkeley Sockets API — та его сторона, которая наиболее знакома разработчикам приложений. Netdev API — это, по сути, другая сторона той же медали, обращенная к драйверу -.
wlan0 — это интерфейс, созданный интерфейсами в /etc/network/. Само устройство представляет собой конструкцию загружаемой прошивки для указанного интерфейса. Я говорю это, потому что wlan0 не является местоположением фактического оборудования. Это программно созданный интерфейс, предоставляющий операционной системе возможность взаимодействовать с аппаратным обеспечением через определение микропрограммы фактического устройства. Поскольку вы можете изменить прошивку, чтобы изменить поведение реального оборудования, добавить/удалить функции, изменить частоты и тому подобное.
O, а также ifup и ifdown — это в основном выключатели HeHehe...
См. :https://manpages.debian.org/stretch/ifupdown/interfaces.5.en.html
-Ага! это устройство, беспроводное карточное устройство, подобное обычному сетевому устройству eth0
, только это указывает/относится к беспроводному устройству...