我对 Linux 完全陌生,所以如果这看起来像是一个荒谬的问题,请原谅我。
我正在尝试在 Firefox 上打开新选项卡,而无需来自终端的 url。所以我的命令是:
$ firefox -new-tab -search foo1
现在,当我尝试再次执行此操作,希望它打开一个新选项卡来搜索新项目时,请说:
$ firefox -new-tab -search foo2
它会打开一个新窗口。所以我有这样的想法,也许如果我可以获得以前浏览器的 PID,我可以在该 PID 上运行新选项卡命令,这样新选项卡实际上会在同一个窗口上打开。如果我运行以下命令,我可以相对轻松地获取 PID:
$ firefox -new-tab -search foo1 </dev/null >/dev/null 2>&1 &
但实际上我完全不知道如何使用 PID 在该 PID 上执行新命令。
任何和所有的意见都值得赞赏。谢谢!
答案1
无论如何,您正在与之交互的 Firefox 浏览器,无论它显示多少个窗口,都只是一个“主”PID(实际的网站工作人员在自己的进程中运行,并通过一些定义良好的接口与主进程进行通信)。 “窗口”和“PID”之间不存在一一对应的关系。
因此,遗憾的是,解决 Firefox 命令行错误(--search
总是打开一个新窗口)不会像您想象的那样工作。
我已经考虑过这个问题,但遗憾的是,如果不编写浏览器扩展或在另一个程序中检测浏览器,就无法告诉 Firefox 打开新选项卡并对默认搜索引擎执行查询。
所以,我能为你提供的最好的就是:
- 选择您选择的搜索引擎,并记下查询 URL。 (最简单的方法是搜索一个随机字符串,例如“qwert”,然后在心里用占位符替换它,例如
https://duckduckgo.com/?q=qwert
变成https://duckduckgo.com/?q=<placeholder>
- 将该 URL 与以下内容一起使用
--new-tab
:
searchword="strange women lying in ponds distributing swords"
encoded="$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "${searchword}")"
firefox --new-tab "https://duckduckgo.com/?q=${encoded}"
显然,给鸭子称重的方法不止一种。我更愿意使用firefox --new-tab "$(trurl --url 'https://duckduckgo.com/' --append "query=q=${searchword}")"
Perl 调用,但trurl
在许多 Linux 发行版上尚不可用。
无论如何,无论你怎么做,这都不是很好用。为了使其更好用,您需要将其放入名为“websearch”的文本文件中:
#!/bin/bash
searchwords="$@"
encoded="$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "${searchwords}")"
firefox --new-tab "https://duckduckgo.com/?q=${encoded}"
假设它位于bin/
您的主目录中的一个目录中;通过运行使其可执行chmod a+x ~/bin/websearch
。现在你可以使用它:
~/bin/websearch What is the air-speed velocity of an unladen swallow