如果尚未使用 .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頁面有一個與您的用例完全匹配的範例,我將引用它:

假設您要確保對「重要」檔案的存取是序列化的,即不應允許超過一個程式或 shell 腳本存取它。為了簡單起見,我們假設它是一個 shell 腳本。在這種情況下你可以這樣解決:

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

現在,如果所有存取「重要」的腳本都遵循此準則,那麼您可以放心,在lockfilerm命令之間最多會執行一個腳本。

預設情況下,所有其他腳本將等待檔案再次解鎖,預設每八秒進行一次測試(例如更改lockfile -5 important.lock為五秒)。如果你只是想檢查它是否被鎖定,你可以使用經典test命令:

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

相關內容