将lynx中的关键点映射为运行shell命令

将lynx中的关键点映射为运行shell命令,shell,command-line,keyboard-shortcuts,lynx,Shell,Command Line,Keyboard Shortcuts,Lynx,是否可以向lynx(在配置文件~/.lynxrc中)添加一个自定义键映射,该键映射将信息(例如当前URL、html、标题等)发送到shell命令 一个示例用例: 我在OSX上,shell有一个命令open,它试图以默认方式打开任何给定给它的内容。因此,如果我在lynx中,希望将当前网页移动到默认浏览器,我希望从shell调用打开当前url 另一个: 通过向shell脚本(或其他内容)发送URL和标题来整理有组织的书签文件 使用默认的键映射打开默认的shell,但它既没有给我URL,也没有像我希望

是否可以向lynx(在配置文件~/.lynxrc中)添加一个自定义键映射,该键映射将信息(例如当前URL、html、标题等)发送到shell命令

一个示例用例: 我在OSX上,shell有一个命令
open
,它试图以默认方式打开任何给定给它的内容。因此,如果我在lynx中,希望将当前网页移动到默认浏览器,我希望从shell调用
打开当前url

另一个: 通过向shell脚本(或其他内容)发送URL和标题来整理有组织的书签文件

使用默认的键映射
打开默认的shell,但它既没有给我URL,也没有像我希望的那样运行单个命令并返回lynx


任何想法都将不胜感激。

事实上,我最终找到了两种方法来处理这个问题。有些人比其他人更理想。需要对默认的lynx.cfg文件进行一些挖掘,才能找到其中的一些原因

以下是我从lynx向shell命令发送信息的两种最成功的方法:

  • 在lynx.cfg文件中放置此文件的变体。它只能发送URL,因此在不解析lynx转储本身的情况下,它无法处理网页的标题或任何其他信息,从而受到限制。(这必须配置
    --enable extern
    ,这在MacPorts版本的lynx中不可用,因此您必须从源代码处安装)

  • 可能还有其他方法,比如使用lynxified代理lynxexec、lynxprog和lynxcgi,但我无法在自己的测试中使用这些方法成功地传递变量。如果你知道从这些方法中获取标题和url信息的方法,我很想听听。上面的例子#1可以通过调用lynx或其他浏览器从本质上获取标题和其他信息,因此基本上可以使用该方法完成所有工作。此外,它允许映射一个键来执行该功能,打印屏幕会在混合中添加几个按键,这是不需要的我推荐上面的1。

    # 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 
    
    #!/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