3

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

一个示例用例:我在 OSX 上,shell 有一个 command open,它试图以默认方式打开给它的任何东西。所以,如果我在 lynx 中并且想将当前网页移动到默认浏览器,我想open current-url从 shell 调用。

另一个:通过将 URL 和标题发送到 shell 脚本(或其他东西)来整理有组织的书签文件。

使用默认键盘映射会!打开默认 shell,但它没有给我 URL,也没有运行单个命令并像我想要的那样退出到 lynx。

任何想法将不胜感激。

4

1 回答 1

2

我实际上最终找到了几种方法来处理这个问题。有些人比其他人更理想。需要对默认的 lynx.cfg 文件进行一些挖掘才能弄清楚其中的一些内容。

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

  1. 在您的 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
    
  2. 创建一个脚本并使用打印机运行它以收集打印环境变量。

    # in lynx.cfg
    # PRINTER:<name>:<command>:<option>:<lines/page>[:<environment>]
    PRINTER:openurl:/Users/username/bin/openurl %s:TRUE 
    

    然后在默认浏览器 (OSX) 中打开 url 的脚本 openurl 包含:

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

于 2012-04-05T01:23:34.267 回答