] Очевидно, это можно сделать проще с помощью []udevadm[
], и я только что узнал, как это сделать. [
]Чтобы получить []DEVNAME[
] из []udevadm[
] нужно только:[
udevadm info -rq name $PATH
]
[]Например, если вы хотите узнать имя []/dev[
] для []/sys/dev/char/5: 1[
] вы бы сделали:[
udevadm info -rq name /sys/dev/char/5:1
]
[/dev/console
]
[]Вариант []-r[
] заключается в указании пути []--root[
]ed - без него вышеприведенный результат будет считываться только с []console[
]. Опция []-q[
] указывает базу данных []--query[
] и здесь берет имя операнда []name[
] - потому что нам нужна []DEVNAME[
]. [
]Очень простой способ найти путь к символу char и/или блочному устройству, учитывая только мажор:минорные числа могут выглядеть так:[
] [mmdev() for d in /sys/dev/[cb]*/$1:$2
do [ -e "$d" ] || return
printf %c:%s: "${d#/*/*/}" "${d##*/}"
udevadm info -rq name "$d"
done
]
[]Так что запуск:[
] [mmdev 8 0
]
[]печатает...[
] [b:8:0:/dev/sda
]
[]Вот первое, что я написал.[
] [majminpath() {
set -- ${1##*[!0-9]*} ${2##*[!0-9]*}
udevadm info --export-db |
sed 's|^[^=]*DEVNAME=||
\|^[^/]|!h;/MAJOR=/N
\|='"$1\n.*=${2?}"'$|!d;g'
}
]
[]Это просто сканирует []вывод udevadm info --export-db[
] на наличие совпадающих чисел. Вывод выглядит так:[
P: /devices/virtual/vc/vcsa4
N: vcsa4
E: DEVNAME=/dev/vcsa4
E: DEVPATH=/devices/virtual/vc/vcsa4
E: MAJOR=7
E: MINOR=132
E: SUBSYSTEM=vc
P: /devices/virtual/vc/vcsa5
N: vcsa5
E: DEVNAME=/dev/vcsa5
E: DEVPATH=/devices/virtual/vc/vcsa5
E: MAJOR=7
E: MINOR=133
E: SUBSYSTEM=vc
#...and so on
]
[]Рабочий процесс похож: [
] [] попытка удалить строку [][^=]*DEVNAME=[
] из заголовка каждой строки[
], если в строке нет первого символа или первым символом является []/[
] копирование этой строки поверх []h[
] старое пространство[
] если строка совпадает с []MAJOR=[
], добавьте []N[
] внешнюю входную строку к шаблону пространства [
], если в шаблоне пространства 2 строки совпадают с []=$1\n. *=$2$[
] затем скопируйте []h[
] старое пространство поверх шаблонного пространства и выполните автопечать; в противном случае удалите шаблонное пространство[
]Так что если я сделаю:[
] [majminpath 7 133 ; majminpath 8 0 ; majminpath 8 1
]
[/dev/vcsa5
/dev/sda
/dev/sda1
]
[]Но, как указывает @xae, устройства блочного/зарядного типа могут разделять комбинации maj:min, и это может привести к печати более одного пути за вызов.[
].Я не являюсь экспертом на Lynx, но я могу рекомендовать в минуту как возможную альтернативу. Это пронумеровало ссылки, которые зарабатывают навигацию на странице очень просто. Он также имеет возможность выбирать отдельные изображения для просмотра по вашему просмотру выбора. У Lynx есть некоторые расширенные функции для сброса текста и ссылок, которые не имеют, но для простых просмотра ELINKS - хороший выбор. Он также имеет просмотр вкладок, который является звездной особенностью
Собственно, два вопроса:
Во-первых, когда у вас есть страница, заполненная ссылками, lynx
действительно предоставляет способы перемещения. Например, если у вас есть таблица со ссылкой в каждой ячейке, вы можете перемещаться влево/вправо, используя tab и back-tab (control-tab на многих терминалах), или клавиши курсора влево/вправо. Аналогично, вы можете перемещаться вверх/вниз, используя клавиши управления курсором вверх/вниз. Если вы не знакомы с привязкой клавиш, в Текущая карта клавиш (с помощью k) показаны клавиши и их использование.
Эти клавиши показаны в руководстве пользователя:
Navigating hypertext documents with Lynx The process of moving within a hypertext web, selecting and displaying links is known as "navigation." With Lynx almost all navigation can be accomplished with the arrow keys and the numeric keypad. +-------+-------+-------+ | TOP | /|\ | Page | arrow keys | of | | | UP | | text 7| | 8| 9| +---------+ +-------+-------+-------+ | SELECT | | | | | | prev /|\| | | | link | | | 4| 5| 6| +---------+---------+---------+ +-------+-------+-------+ | BACK | SELECT | DISPLAY | | END | | | Page | || | of | | | DOWN | | doc. | link \|/| link | | text 1| \|/ 2| 3| +---------+---------+---------+ +-------+-------+-------+
Одна из опций, которую вы можете установить, заставляет lynx
нумеровать поля и/или ссылки на экране. При этом вы можете набрать номер поля/ссылки, а затем g, чтобы перейти к этому полю/ссылке.
Во-вторых, lynx
(как и большинство браузеров) использует MIME-тип файлов, чтобы решить, что это за файлы, и mailcap, чтобы решить, как их отобразить. Как описано в руководстве пользователя:
Lynx and HTML Images As a text browser, Lynx does not display images as such -- you need to define a viewer in lynx.cfg: see there -- , but users can choose a number of ways of showing their presence. There are 3 choices in lynx.cfg, with 2 corresponding keys: MAKE_LINKS_FOR_ALL_IMAGES * IMAGE_TOGGLE MAKE_PSEUDO_ALTS_FOR_INLINES [ INLINE_TOGGLE VERBOSE_IMAGES no corresponding key You can also use the Options Menu, as outlined below: key lynx.cfg FM KM .lynxrc variable in source * MAKE_LINKS_ Y N N clickable_images [ MAKE_PSEUDO_ Y N N pseudo_inline_alts VERBOSE_ Y Y Y verbose_img
Эти опции указывают lynx
, показывать ли изображения как ссылки. Если это ссылки, то активация ссылки (нажатие enter) скажет lynx
отобразить изображение с помощью программы просмотра (которую вы, предположительно, настроили). Это внешняя программа. Вот несколько примеров из моей конфигурации:
VIEWER:application/postscript:gv %s&:XWINDOWS
VIEWER:application/pdf:acroread %s&:XWINDOWS