/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
新しいタブではなく新しいウィンドウが開きます。 。どちらの場合も、すべてのWebサイトが新しいウィンドウで開きます。
xdg-open
次のようにシェルでコマンドを手動で入力すると、1つのウィンドウで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
しかし、それは再び単一のウィンドウではなく異なるウィンドウでウェブサイトを開きます。
ここでの問題は、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
パーツに追加しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加