Сопоставьте ключи в lynx для запуска shell-команды
Можно ли добавить пользовательскую раскладку ключей в lynx (в файле конфигурации ~/.lynxrc), которая отправляет информацию (например, текущий URL, html, заголовок и т. Д.) В команду оболочки?
Пример использования: я на OSX, и у оболочки есть команда open
, который пытается открыть все, что ему дано по умолчанию. Итак, если я нахожусь в Lynx и хочу переместить текущую веб-страницу в браузер по умолчанию, я бы хотел позвонить open current-url
из скорлупы
Другое: сопоставление организованного файла закладок путем отправки URL-адреса и заголовка в сценарий оболочки (или что-то еще).
Использование раскладки по умолчанию !
открывает оболочку по умолчанию, но она не дает мне URL, и при этом она не запускает единственную команду и возвращается к lynx, как я хотел бы для этого.
Любые идеи очень приветствуются.
1 ответ
Я фактически закончил тем, что нашел пару способов справиться с этим. Некоторые из них более идеальны, чем другие. Потребовалось немного покопаться в файле lynx.cfg по умолчанию, чтобы понять это.
Ниже приведены два наиболее успешных способа отправки информации в команду оболочки из lynx:
поместите вариант этого в ваш файл lynx.cfg. Он может отправлять только URL-адрес, поэтому он ограничен тем, что не может обрабатывать заголовок или любую другую информацию с веб-страницы без анализа самого дампа Lynx. (Это должно быть настроено с
--enable-extern
, которая недоступна в MacPorts версии lynx, поэтому вам нужно установить из исходников).# in lynx.cfg # EXTERNAL:<url>:<command> %s:<norestriction>:<allow_for_activate>[:environment] # Ex 1: send the url to `open <url>` to open default browser EXTERNAL:http:open %s:TRUE # Ex 2: download with wget if ftp page EXTERNAL:ftp:wget %s &:TRUE # By default ',' and '.' map to running EXTERNAL on the page and link respectively # KEYMAP:,:EXTERN_PAGE # Run external program with current page # KEYMAP:.:EXTERN_LINK # Run external program with current link
Создайте скрипт и запустите его с принтером для сбора переменных среды печати.
# in lynx.cfg # PRINTER:<name>:<command>:<option>:<lines/page>[:<environment>] PRINTER:openurl:/Users/username/bin/openurl %s:TRUE
Затем скрипт openurl, открывающий URL в браузере по умолчанию (OSX), содержит:
#!/bin/sh # /Users/username/bin/openurl url=$LYNX_PRINT_URL title=$LYNX_PRINT_TITLE # other variables exist like the date etc... look them up :) # http://osr600doc.sco.com/en/INT_lynxDoc/keystrokes/environments.html # perform magic ... /usr/bin/open $url
Могут быть и другие способы, такие как использование прокси-серверов lynxified lynxexec, lynxprog и lynxcgi, но я не смог успешно передать переменные этими методами в моих собственных тестах. Если вы знаете способ получить информацию о названии и URL-адресе с помощью этих методов, мне было бы интересно услышать ее. Приведенный выше пример № 1 может по существу захватывать заголовок и другую информацию, вызывая lynx или какой-либо другой браузер, поэтому, по существу, можно добиться всего с помощью этого метода. Кроме того, он позволяет одной назначенной клавише выполнять функцию, которая на экране печати добавляет несколько сочетаний клавиш к миксу, что нежелательно. Я рекомендую № 1 выше.