.sh スクリプトでまだ開いていない場合はファイルを開きます

.sh スクリプトでまだ開いていない場合はファイルを開きます

ファイルを開くスクリプトを入手しました.htmlが、まだ開いていない場合にのみ開くように変更したいと考えています。
これを実現するために追加する必要がある行を知っている人はいますか?

#!/bin/bash
fileFragment=$"*project/html/index.html"
fullPath=$(find ../ -path $fileFragment)
xdg-open $fullPath &

編集
一般的な解決策が欲しいので、質問をとてもシンプルにしました。これはブラウザに関するものではなく、 を使用して開いたファイルに関するものですxdg-open。この例を提供することですでに指定しましたが、特定のブラウザにこれ以上指定したくありません。
しかし、簡単な一般的な解決策がない場合は、私の特定のケースに対する答えがないよりはましです。私の場合は、Firefox を使用しています。

答え1

以下の解決策は、以下のコマンドにのみ有効です。走り続けるプログラム/タブを閉じるまで、この状態が続きます。残念ながら、ほとんどのGUIプログラムではそうではありませんxdg-open。Firefoxの場合は、現在開いているURLのリストを取得するそしてgrepそれは一般的でも理想的な解決策でもありません。プログラムが実行中かどうかをテストするには、この質問


lockfileからご利用いただけますprocmailパッケージprocmailをインストールする。 としてそのmanページあなたのユースケースと完全に一致する例がありますので、引用します。

ファイル「重要」へのアクセスがシリアル化されていることを確認したい、つまり、1 つのプログラムまたはシェル スクリプトのみがアクセスできるようにしたいとします。簡単にするために、それがシェル スクリプトであると仮定します。この場合、次のように解決できます。

...
lockfile important.lock
...             
access_"important"_to_your_hearts_content
...
rm -f important.lock
...

ここで、「重要」にアクセスするすべてのスクリプトがこのガイドラインに従うと、 コマンドlockfilermコマンドの間で実行されるスクリプトは最大で 1 つになることが保証されます。

デフォルトでは、他のすべてのスクリプトは、ファイルが再びロック解除されるまで待機し、デフォルトでは 8 秒ごとにテストします (例: lockfile -5 important.lock5 秒ごとに変更)。ロックされているかどうかだけを確認したい場合は、従来のコマンドを使用できますtest

if [ -e important.lock ]; then
  # stuff to do if locked
else
  # stuff to do if not locked
fi

関連情報