shell - 映射 lynx 中的键以运行 shell 命令

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

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

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

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

任何想法将不胜感激。

最佳答案

实际上我最终找到了几种方法来处理这个问题。有些比其他的更理想。对默认的 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。

https://stackoverflow.com/questions/10005225/

相关文章:

php - 根据下拉列表中的更改更改 GridView 中的数据

c# - 在 BackgroundWorker 线程上创建 FlowDocument

qt - 来自 QProcess 的标准输出离实时很远

assembly - MIPS 从内存地址返回值

ruby-on-rails - Rails Association Validations : Th

php - 谷歌图像搜索 API

spring-mvc - 如何在 spring MVC 应用程序中的真实请求之外激活请求范围?

typo3 - 将 locallang 值插入 TypoScript [stdWrap]

c# - StackOverflow 与 TryValidateObject 如果对象是有效的

ruby-on-rails - Rails 路由 : override the action nam