Я обычно использую grep -o для этого:
grep -o '<td id="latest_button">..................................................'
Или в расширенном режиме:
grep -E -o '<td id="latest_button">.{50}'
Конечно, вы также получаете сам тег.
Никто еще не ответил на этот вопрос, но я придумал решение, так что отвечайте:
Я думаю, что наиболее правильным способом является использование /sys/class/block/*
, который содержит (символических ссылок на )доступных блочных устройств.
У него также есть свои разделы, которые вы захотите игнорировать и которые можно идентифицировать по наличию файла partition
. Этот файл недокументирован, поэтому YMMV.
Если они вам понадобятся позже, вы можете получить разделы определенных устройств, выполнив поиск каталогов с файлом partition
. например /sys/devices/**/sda/*/partition
. Файл также содержит номер раздела . Такой способ означает, что вам не нужно ничего знать о схемах именования устройств/разделов ядра, поэтому я рекомендую его.
Обратите внимание, что /sys/block
не имеет разделов, по крайней мере, в моей системе, но вы не должны полагаться на это.
После получения доступных блочных устройств вы, вероятно, захотите что-то с ними сделать, поэтому, чтобы получить их файлы устройств , вы можете прочитать major:minor
из недокументированного файла dev
и просто найти соответствующее устройство в /dev
.
Если вам нужны их размеры, вы можете использовать недокументированный файл size
, который содержит device size / 512
. Всегда 512. Это тоже есть в разделах. Разделы также имеют поле start
, которое соответствует partition start / 512
на диске. Они «задокументированы» в этом забытом патче, который, если верить, означает, что эти файлы были стабильными и недокументированными уже около 20 лет. Итак.. ♀️
Если вам нужны модели устройств , вы можете использовать аналогичный недокументированный файл ../../model
относительно устройства в /sys/devices/
. Это может быть задокументировано здесь , но я, честно говоря, не могу сказать, применимо ли это здесь или нет.
Вы также можете получить имя каталога устройства, т.е. /sys/devices/**/sda
— это полный путь к блочному устройству, а имя sda
, вероятно, существует в /dev
.
Но я бы не стал полагаться на это, технически /dev
может иметь причудливые имена для вещей, поэтому я рекомендую искать dev для соответствия major:minor
, чтобы не зависеть от имен файлов устройств.
Некоторая информация об этом задокументирована здесь , но