私はLinuxに初めて接する人なので、これがとんでもない質問のように見えてもご了承ください。
端末のURLなしでFirefoxで新しいタブを開こうとしています。だから私のコマンドは次のようになります
$ 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にすぎません(実際のWebサイトワーカーは独自のプロセスで実行され、明確に定義されたインターフェース通信を介して基本プロセスと通信します)。 。 「ウィンドウ」と「PID」の間には1対1対応はありません。
したがって、残念ながら、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