/root/file
持つ
https://stackoverflow.com
https://stackexchange.com
https://reddit.com
1つのウィンドウでこれらすべてのウェブサイトを順番に開く必要がありますfirefox
。これは私のコードです
#!/bin/bash
while read line
do
if pgrep firefox;
then
firefox --new-tab "$line" ;
else
firefox "$line" ;
fi
done < /root/file
私nohup
も試してみましたが、成功しませんでした。
問題は、;
これを使用すると、シェルプロセスにバインドされ、終了する前に次のコマンドを実行しないことです。または、firefox
使用するとシェルから切り離され、新しいタブの代わりに新しいウィンドウが開きます。どちらの場合も、各ウェブサイトが新しいウィンドウで開きます。nohup
&
firefox
部分的な解決策
xdg-open
シェルで手動でコマンドを入力した場合は、ウィンドウでWebサイトを開きます。
$ xdg-open https://stackoverflow.com
$ xdg-open https://stackexchange.com
$ xdg-open https://reddit.com
しかし、スクリプトでは機能しません。次のスクリプトがありますxdg-open
#!/bin/bash
while read line
do
xdg-open "$line"
done < /root/file
ただし、今回も単一のウィンドウではなく別のウィンドウでWebサイトが開きます。
答え1
問題は、Firefoxの起動に時間がかかることです。バックグラウンドで実行すると、次回実行したときにfirefox --new-tab
最初のインスタンスがまだ完全に起動しておらず、別のタブを開く準備ができていません。最初のFirefoxインスタンスを起動してからしばらく待つ必要があります。
#!/bin/bash
while read line
do
if pgrep -u $USER firefox > /dev/null
then
firefox --new-tab "$line" &
else
firefox "$line" &
sleep 3 # You may want to tune this value
fi < /dev/null
done < /root/file
この構成では、ループ内のすべてのプログラムが内容を食べることができ、stdin
ループが早期に終了する可能性があります。そのため、予防措置として< /dev/null
そのセクションを追加しました。if
答え2
必要なものは次のとおりです。
firefox https://stackoverflow.com https://stackexchange.com https://reddit.com
Mozillaによると文書
-URL URL
ブラウザのオプションに応じて、新しいタブまたはウィンドウでURLを開きます。 -url は省略可能です。スペースで区切って複数のURLを一覧表示できます。 Firefox と SeaMonkey 専用です。
したがって、スクリプトは次のように書くことができます。
#!/bin/bash
firefox $(cat /root/file | tr '\n' ' ') &